dimabagow

Налаштування Wi-Fi в Debian

Історична інструкція для Debian Lenny та обладнання того періоду. Назви пакетів, репозиторії й налаштування WPA/TKIP є архівними прикладами, а не актуальним рецептом встановлення. Адреси DNS 192.0.2.53 та 192.0.2.54 є прикладами для документації: замініть їх реальними DNS-серверами. Налаштовуйте один інтерфейс одним мережевим менеджером за документацією встановленого випуску Debian.

Посібник описує Debian Lenny та обладнання того часу. Приклади репозиторіїв, пакетів і WPA/TKIP стосуються тієї історичної конфігурації.

Не вперше знаходжу посібник, який допомагає налаштувати Wi-Fi у Debian, але щоразу лише після довгих пошуків. Тому вирішив зберегти його у своєму блозі: тут я його завжди знайду. Автор посібника: Дм. Юревич, вебредактор сайту КБ МДА.
1. Вступ
Бездротові локальні мережі (WLAN, Wireless Local Area Network) набули значного поширення. Цей практичний посібник розглядає простий випадок: налаштування комп'ютера з Debian GNU/Linux для підключення до наявної мережі Wi-Fi. Описано особливості двох карт: Intel 2200 BG у ноутбуці Dell та PCI-карти D-Link DWA-510 із чипом RaLink RT2561/RT61 у настільному комп'ютері.
У прикладі нижче адреса мережі 192.168.7.0. Точка доступу Wi-Fi (AP, access point) одночасно є шлюзом до інтернету й має адресу 192.168.7.1. Маска підмережі 255.255.255.0. Точка доступу налаштована на канал 3 та шифрування WPA методом TKIP із попередньо узгодженим ключем (PSK, pre-shared key).

2. Модуль ядра та встановлення прошивки для карти Wi-Fi

Багато дистрибутивів визначають бездротову карту та налаштовують її програмний модуль для автоматичного завантаження під час кожного запуску ще при встановленні операційної системи. Однак наявність модуля не означає, що карта відразу запрацює. Багатьом картам також потрібне спеціальне вбудоване програмне забезпечення, або прошивка, яке слід розмістити в каталозі, доступному модулю.
    Отже, налаштування карти має два етапи:

  1. перевірити наявність у системі модуля ядра для карти;
  2. встановити прошивку для карти.
2.1. Модуль ядра
Щоб визначити виробника й модель, виконайте команду, яка показує PCI-пристрій бездротової мережі:
$ lspci | grep -i wireless
Для Intel 2200 BG результат такий:
02:03.0 Network controller: Intel Corporation PRO/Wireless 2200BG Network Connection
Якщо результату немає, виконайте
lspci | grep -i network
і знайдіть бездротову карту серед мережевих контролерів.
Карта D-Link дає подібний результат, але вказує виробника чипа RaLink RT2561/RT61, а не самої карти. Це важливо, оскільки модуль і прошивку добирають для чипа. Дві карти одного виробника й моделі можуть мати різні чипи, а отже відрізнятися підтримкою в GNU/Linux і складністю налаштування.
Далі перевірте, чи модуль уже завантажено під час установлення. Його назва зазвичай містить номер моделі, іноді скорочення виробника. Виконайте від root:
# lsmod | grep -i {модель_чипа}
Якщо перебір можливих назв і перегляд усіх завантажених модулів командою
# lsmod | less
нічого не дає, установник не розпізнав карту. Спробуйте дистрибутив із новішим ядром, яке її підтримує, або пошукайте інформацію про чип у GNU/Linux за фразою на кшталт «{модель_чипа} linux». Деякі чипи не підтримуються.
Debian Lenny розпізнав обидві розглянуті карти та налаштував автоматичне завантаження їхніх модулів ядра. Перевіримо це.
Для Intel 2200 BG пошук модуля дає:
# lsmod | grep -i 2200[Модуль] [Розмір] [Кількість використань] [Ким використовується]ipw2200               130760  0ieee80211              30632  1 ipw2200firmware_class          9088  2 ipw2200,pcmcia
Для RaLink RT2561/RT61 я спершу шукав rt2561 без результату. Пошук «rt61» знайшов rt61pci та пов'язані модулі rt2x00pci, rt2x00lib і eeprom_93cx6:
 # lsmod | grep -i rt61[Модуль] [Розмір] [Кількість використань] [Ким використовується]rt61pci   2212 0rt2x00pci  10208 1 rt61pcirt2x00lib  21280  2 rt61pci,rt2x00pcieeprom_93cx6  2304 1 rt61pci
