GrabDuck

Руководство aptosid - Wifi с wpa-supplicant

:

Как заставить беспроводную сеть работать - WiFi

Во избежание возможных нарушений норм патентного законодательства aptosid LiveCD содержит только DFSG-совместимое программное обеспечение. Смотрите также дополнительную информацию по источникам для несвободного ПО

Для работы WiFi, Вам понадобится простое, проводное соединение с сетью, на несколько минут, чтобы скачать нужные микропрограммы для WiFi карты.

Если проводное соединение не возможно, то придётся скачать необходимые пакеты отдельно, сохранить их на внешний носитель и позже установить на компьютер с помощью:

#dpkg -i <firmware.deb>

Чтобы узнать, какая микропрограмма Вам нужна, воспользуйтесь командой:

#fw-detect

Она выдаст что-то вроде бы такое:

#apt-get update
#apt-get install <name of firmware>
#modprobe -r <modulename>
#modprobe <modulename>

Воспользуйтесь этой подсказкой, чтобы узнать какие пакеты установить. После установки надо набрать ещё несколько команд.

Загрузите модуль, необходимый для работы Вашей карты.

С правами root наберите в консоли:

modprobe -r <modulename>

modprobe <modulename>

<modulename> - это имя модуля, которое Вам дал fw-detect. Программа Konsole имеет полезную функцию - автозавершение команд:
Если Вы напишите несколько букв названия модуля и нажмёте клавишу TAB, он завершит команду за Вас. Это защитит Вас от ошибки.

Если всё прошло удачно, то обе команды modprobe должны завершиться без сообщений.

Вы можете проверить, загрузился ли модуль:

#lsmod | grep <module>

Теперь запустите Ceni из K-Menu - Internet или из консоли с правами rootGetting Online - Ceni. Ваше устройство должно быть в списке, готовое к настройке.

Для настройки Wlan WiFi через графический интерфейс читайте WiFi - roaming WPA-GUI

Режимы использования wpasupplicant для Debian

Во избежание возможных нарушений норм патентного законодательства aptosid LiveCD содержит только DFSG-совместимое программное обеспечение. Пожалуйста, обращайтесь за информацией об использовании не свободного программного обеспечения для различных устройств по данной ссылке

Пакет wpasupplicant в Debian предоставляет два (2) режима использования, которые полностью интегрированы в системную сетевую инфраструктуру: ifupdown.

Обеспечение

1. Спецификация "backend"-ов для wpa_supplicant драйвера

* Таблица поддерживаемых драйверов
* Основные рекомендации по использованию драйвера

2. Режим #1: Управляемый (Managed Mode)

* Пример
* Таблица основных опций
* Важные замечания, относящиеся к режиму
* Как это работает

3. Режим #2: Роуминг (Roaming Mode)

* wpa_supplicant.conf
* /etc/network/interfaces
* Контроль роуминга с помощью wpa_action
* Тонкая настройка роуминга
* Файл журнала
* Использование внешних mapping скриптов ()
* /etc/network/interfaces с внешним mapping

4. Проблемы

* Скрытый ssids

5. Соображения по безопасности

* Права доступа конфигурационного файла

2. Режим #1: Managed Mode

Этот режим предоставляет возможность устанавливать соединение с помощью wpa_supplicant с одной определенной сетью. Это аналогично работе пакета wireless-tools. Каждый элемент устанавливаемого посредством wpa_supplicant соединения предваряется префиксом 'wpa-' и получает значение, используемое для данного элемента.

Пример режима #1 wpa.conf file - Пример 1.
Пример режима #1 wpa.conf file - Пример 1.
NOTE: значение 'wpa-psk' правильно только при соблюдении следующих условий:

   1. Это ascii-строка длиной от 8 до 63 знаков
   2. Это шестнадцатеричная строка из 64 элементов.

# Подключение к точке доступа ssid 'NETBEER' с типом шифрования
# WPA-PSK/WPA2-PSK. Подразумевается использование 'wext' backend-а
#  wpa_supplicant, поскольку нет указанных опций wpa-driver .
# Пароль записывается строкой ASCII. DHCP используется для
# получения сетевого адреса.
#
iface wlan0 inet dhcp

        wpa-ssid NETBEER
        # plaintext passphrase
        wpa-psk PlainTextSecret

