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

Discussion in 'Мировые новости. Обсуждения.' started by d3l3t3, 12 May 2012.

  1. d3l3t3

    d3l3t3 Banned

    Joined:
    3 Dec 2010
    Messages:
    1,771
    Likes Received:
    98
    Reputations:
    10
    Настройка беспроводного соединения в Debian GNU/Linux



    Действия по настройке Wi-Fi проводились в стабильном дистрибутиве Debian GNU/Linux 6.0.4

    Ранее длительное время я работал с модулем NDISwrapper, который удавалось
    запускать с поддержкой WEP шифрования. После того как WEP шифрование было
    принято считать не безопасным, под рукой оказалось решение под названием
    wpasupplicant позволяющее работать с WPA и WPA2 методами шифрования в
    беспроводных сетях, которое было взято на вооружение в совокупности с
    драйверами b43 - в них на этот момент уже поддерживались Broadcom устройства.
    Все прекрасно работало пока не было принято решение вернуться к стабильному
    дистрибутиву после многолетних экспериментов работы в среде sid, что повлекло
    за собой переустановку и необходимость перенастройки системы и написания данной инструкции.

    Для начала необходимо убедиться в присутствии беспроводного адаптера - команда lspci

    Code:
       lspci
    
    В моем случае обнаружились ethernet и wifi сетевые карты:
    Code:
       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
    Code:
       #строка с источником установки пакетов системы
       deb http://ftp.us.debian.org/debian squeeze main contrib non-free
    
    2. После добавления новых источников установки необходимо обновить список
    доступных пакетов и установить утилиту wireless-tools
    Code:
        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;
    Code:
       aptitude install firmware-b43-lpphy-installer
       aptitude install firmware-b43-lpphy-installer
    
    4. Проверим что модуль загрузился:
    Code:
       # 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:
    Code:
       # 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 сетевой карты:
    Code:
       #my Wi-fi connection
       auto wlan0
       iface wlan0 inet dhcp
    
    7. Стартуем новый сетевой интерфейс - ifup wlan0
    Code:
       # 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
    Code:
       #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
    Code:
       # 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:eek:n, тип шифрования - IE: IEEE
    802.11i/WPA2 Version 1.

    10. Устанавливаем поддержку WPA/WPA2 шифрования поскольку наша точка доступа использует WPA2
    Code:
       apt-get install wpasupplicant
    
    11. Конфигурируем wpasupplicant, Редактируем файл /etc/network/wpa-psk-tkip.conf
    Code:
       # 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 новые строки:
    Code:
       # 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
    Code:
       # /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. Проверим что все работает

    Посмотрим список поднятых интерфейсов:
    Code:
       #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
    интерфейс, теперь проверим работает ли интернет
    Code:
       # 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 пингуется отлично!

    Посмотрим таблицу маршрутизации системы:
    Code:
       # 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

    11.05.2012
    http://www.opennet.ru/tips/2689_wifi_debian_linux_wep_wpa_wpa2_wpasupplicant.shtml