2.2. Установлення прошивки
Навіть за наявності модуля ядра карта може не працювати без прошивки: двійкової програми, яка завантажується для роботи чипа.
Наприклад, система бачить D-Link DWA-510 із чипом RaLink RT2561/RT61 rev B 802.11g і навіть створює два інтерфейси, що незвично: wlan0 та wmaster0, але обидва неактивні:
# ifconfig -aeth0      Link encap:Ethernet  HWaddr 00:0c:6e:4e:24:04 ...lo        Link encap:Local Loopback ...wlan0     Link encap:Ethernet  HWaddr 00:1c:f0:d4:34:61          BROADCAST MULTICAST  MTU:1500  Metric:1          RX packets:0 errors:0 dropped:0 overruns:0 frame:0          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:1000          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)wmaster0  Link encap:UNSPEC  HWaddr 00-1C-F0-D4-34-61-65-74-00-00-00-00-00-00-00-00          BROADCAST MULTICAST  MTU:1500  Metric:1          RX packets:0 errors:0 dropped:0 overruns:0 frame:0          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:1000          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
Лише wlan0 є бездротовим, що видно з команди перегляду бездротових інтерфейсів:
# iwconfiglo        no wireless extensions.eth0      no wireless extensions.wmaster0  no wireless extensions.wlan0     IEEE 802.11g  ESSID:""          Mode:Managed  Channel:0  Access Point: Not-Associated          Tx-Power=0 dBm          Retry min limit:7   RTS thr:off   Fragment thr=2352 B          Encryption key:off          Link Quality:0  Signal level:0  Noise level:0          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0          Tx excessive retries:0  Invalid misc:0   Missed beacon:0
Спроби використати wlan0 після додавання до /etc/network/interfaces (див. нижче) давали повідомлення, що його не налаштовано. Вивід dmesg пояснив причину: відсутня прошивка для цієї карти.
Де взяти прошивку? Є кілька варіантів.
1. Пошукайте пакет дистрибутива, який містить прошивку.У використаній тут версії Debian пакет цієї невільної прошивки розміщено не в main і не в contrib, а в non-free. Тому змініть запис репозиторію у файлі /etc/apt/sources.list, щоб увімкнути невільну частину. Замість
deb http://ftp.ru.debian.org/debian/ lenny maindeb-src http://ftp.ru.debian.org/debian/ lenny main
впишіть
deb http://ftp.ru.debian.org/debian/ lenny main contrib non-freedeb-src http://ftp.ru.debian.org/debian/ lenny main contrib non-free
та оновіть список пакетів:
# aptitude update
Шукайте назву чипа чи модуля в назвах та описах пакетів:
# apt-cache search {пошукова_фраза}
Для Intel 2200 пошук нічого не дав, а для RaLink RT2561/RT61 знайшов пакет за фразою «rt61»:
# apt-cache search rt61firmware-ralink - Binary firmware for Ralink RT2561, RT2571, RT2661 and RT2671 wireless cards
Перевіримо, чи це потрібний пакет:
# aptitude show firmware-ralinkПакет: firmware-ralinkНовий: такСтан: не встановленоВерсія: 0.12Пріоритет: необов'язковийРозділ: non-free/adminСупровід: Debian Kernel Team <[email protected]>Розмір після розпакування: 69,6kПропонує: initramfs-tools, linux-imageОпис: двійкові прошивки для Ralink RT2561, RT2571, RT2661 та RT2671 wireless cards. This package contains the binary firmware for PCI, CardBus and USB wireless network cards  with the Ralink RT2501 [Turbo],  RT2600, RT5201 [Turbo], RT5600 or RT5201USB chipset,  supported by the rt61, rt61pci, or rt73, rt73usb drivers. Contents: * Ralink RT2561 (RT2501/RT5201 chipset) firmware, version 1.2 * Ralink RT2561S (RT2501 Turbo/RT5201 Turbo chipset) firmware, version 1.2 * Ralink RT2661 (RT2600/RT5600 chipset) firmware, version 1.2 * Ralink RT2571W/RT2671 (RT2501USB/RT5201USB chipset) firmware, version 1.8Сайт: http://www.ralinktech.com/ralink/Home/Support/Linux.html
Опис підтверджує, що пакет містить потрібну двійкову прошивку, тож установлюємо його:
# aptitude install firmware-ralink
Після встановлення потрібна прошивка з'явилася в /lib/firmware. Карта стала готовою до роботи.
2. Знайдіть і завантажте прошивку для чипа в інтернеті. Шукайте «{модель_чипа} linux firmware» або «{модель_чипа} linux driver» та уважно переглядайте результати.
Саме так я знайшов прошивку Intel 2200 BG. Пошук у Google за фразою «Intel Wireless 2200BG linux driver» відразу привів на сайт прошивки для GNU/Linux: http://ipw2200.sourceforge.net/ (див. розділ «Firmware»). Intel надає драйвери GNU/Linux для багатьох своїх пристроїв. Це варто враховувати, купуючи обладнання для GNU/Linux.
Завантажте використану тут версію прошивки 3.0 за адресою http://ipw2200.sourceforge.net/firmware.php?fid=7. Ви отримаєте архів ipw2200-fw-3.0.tgz. Від root розпакуйте його вміст до /lib/firmware (деякі дистрибутиви використовують /usr/share/firmware або /usr/lib/hotplug/firmware/). Після цього каталог міститиме:
# ls -l /lib/firmware-rw-r--r-- 1 root root 191142 Mar  7  2006 ipw2200-bss.fw-rw-r--r-- 1 root root 185660 Mar  7  2006 ipw2200-ibss.fw-rw-r--r-- 1 root root 187836 Mar  7  2006 ipw2200-sniffer.fw-rw-r--r-- 1 root root  12007 Mar  7  2006 LICENSE.ipw2200-fw
3. Спробуйте двійковий файл із драйвера карти для MS Windows, що постачається з пристроєм. Для цього використовується ndiswrapper. Приклад дивіться тут: http://citkit.ru/articles/423/ (розділ «Включаем»).