# Подключение к точке доступа ssid 'homezone' с типом шифрования
# WPA-PSK/WPA2-PSK, используя 'wext' backend  wpa_supplicant.
# Строка psk представлена шестнадцатеричной записью. DHCP используется для
# получения сетевого адреса.
#
iface wlan0 inet dhcp
        wpa-driver wext
        wpa-ssid homezone
        # hexadecimal psk is encoded from a plaintext passphrase
        wpa-psk 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f

# Подключение к точке доступа ssid 'HotSpot1' и bssid of '00:1a:2b:3c:4d:5e'
# с типом шифрования WPA-PSK/WPA2-PSK, используя backend 'madwifi'
#wpa_supplicant. Пароль - простым текстом (ASCII).
# Используется статический сетевой адрес.
#
iface ath0 inet static

        wpa-driver madwifi
        wpa-ssid HotSpot1
        wpa-bssid 00:1a:2b:3c:4d:5e
        # plaintext passphrase
        wpa-psk madhotspot
        wpa-key-mgmt WPA-PSK
        wpa-pairwise TKIP CCMP
        wpa-group TKIP CCMP
        wpa-proto WPA RSN
        # static ip settings
        address 192.168.0.100
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1

# Использование пользовательского файла wpa_supplicant.conf для eth1.
#Вся сетевая информация о пользовательских настройках сохраняется в
# wpa_supplicant.conf. Тип wpa-driver не указан
# , поэтому используется 'wext'. Получение сетевого адреса по DHCP.
#
iface eth1 inet dhcp

wpa-conf /path/to/wpa_supplicant.conf

Таблица основных опций

Обзор основных опций 'wpa-', которые могут быть использованы в разделе для беспроводных устройств файла /etc/network/interfaces. Смотри 'Важные замечания о Managed Mode' раздел о допустимых и неправильных значениях 'wpa-'.

Замечание: все значения чувствительны к регистру

Значение	Пример значения		Описание
=======         =============           ===========
wpa-ssid        plaintextstring         устанавливает ssid вашей сети
wpa-bssid       00:1a:2b:3c:4d:5e       bssid вашего AP
wpa-psk         0123456789......        Ваш открытый wpa ключ. Используйте
                                        wpa_passphrase(8) для генерации psk
                                        из значений пароля и ssid
wpa-key-mgmt    NONE, WPA-PSK, WPA-EAP, лист принятых удостоверяющих ключей
                IEEE8021X               управляемые протоколы
wpa-group       CCMP, TKIP, WEP104,     перечень допустимых типов group шифрования для WPA
                WEP40
wpa-pairwise    CCMP, TKIP, NONE        Перечень допустимых типов pairwise шифрования для
                                        WPA
wpa-auth-alg    OPEN, SHARED, LEAP      перечень разрешенных алгоритмов аутентификации IEEE 802.11

wpa-proto       WPA, RSN                перечень допустимых протоколов
wpa-identity    myplaintextname         предоставленное пользовательское имя 
                (EAP аутентификация)                        
wpa-password    myplaintextpassword     ваш пароль (EAP аутентификация)
wpa-scan-ssid   0 or 1                  включает сканирование ssid с указанными
                                        Probe Request фреймами
wpa-ap-scan     0 or 1 or 2             Устанавливает логику сканирования
                                        wpa_supplicant

Функциональность wpa_cli(8) требует дальнейшей доработки. Все, что пропущено на данный момент, считается содержащим ошибки.Баг-репорты и патчи всегда приветствуются!

Важные замечания о Managed Mode

Для 'wpa-' опций необходимо указать хотя бы значение ssid. Только некоторые опции имеют глобальный эффект. Это: 'wpa-ap-scan' and 'wpa-preauthenticate'.

Любая 'wpa-' опция для конкретного устройства в файле interfaces(5) file is запуска wpa_supplicant демона.

Скрипт wpasupplicant ifupdown пытается определить правильный тип ввода данных для каждой опции. Так, если вводится строка простым текстом и заключается в кавычки, ввод перенапрявляется wpa_cli, который осуществляет вставку в соответствующий блок network, сформированый через wpa_supplicant ctrl_interface сокет.

Запуск ifup вручную с опцией '--verbose' покажет все используемые команды для создания блока network wpa_cli. Если значение параметра любой wpa-* опции, использованной Вами в файле /etc/network/interfaces, заключено в двойные кавычки. то оно будет воспринято как "plaintext" or "ascii" тип ввода.

