Настройка беспроводного соединения в Debian GNU/Linux
оригинал статьи: http://www.opennet.ru/tips/2689_wifi_debian_linux_wep_wpa_wpa2_wpasupplicant.shtml
Действия по настройке Wi-Fi проводились в стабильном дистрибутиве Debian GNU/Linux 6.0.4
Ранее длительное время я работал с модулем NDISwrapper, который удавалось запускать с поддержкой WEP шифрования. После того как WEP шифрование было принято считать небезопасным, под рукой оказалось решение под названием wpasupplicant позволяющее работать с WPA и WPA2 методами шифрования в беспроводных сетях, которое было взято на вооружение в совокупности с драйверами b43 - в них на этот момент уже поддерживались Broadcom устройства. Все прекрасно работало пока не было принято решение вернуться к стабильному дистрибутиву после многолетних экспериментов работы в среде sid, что повлекло за собой переустановку и необходимость перенастройки системы и написания данной инструкции.
Для начала необходимо убедиться в присутствии беспроводного адаптера - команда lspci
lspci
В моем случае обнаружились ethernet и wifi сетевые карты:
02:00.0 Ethernet controller: Broadcom Corporation NetLink BCM5787M Gigabit Ethernet PCI Express (rev 02) 04:00.0 Network controller: Broadcom Corporation BCM4312 802.11b/g LP-PHY (rev 01)
Немного погуглив удалось найти информацию на английском языке http://wiki.debian.org/bcm43xx - там есть список с описанием модулей, в каких ядрах и версиях системы они работают а где нет. А также инструкция по установке.
Оказалось на сегодняшний день есть несколько разновидностей драйверов для Linux: b43, b43legacy, brcm80211, rndis_wlan, wl, наряду с которыми все так же остается возможность запускать WINDOWS-драйвер сетевых карт при помощи NDISwrapper модуля.
Далее просто приведу шаги выполненные по вышеприведенной инструкции:
1. Необходимо добавить contrib non-free части в строку с источником установки, отредактировав файл /etc/apt/sources.list
#строка с источником установки пакетов системы deb http://ftp.us.debian.org/debian squeeze main contrib non-free
2. После добавления новых источников установки необходимо обновить список доступных пакетов и установить утилиту wireless-tools
aptitude update && aptitude install wireless-tools
3. Далее следует установка самих драйверов, в зависимости от типа вашей сетевой карты необходимо выбрать правильный драйвер, в моем случае это устройство BCM4312 802.11b/g LP-PHY - как показала команда lspci, поэтому я выполняю команду устанавливающую firmware-b43-lpphy-installer. Для владельцев других сетевых карт соответственно:
802.11b/g BCM4306 revision 3, BCM4311, BCM4318 - устанавливаем firmware-b43-installer; 802.11b BCM4301, 802.11b/g BCM4306 revision 2 chipset - устанавливаем firmware-b43legacy-installer;
aptitude install firmware-b43-lpphy-installer aptitude install firmware-b43-lpphy-installer
4. Проверим что модуль загрузился:
# lsmod | grep b43
b43 132415 0 rng_core 2178 1 b43 mac80211 122874 1 b43 cfg80211 86965 2 b43,mac80211 ssb 33578 1 b43 led_class 1757 3 b43,acer_wmi,sdhci mmc_core 38277 3 b43,sdhci,ssb pcmcia 16194 2 b43,ssb pcmcia_core 20414 5 b43,yenta_socket,rsrc_nonstatic,ssb,pcmcia
Модуль b43 - загружен успешно, если у вас он окажется не загружен, можно попробовать загрузить его командой modprobe b43, в случае если он загружен но не отрабатывает корректно - можно попробовать сначала его выгрузить командой modprobe -r b43 после чего загрузить заново.
5. Драйверы установлены и загружены теперь можно проверить наличие wifi карты в списке сетевых устройств утилитой iwconfig:
# iwconfig lo no wireless extensions. eth0 no wireless extensions. irda0 no wireless extensions. wlan0 IEEE 802.11bg ESSID:off/any Mode:Managed Frequency:2.457 GHz Access Point: Not Associated Tx-Power=27 dBm Retry long limit:7 RTS thr:off Fragment thr:off Encryption key:off Power Management:off
pan0 no wireless extensions.
Видно что в списке сетевых адаптеров присутствует wlan0 - устройство распознанное как IEEE 802.11bg, это и есть ни что иное как наш wifi адаптер.
6. Далее необходимо сконфигурировать сетевые настройки в системе для нашего wifi адаптера. Для этого редактируем файл настройки сетевых подключений /etc/network/interfaces добавляя опции новой wifi сетевой карты:
#my Wi-fi connection auto wlan0 iface wlan0 inet dhcp
7. Стартуем новый сетевой интерфейс - ifup wlan0
# ifup wlan0
Internet Systems Consortium DHCP Client 4.1.1-P1 Listening on LPF/wlan0/00:00:00:00:00:00 Sending on LPF/wlan0/00:00:00:00:00:00 Sending on Socket/fallback DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 7 DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 10 DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 7 DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 12 DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 8 DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 15 DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 2 No DHCPOFFERS received. No working leases in persistent database - sleeping.
После выполнения данной команды система попытается получить адрес по dhcp, в результате чего мы увидим что адрес ей получить не удалось так как не указана точка доступа, но при этом wlan0 интерфейс появится в списке поднятых интерфейсов отображаемых при просмотре ifconfig Затем уже можно будет выполнять сканирование пространства на наличие точек доступа. Попытки просканировать пространство с неподнятым интерфейсом выдадут сообщение:"wlan0 Interface doesn't support scanning : Network is down"
8. Проверить поднялся ли wlan0 интерфейс можно командой ifconfig
#ifconfig
wlan0 Link encap:Ethernet HWaddr 00:00:00:00:00:00 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:408 errors:0 dropped:0 overruns:0 frame:0 TX packets:62 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:26662 (26.0 KiB) TX bytes:6305 (6.1 KiB)
9. Если интерфейс поднялся мы можем просканировать пространство на наличие WIFI точек доступа командой - iwlist scanning
# iwlist scanning
lo Interface doesn't support scanning. eth0 Interface doesn't support scanning. irda0 Interface doesn't support scanning. pan0 Interface doesn't support scanning. wlan0 Scan completed : Cell 01 - Address: 00:00:00:00:00:00 Channel:13 Frequency:2.457 GHz (Channel 13) Quality=70/70 Signal level=-3 dBm Encryption key:on ESSID:"myhome" Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 6 Mb/s; 9 Mb/s 11 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s 48 Mb/s; 54 Mb/s Mode:Master Extra:tsf=0000003f190b259c Extra: Last beacon: 104ms ago IE: Unknown: 00036E6574 IE: Unknown: 010C82848B8C12969824B048606C IE: Unknown: 03010A IE: Unknown: 0706555320010B1E IE: Unknown: 2A0100 IE: Unknown: 2F0100 IE: IEEE 802.11i/WPA2 Version 1 Group Cipher : TKIP Pairwise Ciphers (1) : TKIP Authentication Suites (1) : PSK IE: Unknown: DD090010180200F0000000
Результаты сканирования показали наличие точки доступа под названием - ESSID:"myhome", работающей на канале - Channel:13, в режиме - Mode:Master, с включенным шифрованием - Encryption key:on, тип шифрования - IE: IEEE 802.11i/WPA2 Version 1.
10. Устанавливаем поддержку WPA/WPA2 шифрования поскольку наша точка доступа использует WPA2
apt-get install wpasupplicant
11. Конфигурируем wpasupplicant, Редактируем файл /etc/network/wpa-psk-tkip.conf
# WPA-PSK/TKIP
ctrl_interface=/var/run/wpa_supplicant
network={ ssid="myhome" proto=WPA2 RSN key_mgmt=WPA-PSK pairwise=CCMP TKIP group=CCMP TKIP psk="пароль к точке доступа" }
В моем случае конфиг выглядит именно таким образом, возможно у вас он будет отличаться если например будет отличаться метод шифрования, более подробно с опциями конфиг файла для wpasuplicant можно ознакомиться при помощи команды - man wpa_supplicant, гугла и админской интуиции.
12. Донастраиваем сетевое соединение, дописываем в конфиге /etc/network/interfaces новые строки:
# The primary network interface #allow-hotplug eth0 #auto eth0 #iface eth0 inet dhcp #my Wi-fi connection auto wlan0 iface wlan0 inet dhcp wireless-channel 10 wireless-mode Master #WPA-TKIP wpa-conf /etc/network/wpa-psk-tkip.conf
Как видно, я специально закомментировал знаком # eth0 интерфейс через который был подключен интернет, так как после рестарта сетевых соединений хочу чтобы интернет соединялся только через wlan0 интерфейс. Затем можно отключить eth0 интерфес командой "ifconfig eth0 down".
13. Перезагружаем сетевые соединения командой /etc/init.d/networking restart
# /etc/init.d/networking restart
Running /etc/init.d/networking restart is deprecated because it may not enable again some interfaces ... (warning). Reconfiguring network interfaces...Ignoring unknown interface eth0=eth0. Internet Systems Consortium DHCP Client 4.1.1-P1
Listening on LPF/wlan0/00:00:00:00:00:00 Sending on LPF/wlan0/00:00:00:00:00:00 Sending on Socket/fallback DHCPRELEASE on wlan0 to 192.168.13.1 port 67 Error for wireless request "Set Mode" (8B06) : SET failed on device wlan0 ; Invalid argument.
Internet Systems Consortium DHCP Client 4.1.1-P1 Listening on LPF/wlan0/00:00:00:00:00:00 Sending on LPF/wlan0/00:00:00:00:00:00 Sending on Socket/fallback DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 4 DHCPOFFER from 192.168.13.1 DHCPREQUEST on wlan0 to 255.255.255.255 port 67 DHCPACK from 192.168.13.1 bound to 192.168.13.13 -- renewal in 37509 seconds. done.
14. Проверим что все работает
Посмотрим список поднятых интерфейсов:
#ifconfig lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:76 errors:0 dropped:0 overruns:0 frame:0 TX packets:76 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:5802 (5.6 KiB) TX bytes:5802 (5.6 KiB)
wlan0 Link encap:Ethernet HWaddr 00:00:00:00:00:00 inet addr:192.168.13.13 Bcast:192.168.13.255 Mask:255.255.255.0 inet6 addr: fe80::21f:e1ff:fe25:4fd4/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:5 errors:0 dropped:0 overruns:0 frame:0 TX packets:11 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1036 (1.0 KiB) TX bytes:1640 (1.6 KiB)
Видим поднятые внутренний системный интерфейс Loopback, и наш wifi wlan0 интерфейс, теперь проверим работает ли интернет
# ping 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_req=1 ttl=54 time=69.8 ms 64 bytes from 8.8.8.8: icmp_req=2 ttl=54 time=69.6 ms 64 bytes from 8.8.8.8: icmp_req=3 ttl=54 time=69.5 ms 64 bytes from 8.8.8.8: icmp_req=4 ttl=54 time=69.5 ms 64 bytes from 8.8.8.8: icmp_req=5 ttl=54 time=69.6 ms
Google пингуется отлично!
Посмотрим таблицу маршрутизации системы:
# ip r 192.168.13.0/24 dev wlan0 proto kernel scope link src 192.168.13.13 default via 192.168.13.1 dev wlan0
Понимаем что все работает.
На этом я завершаю заметку о том как настраивать Wi-Fi в Linux. Надеюсь что данная информация будет Вам полезна, а поднять шифрованное wifi соединение при помощи родных драйверов Linux теперь не для кого не составит большого труда.
Присылайте Ваши вопросы, дополнения, исправления к данному руководству на мой e-mail: alex.golovin@mail.ru, дополняйте комментариями к статье-совету ниже на сайте. Автор: Александр Головин.
Полезные ссылки по теме:
http://wiki.debian.org/Broadcom http://wiki.debian.org/bcm43xx http://wireless.kernel.org/en/users/Drivers/b43#Known_issues