Действия по настройке 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
URL:
Обсуждается: http://www.opennet.dev/tips/info/2689.shtml