Некоторые типы значений подразумевают 16ти ричный ввод (например wpa-wep-key*). Значение 'type' опции wpa-psk, однако, определяется простой проверкой на наличие более чем одного нешестнадцатеричного символа.

Как это работает

Как сказано ранее, каждый определенный элемент wpa_supplicant предваряется префиксом 'wpa-'. Каждый элемент соответствует спецификации описанной в wpa_supplicant.conf(5), wpa_supplicant(8) и wpa_cli(8) man-страничках.

Запуск осуществляется без каких-либо предопределенных значений, и wpa_cli сетевую конфигурацию непосредственно из строк ввода, содержащих 'wpa-*'. Изначально wpa_supplicant/wpa_cli не устанавливает напрямую свойства устройств (как установка essid с iwconfig, например), а указывает устройству на предпочтительную точку доступа для ассоциации с таковой. Когда устройство просканирует диапазон и установит доступность указанной точки, тогда будут установлены и указанные ранее свойства.

Выполняющий всю работу скрипт расположен:

 /etc/wpa_supplicant/ifupdown.sh
/etc/wpa_supplicant/functions.sh

ifupdown.sh:Он вызывается в фазах 'pre-up', 'pre-down' и 'post-down' ifupdown.

В 'pre-up' фазе, a wpa_supplicant запускается серией команд wpa_cli, которые устанавливают сетевую конфигурацию в соответствии со значениями 'wpa-'опций файла /etc/network/interfaces для физического устройства.

Если wpa-roam используется, wpa_cli запускается в фазе post-up'.

В фазе 'pre-down'убивается уже существующая копия процесса wpa-cli.

В фазе 'post-down' демон wpa_supplicant останавливается.

3. Режим #2: Roaming Mode

Этим пакетом предоставлен упрощенный и изолированный механизм roaming. Он представлен в форме одного из скриптов wpa_cli - /sbin/wpa_action, и будучи активированным, предполагает дальнейший контроль с помощью ifupdown. 'man' страничка wpa_action(8) содержит подробное описание технических подробностей.

Для активации roaming-интерфейса адаптируйте приведенный ниже фрагмент файла interfaces(5):

iface eth1 inet manual
	wpa-driver wext
        wpa-roam /path/to/wpa_supplicant.conf

В данном примере стартуют два демона: wpa_supplicant и wpa_cli. Что безусловно требует специальной настройки wpa_supplicant.conf. Хорошей отправной точкой можно считать файл конфигурации, поставляемый вместе с документацией:

 # copy the template to /etc/wpa_supplicant/
        cp /usr/share/doc/wpasupplicant/examples/wpa-roam.conf \
                /etc/wpa_supplicant/wpa_supplicant.conf
        # allow only root to read and write to file
        chmod 0600 /etc/wpa_supplicant/wpa_supplicant.conf

NOTE: it is critical that the used wpa_supplicant.conf defines the location of
      the 'ctrl_interface' so that a communication socket is created for the
      wpa_cli (wpa-roam daemon) to attach. The mentioned example configuration,
      /usr/share/doc/wpasupplicant/examples/wpa-roam.conf, has been set to a
      sane default.

Конечно, данный файл потребует дополнительного редактирования соответственно Вашей сетевой конфигурации и включения блоков для всех известных сетевых адаптеров. Если все изложенное остается для Вас непонятным, изучите внимательно 'man'-страницу wpa_supplicant.conf(5).

Для каждой сети возможно указать специальную опцию 'id_str'(простая текстовая строка). Текстовые строки - основа создаваемых профилей сети, так же они коррелируют с логическими интерфейсами, указанными в файле interfaces(5). Отсутствие данной опции подразумевает, что логический интерфейс 'default' будет использован как запасной. Выбрать данный интефейс возможно с помощью опции 'wpa-default-iface'.

Что же все это значит? Продемонстрируем с помощью маленького примера из ман странички wpa_action(8).

Пример wpa_supplicant.conf
wpa_supplicant.conf example:
network={
        ssid="foo"
        key_mgmt=NONE
        # this id_str will notify /sbin/wpa_action to 'ifup uni'
        id_str="uni"
}

network={
        ssid="bar"
        psk=123456789...
        # this id_str will notify /sbin/wpa_action to 'ifup home_static'
        id_str="home_static"
}

