суббота, 3 июля 2010 г.

Как соединить компьютер под управлением Windows 7 с Linux-машиной по Wi-Fi.


Будучи в городе-герое Москве, Суровый прикупил себе "малыша" - Lenovo X201, на котором установлена новая операционная система от Microsoft. Напомню, что у Сурового так же есть Lenovo T61, на котором установлен Gentoo Linux. Соответственно, возникла задача объединить эти компьютеры по сети, чтобы передавать файлы с одного на другой, а так же использовать на компьютере под управлением Windows 7 интернет-соединение, созданное на Linux-машине.



Прежде всего необходимо поднять Wi-Fi на Linux, позволяющий двум компьютерам работать в режиме "точка-точка". Другими словами, необходимо создать так называемую ad-hoc-точку доступа. Для того, чтобы это сделать, воспользуемся утилитой iwconfig, входящей в пакет wireless-tools. Сначала установим сам пакет:

# emerge wireless-tools

Теперь необходимо настроить подключение. Будем считать, что Wi-Fi интерфейс называется wlan0. Остановим интерфейс, а затем назначим ему IP-адрес и маску подсети:


# ifconfig wlan0 down
# ifconfig wlan0 192.168.0.1 netmask 255.255.255.0 up


Интерфейс поднят и на нем можно настроить ad-hoc точку доступа:


# iwconfig wlan0 mode ad-hoc channel 1 essid pavel key 1234-1234-12


Рассмотрим параметры данной команды подробнее:
- wlan0 - интерфейс, на котором будет подниматься точка доступа.
- mode ad-hoc - режим, в котором создаваемая точка будет работать. В данном случае указываем, что создаем соединение между компьютерами в режиме "точка-точка".
- channel 1 - используемый канал Wi-Fi. По-умолчанию будем использовать первый канал.
- essid pavel - идентификатор точки доступа. Именно этот идентификатор будет отображаться в утилитах просмотра сети и поиска Wi-Fi точек.
- key 1234-1234-12 - 10-значный HEX-ключ WEP-шифрования. Если задан 10-значный ключ, то будет использоваться 64-разрядное WEP-шифрование, если 26-значный - то 128-разрядное, соответственно. Т.е. в данном примере точка является зашифрованной.

Теперь настроим подключение к данной точке в Windows 7. Для этого необходимо перейти в Панель управления -> Центр управления сетями и общим доступом:



Нажмем ссылку Подключение к сети. Отобразится окно со списком доступных точек подключения Wi-Fi:



Из списка нужно выбрать созданную в Linux точку подключения. Напомню, что мы создавали точку подключения с идентификатором pavel. Выберем ее из списка, после чего под идентификатором точки доступа появится кнопка "Подключение":



После нажатия на данную кнопку появится окно, в котором необходимо ввести HEX-ключ сети и нажать OK:



После данных манипуляций компьютер подключается к сети.



Непосредственно после подключения работать в сети будет нельзя, т.к. наша Linux-машина использует статическую адресацию и на ней не поднят DHCP-сервер. Т.е., проще говоря, после подключения неизвестен IP-адрес и маска подсети:



Данные параметры нужно прописать вручную. Если нажать на ссылку Беспроводное сетевое подключение (pavel), то появится диалоговое окно с информацией о подключении и кнопками управления, в том числе и кнопкой "Свойства", позволяющей изменить те или иные свойства подключения:



Из доступных свойств подключения необходимо выбрать Протокол Интернета версии 4 (TCP/IPv4). Появится уже давно знакомое по Windows 2000/XP/Vista окно редактирования свойств TCP/IP-протокола. Нужно поставить галочку Использовать следующий IP-адрес: и прописать IP-адрес из диапазона 192.168.0.x и маску подсети 255.255.255.0:



После указания IP-адреса и маски подсети установится полноценное соединение "точка-точка":



Теперь можно скачивать файлы с Linux-машины, например с помощью стандартного проводника Windows (если, конечно же на Linux-машине установлена и настроена Samba):



Однако, что делать, если хочется не только раздавать файлы по сети "точка-точка", но и позволить использовать на компьютере под управлением Windows 7 соединение с Интернет, имеющееся на Linux-машине?

Прежде всего необходимо включить на Linux-машине Network Address Translation (NAT) - технологию, позволяющую нескольким машинам использовать один интернет-адрес. Делается это с помощью следующих команд:

# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -t nat -A POSTROUTING --out-interface ppp0 -j MASQUERADE

Естественно, что при этом у вас должен быть установлен и настроен брэндмауэр iptables. В данном случае будет раздаваться подключение с интернетом, установленное через SkyLink-модем - ppp0. В вашем конкретном случае необходимо вместо ppp0 указать нужное устройство. Команды взяты из статьи Linux в роли Wi-Fi точки доступа.

Для того, чтобы воспользоваться раздаваемым сетевым подключением в Windows 7, необходимо изменить параметры протокола TCP/IPv4 установленного соединения с точкой доступа pavel. Напомню, что параметры доступны по ссылке Беспроводное сетевое соединение (pavel) -> Свойства -> Протокол Интернета версии 4 (TCP/IPv4) -> Свойства. Нужно прописать основной шлюз - Linux-машину, с которой раздается соединение с Интернет, - 192.168.0.1 и DNS-сервера. Узнать адреса ваших DNS-серверов можно, если выполнить на Linux-машине команду

# cat /etc/resolv.conf




После данных изменений Интернет будет доступен на машине под управлением Windows 7:



Поставленная в начале статьи задача решена. Видно, что процесс настройки Wi-Fi подключения на Linux довольно несложен. Так же можно порадоваться, что существуют определенные сетевые стандарты, позволяющие взаимодействовать различным операционным системам и посетовать, что Samsung Spica не умеет подключаться к ad-hoc точкам доступа, а то и на него можно было бы раздавать Интернет.

Понравилось сообщение - подпишитесь на блог или читайте меня в twitter

3 комментария:

xp7ru комментирует...

полезная статья спасибо! и к тому же своевременная.

Timur Ryazantcev комментирует...

а как сделать такоеже но наоборот?)
хост компьютер с win7

Pavel Samolisov комментирует...

Здесь я затрудняюсь ответить - под рукой нет компьютера с Linux на борту.

Отправить комментарий

Любой Ваш комментарий важен для меня, однако, помните, что действует предмодерация. Давайте уважать друг друга!