3. Установлення потрібних програм

Установіть пакети для бездротових мереж, щонайменше wireless-tools та, для шифрування WPA, wpasupplicant. Можуть стати в пригоді й графічні утиліти, хоча мені вони не знадобилися: kwifimanager, kwirelessmonitor та, для WPA, wpagui. Установіть їх від root:
# aptitude install wireless-tools wpasupplicant kwifimanager kwirelessmonitor wpagui
Також, за порадою М. Конника, установіть пакети керування живленням ACPI:
# aptitude install acpi-support acpid laptop-mode-tools
Це запустить демон acpid та додасть потрібні скрипти до /etc/acpi.

4. Можливі проблеми з перемикачем Wi-Fi у ноутбуці

Після перезавантаження перевірка карти Intel 2200 (див. нижче) показує, що вона досі не працює.
Перегляньте повідомлення завантаження:
# dmesg | less
Прокрутіть униз до приблизно таких рядків:
[    8.443703] ieee80211_crypt: registered algorithm 'NULL'[    8.468166] ieee80211: 802.11 data/management/control stack, git-1.1.13[    8.468170] ieee80211: Copyright (C) 2004-2005 Intel Corporation[    8.527267] ipw2200: Intel(R) PRO/Wireless 2200/2915 Network Driver, 1.2.2kmprq[    8.527271] ipw2200: Copyright(c) 2003-2006 Intel Corporation[    8.527350] ACPI: PCI Interrupt 0000:02:03.0[A] -> GSI 17 (level, low) -> IRQ 17[    8.547046] ipw2200: Detected Intel PRO/Wireless 2200BG Network Connection[    8.934885] ipw2200: Radio Frequency Kill Switch is On:[    8.971250] Kill switch must be turned off for wireless networking to work....[    9.272808] ipw2200: Detected geography ZZD (13 802.11bg channels, 0 802.11a channels)
Модуль завантажується, на що вказує ipw2200: Intel(R) PRO/Wireless 2200/2915 Network Driver, 1.2.2kmprq, але не працює з простої причини. У BIOS, у розділі «Wireless» («Бездротова мережа»), пристрій вимкнено під час запуску! Про це повідомляє «Radio Frequency Kill Switch is On». Зловісний «kill switch» блокує радіопередавач; наступний рядок пояснює: «Kill switch must be turned off for wireless networking to work», тобто для роботи мережі блокування треба вимкнути.
Перезавантажте комп'ютер, увійдіть до BIOS через Delete або іншу потрібну клавішу до запуску системи та ввімкніть карту Wi-Fi під час старту. На ноутбуці дозвольте керування комбінацією функціональних клавіш; у мене це Fn + F2, де на F2 зображено передавач.
Запустіть систему знову:
# dmesg | less...[    8.443703] ieee80211_crypt: registered algorithm 'NULL'[    8.468166] ieee80211: 802.11 data/management/control stack, git-1.1.13[    8.468170] ieee80211: Copyright (C) 2004-2005 Intel Corporation[    8.527267] ipw2200: Intel(R) PRO/Wireless 2200/2915 Network Driver, 1.2.2kmprq[    8.527271] ipw2200: Copyright(c) 2003-2006 Intel Corporation[    8.527350] ACPI: PCI Interrupt 0000:02:03.0[A] -> GSI 17 (level, low) -> IRQ 17[    8.547046] ipw2200: Detected Intel PRO/Wireless 2200BG Network Connection...[    9.272808] ipw2200: Detected geography ZZD (13 802.11bg channels, 0 802.11a channels)
Неприємне повідомлення більше не з'являється.
Якщо блокування не вдається вимкнути, можна спробувати складніші способи, зокрема програму rfswitch, яка примусово вимикає перемикач (сайт: http://rfswitch.sourceforge.net/), або перекомпілювання ядра, описане тут).

5. Перевірка карти Wi-Fi

Тепер спробуйте знайти точку доступу. Виконайте
# ifconfig -a
щоб дізнатися назву бездротового інтерфейсу карти. Intel 2200 у моєму ноутбуці отримала назву eth1. RaLink RT2561/RT61 у настільному комп'ютері створила два інтерфейси: wlan0 та wmaster0, але лише перший бездротовий. Це можна перевірити командою iwconfig -a; див. приклад вище)
Потім виконайте пошук точок доступу через бездротовий інтерфейс; тут приклад для eth1:
# iwlist eth1 scaneth1      Scan completed :          Cell 01 - Address: 11:22:6B:81:A8:6A                    ESSID:"home_wireless_network"                    Protocol:IEEE 802.11bg                    Mode:Master                    Frequency:2.422 GHz (Channel 3)                    Encryption key:on                    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                    Quality=100/100  Signal level=-19 dBm                    IE: WPA Version 1                        Group Cipher : TKIP                        Pairwise Ciphers (1) : TKIP                        Authentication Suites (1) : PSK                    Extra: Last beacon: 176ms ago
Вивід показує точку доступу 11:22:6B:81:A8:6A з мережею «home_wireless_network» на каналі 3. Цю назву я задав через вебінтерфейс точки доступу. Мережа використовує WPA з TKIP і попередньо узгодженим ключем PSK.
Простий спосіб налаштувати мережу в цій конфігурації Debian: записати її параметри до /etc/network/interfaces .
Примітка 1, для прихильників графічних утиліт: цей файл сам є зручним інтерфейсом налаштування. Потрібно лише кілька рядків із правильними значеннями. Якщо ви віддаєте перевагу графічній програмі, внесіть у відповідні поля ті самі значення, які наведено нижче у файлі /etc/network/interfaces .
Примітка 2. Інший спосіб налаштування бездротового інтерфейсу з консолі: iwconfig.

6. Налаштування бездротового інтерфейсу
зі статичною адресою

У цій мережі призначимо комп'ютерам статичні адреси, щоб налаштування були передбачуваними. Сама статична адреса не забезпечує захисту мережі.
Наведений нижче фрагмент /etc/network/interfaces налаштовує бездротову мережу з адресами, заздалегідь призначеними адміністратором. Докладні коментарі пояснюють кожен параметр.
#-------------------------------------------------# Інтерфейс бездротової локальної мережі: eth1#-------------------------------------------------## Опис інтерфейсу:# inet: мережа IPv4# static: фіксована IP-адресаiface eth1 inet static # Обов'язкова адреса інтерфейсу # Цю адресу матиме наш комп'ютер # у бездротовій мережі 192.168.7.* address 192.168.7.15 # Обов'язкова маска підмережі netmask 255.255.255.0 # Адреса мережі network 192.168.7.0 # Широкомовна адреса broadcast 192.168.7.255 # Шлюз: бездротова точка доступу # Задається під час налаштування точки доступу gateway 192.168.7.1 # Назва мережі: home_wireless_network wireless-essid home_wireless_network # managed: підключення до точки доступу wireless-mode managed # Канал 3 відповідно до точки доступу wireless-channel 3 # Визначати швидкість передавання автоматично wireless-rate auto #------------------------------------------------- # Налаштування шифрування WPA #------------------------------------------------- # # WPA SSID: назва мережі # У цьому прикладі home_wireless_network wpa-ssid home_wireless_network # Попередньо узгоджений ключ WPA # Заданий під час налаштування точки доступу # Використовуйте пароль із 8-63 символів або ключ із 64 шістнадцяткових цифр # У цьому прикладі використовується пароль wpa-psk paw6102bdse889mpaaj9828nhhiizpsye8732j # Керування ключами: WPA-PSK wpa-key-mgmt WPA-PSK # Попарні шифри: TKIP та CCMP wpa-pairwise TKIP CCMP # Груповий шифр: TKIP wpa-group TKIP # Протокол: WPA        wpa-proto WPA
Параметри, що починаються з «wireless-», налаштовують бездротову мережу, а ті, що починаються з «wpa-», налаштовують WPA (Wi-Fi Protected Access). На час описаного налаштування WPA вважався кращим за WEP (Wired Equivalent Privacy). На точці доступу потрібно встановити відповідні параметри.
Також потрібно задати DNS-сервери, які перетворюють доменні імена на IP-адреси. Наприклад, в оригінальному посібнику наведено lenta.ru та адресу 81.19.69.232. Адреси DNS-серверів зазвичай записують до /etc/resolv.conf так:
# Приклад /etc/resolv.conf## Після nameserver вказується IP-адреса DNS-сервера## Можна використовувати DNS-сервери інтернет-провайдера;# отримайте їхні адреси у провайдера.# Або використовуйте публічні сервери# із можливо довшим часом відповіді.## Нижче наведено дві адреси публічних серверів з оригінального прикладу#nameserver 192.0.2.53nameserver 192.0.2.54
Інші адреси публічних DNS-серверів наведено тут.
Перезавантажте систему та за потреби активуйте eth1 від root:
# ifup eth1
Якщо до цього використовувався дротовий інтерфейс, у мене це eth0, вимкніть його, якщо повністю переходите на Wi-Fi:
# ifdown eth0
Щоб вимкнути бездротовий інтерфейс, використайте відповідну команду:
# ifdown eth1
Щоб eth1 автоматично вмикався під час запуску, додайте цей рядок перед його описом, тобто перед iface eth1 inet static:
auto eth1

7. Налаштування бездротового інтерфейсу
з динамічним призначенням адрес

Цей випадок подібний до попереднього, але в секції бездротового інтерфейсу у /etc/network/interfaces замініть
iface eth1 inet static
на
iface eth1 inet dhcp
та видаліть наведену нижче фіксовану адресу разом зі статичними параметрами netmask, network, broadcast і gateway. Конфігурацію мережі надаватиме DHCP:
address 192.168.7.15
Примітка. Не забудьте перевірити налаштування DNS (див. вище).

8. Додаткові налаштування WPA

Для ядра GNU/Linux 2.4 або 2.6 старішого за 2.6.14 слід явно вказати драйвер WPA. У цій конфігурації Debian додайте його до /etc/network/interfaces):
wpa-driver {драйвер}
    де {драйвер} має одне з таких значень:

  • wext: універсальний драйвер для більшості випадків;
  • atmel: драйвер ATMEL AT76C5XXx (USB, PCMCIA);
  • wired: драйвер дротової мережі Ethernet.