network={
        ssid=""
        key_mgmt=NONE
        # no 'id_str' parameter is given, /sbin/wpa_action will 'ifup default'
}
Пример /etc/network/interfaces
/etc/network/interfaces example:
# the roaming interface MUST use the manual inet method
# 'allow-hotplug' or 'auto' ensures the daemon starts automatically
allow-hotplug eth1
iface eth1 inet manual

        wpa-driver wext
        wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf


# no id_str, 'default' is used as the fallback mapping target
iface default inet dhcp


# id_str="uni"
iface uni inet dhcp

# id_str="home_static"
iface home_static inet static

        address 192.168.0.20
        netmask 255.255.255.0
        network 192.168.0.0

        broadcast 192.168.0.255
        gateway 192.168.0.1

Логический интерфейс поднимается с помощью ifup и останавливается с помощью ifdown также, как wpa_supplicant устанавливает и разрывает привязки к ассоциированным с ним сетями с помощью опции 'id_str', используемой в файле конфигурации wpa_supplicant.conf .

Журнал событий /sbin/wpa_action создается в /var/log/wpa_action.log, пожалуйста присоединяйте его , когда сообщаете о возникших проблемах.

Управление wpa_supplicant через wpa_cli или wpa_gui

Процессом wpa_supplicant могут управлять члены группы "netdev", если Вы не меняли настроек (или какой угодно группой, которая указана в GROUP= crtl_interface parameter).

# the default ctrl_interface option used in the example file
	# /usr/share/doc/wpasupplicant/examples/wpa-roam.conf
        ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev

To interact with the supplicant, the wpa_cli (command line) and wpa_gui (QT)
have been provided. With these you may connect, disconnect, add/delete new
network blocks, provide required interactive security information and so on.

Демон роуминга и wpa_action

Будучи запущенным roaming daemon, в дальнейшем контролируется с помощью ifupdown. Таким образом: wpa_cli вызывает ifup, когда wpa_supplicant успешно ассоциируется с точкой доступа, и вызывает ifdown, когда соединение потеряно или разорвано. Пока roaming daemon остается активным, вместо ifupdown используйте /sbin/wpa_action для его остановки и перезагрузки. Например, чтобы остановить romaing daemon на устройстве 'eth1':

wpa_action eth1 stop

Для внесения новых дополнительных деталей конфигурации нет необходимости останавливать roaming daemon . Отредактируйте wpa_supplicant.conf для внесения необходимых дополнений и, опционально, /etc/network/interfaces для указания новой сети (с пометкой 'id_str') и просто перезапустите демона:

wpa_action eth1 reload

Полное техническое описание может быть найдено в тексте ман страницы wpa_action(8).

Тонкая настройка Roaming Setup

Вы можете столкнуться с ситуацией, когда несколько точек доступа находятся в непосредственной близости. Вы можете вручную указать одну из них- предпочтительную, используя wpa_cli или wpa_gui, или же вы можете выставить индивидуальные приоритеты для каждой из точек. Данную возможность предоставляет опция 'priority' файла wpa_supplicant.conf.

Файл журнала

События roaming dameon заносятся в файл журнала /var/log/wpa_action.log. Регистрируется следующая информация:

*time and date
*interface name and action event
*values of enviromental variables (WPA_ID, WPA_ID_STR, WPA_CTRL_DIR)
*ifupdown command executed
*wpa_cli status (based on WPA-PSK, network may display different info)
*bssid
*ssid
*id
*id_str
*pairwise_cipher
*group_cipher
*key_mgmt
*wpa_state
*ip_address

Использование внешних Mapping Scripts (такие как guessnet)

В дополнение к возможности создания ассоциаций с логическими интерфейсами с помощью опции 'id_str', wpa_action допускает использование внешних mapping script-ов. Такой скрипт возвращает имя того логического интерфейса, который будет поднят. Любые mapping script, работающие с ifupdown (см. man interfaces), также будут работать, будучи вызванными из wpa_action.

Для использования добавьте строку 'wpa-mapping-script name-of-the-script' в раздел физического роуминга устройств файла interfaces. (Можно указать абсолютный путь к mapping script.)

Содержимое строки, начинающейся с wpa-map, передается на ввод mapping script.(количество строк, по одной для каждого wpa-mapX, неограничено). Например:

