Настройка беспроводного соединения в Debian GNU/Linux

Материал из support.qbpro.ru

оригинал статьи: 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