Поширені параметри WPA
У Debian їх указують у відповідній секції /etc/network/interfaces);
взято звідси
Параметр Можливі значення
(у /etc/network/interfaces допустимі значення розділяються пробілами)
Опис
wpa-ssid {текстовий рядок} задає назву мережі (SSID)
wpa-bssid Приклад:00:1a:2b:3c:4d:5e ідентифікатор (BSSID) точки доступу для підключення
wpa-psk Приклад:iehRHbfGy89620ksjDHF3 попередньо узгоджений ключ WPA
wpa-key-mgmt NONE, WPA-PSK, WPA-EAP,IEEE8021X допустимі методи керування ключами
wpa-group CCMP, TKIP, WEP104,WEP40 допустимі групові шифри WPA
wpa-pairwise CCMP, TKIP, NONE допустимі попарні шифри WPA
wpa-auth-alg OPEN, SHARED, LEAP допустимі алгоритми автентифікації IEEE 802.11
wpa-proto WPA, RSN допустимі протоколи
wpa-identity Приклад:vasya ім'я користувача від адміністратора для EAP-автентифікації
wpa-password Приклад:rRt89Nbvc4 пароль для EAP-автентифікації

9. Висновок

Описаний спосіб працює з традиційними мережевими засобами Debian. Він має недолік, коли потрібно регулярно перемикатися між двома інтерфейсами, наприклад дротової та wi-fi мереж: перемикання виконується вручну та потребує пароля root, якого звичайний користувач може не знати.
Якщо ви часто користуєтеся кількома інтерфейсами чи підключаєтеся до нових мереж Wi-Fi, що звично для ноутбука, розгляньте альтернативний підхід із програмою NetworkManager. Докладніше про неї можна прочитати тут.
У KDE за інтерфейсами зручно стежити за допомогою KNemo. Після встановлення налаштуйте її через Центр керування KDE > Мережа та інтернет > Монітор мережі.