iface wlan0 inet manual
        wpa-driver wext
        wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
        wpa-mapping-script guessnet-ifupdown
        wpa-map0 home
        wpa-map1 work
        wpa-map2 school
        # ... additional wpa-mapX lines as required

По умолчанию mapping script используется только если не указана опция 'id_str'. Для полного отключения соответствий, задаваемых 'id_str' и использования только внешних mapping script, укажите 'wpa-mapping-script-priority 1' для изменения поведения, заданного по умолчанию.

Если mapping script возвращает пустую строку, wpa_action будет использовать 'default' интерфейс, если только не указана альтернатива опцией 'wpa-roam-default-iface'.

Ниже приведен пример с использованием guessnet-ifupdown как внешнего mapping script.

Пример /etc/network/interfaces с внешних mapping
/etc/network/interfaces with external mapping example:
allow-hotplug wlan0
iface wlan0 inet manual

        wpa-driver wext
        wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
        wpa-roam-default-iface default-wparoam
        wpa-mapping-script guessnet-ifupdown
        wpa-map default: default-guessnet
        wpa-map0 home_static
        wpa-map1 work_static


# school can only be chosen via 'id_str' matching
iface school inet dhcp

        # resolvconf
        dns-nameservers 11.22.33.44 55.66.77.88

iface home_static inet static

        address 192.168.0.20
        netmask 255.255.255.0

        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1
        test peer address 192.168.0.1 mac 00:01:02:03:04:05


iface work_static inet static

        address 192.168.3.200
        netmask 255.255.255.0
        network 192.168.3.0
        broadcast 192.168.3.255

        gateway 192.168.3.1
        test peer address 192.168.3.1 mac 00:01:02:03:04:05

iface default-guessnet inet dhcp

iface default-wparoam inet dhcp

В примере wpa_action использует guessnet для выбора подходящего логического интерфейса только, если в файле wpa_supplicant.conf. не используется опция 'id_str' для текущего интерфейса

Строка 'wpa-map' представляет guessnet с тестируемым логическим интерфейсом, а также интерфейсом по умолчанию для использования в случае, когда все тесты закончатся неудачно. Строка 'test' каждого логического интерфейса используется guessnet чтобы определить, действительно ли мы подключены к этой сети. Например, guessnet выбирает логический интерфейс 'home_static' , если в данной сети присутствует устройство с IP адресом 192.168.0.1, MAC адресом 00:01:02:03:04:05. Ну в случае неудачи всех попыток теста, будет сконфигурировано устройство 'default-guessnet'.

Для большей информации обратитесь к руководству man guessnet (8).

4. Трудности

Для отладки соединения, а также в случае проблем ассоциации или аутентификации, запустите `wpa_cli -i <interface>` в отдельном сеансе shell, до запуска самого интерфейса. Используйте сначала команду 'level 0' для получения всей отладочной информации. Потом `ifup --verbose <interface>` для получения подробного вывода от скрипта, стартующего wpasupplicant.

Скрытые ssids

Для справки ознакомьтесь с #358137. С целью иметь возможность ассоциировать со скрытыми ssids, попробуйте установить опцию 'ap_scan=1' в секции global, и 'scan_ssid=1' в секции network block файла wpa_supplicant.conf file. при использовании управляемого режима, вставьте следующие строки:

iface eth1 inet dhcp
wpa-conf managed
wpa-ap-scan 1
wpa-scan-ssid 1
# ... additional options for your setup

В соответствии с #368770, ассоциация может потребовать очень много времени при подключении к сетям, использующим WEP. В некоторых случаях выставление параметра 'ap_scan=2' в конфигурационном файле (или использование абзаца 'wpa-ap-scan 2' , что эквивалентно) помогает значительно ускорить этот процесс.

5. Замечания по безопасности

Права доступа конфигурационного файла

Является важным обеспечить сохранность PSK и другой подобной информации относительно частной настройки сети, поэтому важные конфигурационные файлы, содержащие такие данные должны быть доступны только для чтения их владельцем. Например:

chmod 0600 /etc/network/interfaces
# substitute the path of your wpa_supplicant.conf file
chmod 0600 /etc/wpa_supplicant/wpa_supplicant.conf

По умолчанию /etc/network/interfaces доступен для чтения всем, и, следовательно непроигоден для хранения секретных ключей и паролей.

Содержание, последний раз пересмотрено 14/08/2010 0100 UTC