wpa_supplicant (WiFI), кросс-платформенная открытая реализация стандарта IEEE 802.11 для Linux, *BSD, Windows, Mac OS X и прочих систем.
Что из себя представляет WPAS?
- Кросс-платформенная открытая реализация стандарта IEEE 802.11 для Linux, *BSD, Windows, Mac OS X и прочих систем.
- Полная поддержка WPA2, WPA и более старых протоколов безопасности беспроводной LAN сети.
- Приложение пользовательского пространства, выполняющее функции саппликанта и SME оператора, исполняющего MLME инструкции.
WPAS поддерживает:
- WPA и полностью IEEE 802.11i/RSN/WPA2.
- WPA-PSK и WPA2-PSK (pre-shared key) ("WPA-Personal").
- WPA вместе с EAP (т.е., сервером аутентификации RADIUS) ("WPA-Enterprise") управление ключами CCMP, TKIP, WEP (104/128 и 40/64 бит).
- Кэширование RSN, PMKSA: предварительную аутентификацию.
Как WPAS устанавливает связь с точкой доступа?
- Cетевой интерфейс должен исправно функционировать с установленным драйвером, прежде чем wpa_supplicant запустится.
- Wpa_supplicant запрашивает драйвер ядра сканировать доступные Basic Service Set (BSS).
- Wpa_supplicant производит выбор BSS в соответствии с настройками.
- Wpa_supplicant запрашивает драйвер ядра установить соединение с выбранной BSS.
- Для WPA-EAP: аутентификацию EAP производит встроенный IEEE 802.1X Supplicant, либо же внешний Xsupplicant с сервером аутентификации.
- Для WPA-EAP: получен мастер-ключ от IEEE 802.1X Supplicant.
- Для WPA-PSK wpa_supplicant использует пароль PSK в качестве мастер-ключа сессии.
- Wpa_supplicant производит с аутентификатором точки доступа 4-х этапное согласование и групповое согласование ключей.
- Wpa_supplicant производит шифрование однонаправленных и широковещательных пакетов, после чего начинается обычный обмен данными.
Главный и большой плюс WPAS — его юниксвейность, то есть соответствие принципу Unix Way, когда программа делает что-то одно, но делает это хорошо. Она требует некоторого внимания и терпения вначале, но затем о ней можно напрочь забыть. После того как программа настроена и пущена в дело, она полностью выпадает из потока событий, превращаясь в пару строк из ps -ef.
WPAS является компонентом просителя WPA, то есть той частью, которая запускается на стороне клиентской станции. WPAS осуществляет обмен данными с аутентификатором WPA и аутентификацией по протоколу EAP с сервером аутентификации. К тому же, wpa_supplicant контролирует переход между сетями (roaming) и аутентификацию/ассоциацию IEEE 802.11 в драйвере беспроводной локальной сети.
WPAS представляет собой "демон", программу которая запускается в фоновом режиме и действует в качестве служебного компонента, управляющего беспроводным соединением. WPAS поддерживает различные программы-оболочки, например текстовый wpa_cli, входящий в состав WPAS.
После того, как WPAS настроил сетевое устройство, могут быть запущены более высокоуровневые средства настройки, например DHCP. Существуют различные способы для встраивания WPAS в сценарии настройки сети компьютера.
В большинстве случаев WPAS запускается следующим образом:
# wpa_supplicant -B -c/etc/wpa_supplicant.conf -iwlan0
(Эта команда заставляет процесс ответвиться в фоновый режим).
Наилегчайший способ отладки проблем и получения журнала об ошибках для составления отчета об ошибке, заключается в запуске WPAS в фоновом режиме с включенным режимом отладки:
#wpa_supplicant -c/etc/wpa_supplicant.conf -iwlan0 -d
Может управлять несколькими (радио) интерфейсами, по одному запущенному процессу для каждого отдельного интерфейса или просто запуском одного процесса со списком опций в командной строке. Каждый интерфейс отделяется аргументом -N. Например, следующая командная строка запустит WPAS для двух интерфейсов:
- wpa_supplicant
- -c wpa1.conf -i wlan0 -D hostap -N
- -c wpa2.conf -i ath0 -D madwifi
Если вам нужно подключиться только один раз, то необходимости создавать файл конфигурации и вникать во все тонкости настройки, нет. Достаточно набрать несколько инструкций из командной строки. Для закрытой WPA сети быстрое подключение выгладит так...
В начале надо запустить саму программу WPAS и сопутствующую wpa_cli.
[bunker@home ~]$ wpa_supplicant -Dnl80211 -iwlan0 -C/var/run -u &
[bunker@home ~]$ wpa_cli -p/var/run
Затем настройка из интерактивного интерфейса wpa_cli.
- add_network
- set_network 0 ssid "name of AP"
- set_network 0 key_mgmt WPA-PSK
- set_network 0 pairwise TKIP
- set_network 0 psk "key"
- enable_network 0
Для закрытой WPA2 сети:
- add_network
- set_network 0 ssid "name of AP"
- set_network 0 key_mgmt WPA-PSK
- set_network 0 pairwise CCMP
- set_network 0 psk "key"
- enable_network 0
В конце необходимо вручную запустить демон DHCP.
[bunker@home ~]$ dhcpcd wlan0