Linux WiFi из командной строки с wpa_supplicant
В этой статье я расскажу, как можно настроить WiFi с помощью wpa_supplicant, без всяких Xorg/X11 утилит. Это необходимо для того, чтобы базовые службы ОС исправно работали с минимальным набором технических средств удаленного доступа. Программа будет исполняться как служба, настройки сделаны правкой конфиг файлов.
По-быстрому, установить соединение с открытой точкой доступа можно таким образом.
[root@home ~]$ wpa_cli > add_network > set_network 0 ssid "MYSSID" > set_network 0 key_mgmt NONE > enable_network 0
Если же надо всерьез и надолго, то прошу внутрь.
Общие сведения о wpa_supplicant
Что из себя представляет wpa_supplicant?
- Кросс-платформенная открытая реализация стандарта IEEE 802.11 для Linux, *BSD, Windows, Mac OS X и прочих систем.
- Полная поддержка WPA2, WPA и более старых протоколов безопасности беспроводной LAN сети.
- Приложение пользовательского пространства, выполняющее функции саппликанта и SME оператора, исполняющего MLME инструкции.

- 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: предварительную аутентификацию.
Как wpa_supplicant устанавливает связь с точкой доступа?
- 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-х этапное согласование [1] и групповое согласование ключей.
- Wpa_supplicant производит шифрование однонаправленных и широковещательных пакетов [2] , после чего начинается обычный обмен данными.
Главный и большой плюс wpa_supplicant — его юниксвейность, то есть соответствие принципу Unix Way, когда программа делает что-то одно, но делает это хорошо. В каком-то смысле wpa_supplicant также Gentoo Way. Она требует некоторого внимания и терпения вначале, но затем о ней можно напрочь забыть. После того как программа настроена и пущена в дело, она полностью выпадает из потока событий, превращаясь в пару строк из ps -ef . Она не сверкает и не мигает в системном трее, не оповещает о разведанных, подключенных и отключенных беспроводных сетях. Ее просто нет, пока вы сами ее не поищите.
Из минусов — сложность настройки и конфигурации. Много возни по сравнению с тырк-тырк-тырк в окне Network Manager , не говоря уже о WiFi подключении с любого Андроид устройства. Если вы собираетесь в поездку с Linux ноутбуком, то наверняка предпочтете более дружественный фронтенд настройки беспроводной сети, чтобы быстро подключаться к бесплатным точкам доступа WiFi в аэропорту, гостинице или в рабочей обстановке. Для домашнего же беспроводного интернета — самое то.
Установка
Если не выбирать графический фронтенд, то программа почти не тянет за собой никаких зависимостей. Для Gentoo Linux сгодится установка с выставленными флагами как показано.
(5:562)$ equery uses wpa_supplicant [ Legend : U - final flag setting for installation] [ : I - package is installed with flag ] [ Colors : set, unset ] * Found these USE flags for net-wireless/wpa_supplicant-2.6: U I - - ap : Add support for access point mode + + dbus : Enable dbus support for anything that needs it (gpsd, gnomemeeting, etc) - - eap-sim : Add support for EAP-SIM authentication algorithm - - fasteap : Add support for FAST-EAP authentication algorithm - - gnutls : Add support for net-libs/gnutls (TLS 1.0 and SSL 3.0 support) + + hs2-0 : Add support for 802.11u and Passpoint for HotSpot 2.0 - - p2p : Add support for Wi-Fi Direct mode - - qt4 : Add support for the Qt GUI/Application Toolkit version 4.x - - qt5 : Add support for the Qt 5 application and UI framework + + readline : Enable support for libreadline, a GNU line-editing library that almost everyone wants - - smartcard : Add support for smartcards + + ssl : Add support for Secure Socket Layer connections - - tdls : Add support for Tunneled Direct Link Setup (802.11z) - - uncommon-eap-types : Add support for GPSK, SAKE, GPSK_SHA256, IKEV2 and EKE - - wps : Add support for Wi-Fi Protected Setup
- emerge -av wpa_supplicant #Gentoo
- aptitude install wpasupplicant #Debian
- yum install wpa_supplicant #Redhat
- pacman -S wpa_supplicant #Arch
Подключение без конфиг файла
Если вам нужно подключиться только один раз, то необходимости создавать файл конфигурации и вникать во все тонкости настройки, нет. Достаточно набрать несколько инструкций из командной строки.
Пример для открытой сети был показан в самом начале. Для закрытой WPA сети быстрое подключение выгладит так:
В начале надо запустить саму программу wpa_supplicant и сопутствующую wpa_cli .
[root@home ~]$ wpa_supplicant -Dnl80211 -iwlan0 -C/var/run -u & [root@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.
[root@home ~]$ dhcpcd wlan0
Подключение к Ad-Hoc сети
Никогда с такой не сталкивался, но готовым нужно быть ко всему. Подключение к открытой ad-hoc.
> add_network > set_network 0 ssid "adhoc-ssid" > set_network 0 mode 1 > set_network 0 frequency 2412 > set_network 0 key_mgmt NONE > enable_network 0
То же самое с помощью iw .
> iw dev wlan0 del > iw phy phy0 interface add wlan0 type ibss > ifconfig wlan0 up > iw dev wlan0 scan > iw dev wlan0 ibss join AdHocNetworkName 2412
Настройка для домашней сети
Теперь самое интересное — настройка. Этот процесс задокументирован для Arch Wiki, Debian Wiki и Gentoo Wiki, но всех деталей там естественно нет.
Программа обычно ставится в директорию /etc/wpa_supplicant/ , и наша задача — правильно настроить конфигурационный файл wpa_supplicant.conf , и привязать его к автозапуску беспроводного сетевого интерфейса.
Начнем с wpa_supplicant.conf . Если вы подключаетесь из дома к WPA/WPA2, то скорее всего используете пароль для WiFi соединения, что соответствует режиму WPA-PSK («WPA-Personal») . Мы не будет рассматривать варианты с WEP шифрованием, так как оно ненамного лучше открытой сети.
Возьмем типовой конфиг из документации. Например такой.
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel # # home network; allow all valid ciphers network=
Первая строка необходима, без ctrl_interface программа даже не запустится. GROUP=wheel нужно для того, чтобы запускать из под обычного пользователя в графическом интерфейсе wpa_gui, но это не наш путь. Поэтому меняем на рутовый GROUP=0 .
ctrl_interface_group=0 ctrl_interface=/var/run/wpa_supplicant ap_scan=1
Каждой сети в файле настроек должен соответствовать блок network <> . Покопавшись в исходниках, обнаружил нашел годное писание переменной ap_scan в файле config.h , а в мануале и руководстве пользователя ее описание очень скудное.
ap_scan=0 #драйвер сканирует точку доступа ap_scan=1 #wpa_supplicant сканирует точку доступа, используется по-умолчанию ap_scan=2 #как 0, но еще учитывает политики безопасности и SSID, работает с ndiswrapper
Полное описание
ap_scan — AP scanning/selection
By default, wpa_supplicant requests driver to perform AP scanning and then uses the scan results to select a suitable AP. Another alternative is to allow the driver to take care of AP scanning and selection and use wpa_supplicant just to process EAPOL frames based on IEEE 802.11 association information from the driver.
1: wpa_supplicant initiates scanning and AP selection (default).
0: Driver takes care of scanning, AP selection, and IEEE 802.11 association parameters (e.g., WPA IE generation); this mode can also be used with non-WPA drivers when using IEEE 802.1X mode;
do not try to associate with APs (i.e., external program needs to control association). This mode must also be used when using wired Ethernet drivers.
2: like 0, but associate with APs using security policy and SSID (but not BSSID); this can be used, e.g., with ndiswrapper and NDIS drivers to enable operation with hidden SSIDs and optimized roaming;
in this mode, the network blocks in the configuration are tried one by one until the driver reports successful association; each network block should have explicit security policy (i.e., only one
option in the lists) for key_mgmt, pairwise, group, proto variables.
Note: ap_scan=2 should not be used with the nl80211 driver interface (the current Linux interface). ap_scan=1 is optimized work working with nl80211. For finding networks using hidden SSID, scan_ssid=1 in the network block can be used with nl80211.
- bssid — The Basic Service Set Identifier (BSSID), физический адрес точки доступа.
- key_mgmt — Протоколы аутентификации.
- pairwise — Для WPA2 укажите CCMP, а для WPA — TKIP.
- proto — WPA/WPA2.
- psk — Хэш пароля PreShared Key.
руководство по настройкам
group: list of accepted group (broadcast/multicast) ciphers for WPA
CCMP = AES in Counter mode with CBC-MAC [RFC 3610, IEEE 802.11i/D7.0]
TKIP = Temporal Key Integrity Protocol [IEEE 802.11i/D7.0]
WEP104 = WEP (Wired Equivalent Privacy) with 104-bit key
WEP40 = WEP (Wired Equivalent Privacy) with 40-bit key [IEEE 802.11]
If not set, this defaults to: CCMP TKIP WEP104 WEP40
pairwise: list of accepted pairwise (unicast) ciphers for WPA
CCMP = AES in Counter mode with CBC-MAC [RFC 3610, IEEE 802.11i/D7.0]
TKIP = Temporal Key Integrity Protocol [IEEE 802.11i/D7.0]
NONE = Use only Group Keys (deprecated, should not be included if APs support pairwise keys)
proto: list of accepted protocols
WPA = WPA/IEEE 802.11i/D3.0
RSN = WPA2/IEEE 802.11i (also WPA2 can be used as an alias for RSN)
If not set, this defaults to: WPA RSN
key_mgmt: list of accepted authenticated key management protocols
WPA-PSK = WPA pre-shared key (this requires ‘psk’ field)
WPA-EAP = WPA using EAP authentication (this can use an external program, e.g., Xsupplicant, for IEEE 802.1X EAP Authentication
IEEE8021X = IEEE 802.1X using EAP authentication and (optionally) dynamically generated WEP keys
NONE = WPA is not used; plaintext or static WEP could be used
If not set, this defaults to: WPA-PSK WPA-EAP
Создаем хэш пароля для psk :
$ wpa_passphrase MYSSID passphrase
Все готово, чтобы создать конфиг сети. Итоговый файл должен выглядеть как-то так.
ctrl_interface_group=0 ap_scan=1 ctrl_interface=/var/run/wpa_supplicant network=
Верные значения для bssid , group , proto и pairwise можно определить, сканируя беспроводную сеть.
[root@home ~]$ iwlist scan
Команда iwlist из набора Wireless Tools устарела, вместо нее сейчас iw .
[root@home ~]$ iw dev scan
Настройка 802.1X для офиса
Стандарт IEEE 802.1X определяет более строгую модель подключения к WiFi сети. Вместо psk пароля необходимо предъявить серверный сертификат.
- ca_cert — Абсолютный путь к CA-сертификату в формате PEM или DER, необходим для возможности подтверждения сертификата сервера.
- ca_path — Абсолютный путь к директории, где хранятся файлы CA-сертификатов (в формате PEM), которые вы хотите добавить в список доверенных.
- client_cert — Абсолютный путь к клиентскому сертификату в формате PEM или DER.
- eap — Разделенный пробелами список поддерживаемых методов EAP: MD5, MSCHAPV2, OTP, GTC, TLS, PEAP, или TTLS.
- identity — Идентификации EAP, например имя пользователя.
- password — Пароль EAP.
Так может выглядеть блок, настроенный для подключения к сети в режиме WPA-Enterprise с аутентификацией 802.1X PEAP, в котором требуется ввод данных учетной записи пользователя:
network = < ssid="Company WPA2 EAP" key_mgmt=WPA-EAP pairwise=TKIP group=TKIP eap=PEAP identity="username@domain" password="your_passphrase" ca_cert="/etc/cert/ca.pem" phase1="peapver=0" phase2="MSCHAPV2" >
А это пример блока, настроенного для подключения к сети в режиме WPA-Enterprise с аутентификацией 802.1X EAP-TLS, в котором требуются серверный и клиентский сертификаты:
network = < ssid="Company WPA2 TLS" key_mgmt=WPA-EAP pairwise=CCMP group=CCMP eap=TLS ca_cert="/etc/cert/ca.pem" private_key="/etc/cert/privkey.p12" private_key_passwd="your_passphrase PKCS#12" >
Привязка wpa_supplicant к сетевой карте
Для Gentoo Linux надо добавить 2 строки в /etc/conf.d/net .
modules=( "wpa_supplicant" ) wpa_supplicant_wlan0="-Dnl80211"
Список поддерживаемых -D драйверов. Для современных чипов и версий ядра подойдет nl80211 . На старом железе может взлететь wext .
- nl80211 — New driver.
- wext — Linux wireless extensions (generic).
- wired — wpa_supplicant wired Ethernet driver.
- roboswitch — wpa_supplicant Broadcom switch driver.
- bsd — BSD 802.11 support (Atheros, etc.).
- ndis — Windows NDIS driver.
Сетевая карта wlan0 должна быть залинкована с lo0 .
lrwxrwxrwx 1 root root 6 ноя 29 2014 /etc/init.d/net.wlan0 -> net.lo
Следует также добавить wpa_supplicant в автозапуск.
[root@home ~]$ rc-update add wpa_supplicant default
Пользователи Debian добавляют запись в файл /etc/network/interfaces .
auto wlan0 iface wlan0 inet dhcp wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
Пользователи RedHat добавляют в /etc/sysconfig/wpa_supplicant
INTERFACES="-iwlan0"
а в файл /etc/sysconfig/network-scripts/ifcfg-wlan0
ESSID="home" NAME=wlan0 MODE=Managed KEY_MGMT=WPA-PSK TYPE=Wireless BOOTPROTO=dhcp DEFROUTE=yes ONBOOT=yes HWADDR=aa:bb:cc:dd:ee IPV6INIT=yes IPV6_AUTOCONF=yes
Отладка
После того как wpa_supplicant успешно подключилась к точке доступа, в dmesg можно увидеть протокол установки соединения.
[243960.587] cfg80211: World regulatory domain updated: [243960.587] cfg80211: DFS Master region: unset [243960.587] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp), (dfs_cac_time) [243960.587] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (N/A, 2000 mBm), (N/A) [243960.587] cfg80211: (2457000 KHz - 2482000 KHz @ 20000 KHz, 92000 KHz AUTO), (2000 mBm), (N/A) [243960.587] cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz), (N/A, 2000 mBm), (N/A) [243960.587] cfg80211: (5170000 KHz - 5250000 KHz @ 80000 KHz, 160000 KHz AUTO), (2000 mBm), (N/A) [243960.587] cfg80211: (5250000 KHz - 5330000 KHz @ 80000 KHz, 160000 KHz AUTO), (2000 mBm), (0 s) [243960.587] cfg80211: (5490000 KHz - 5730000 KHz @ 160000 KHz), (N/A, 2000 mBm), (0 s) [243960.587] cfg80211: (5735000 KHz - 5835000 KHz @ 80000 KHz), (N/A, 2000 mBm), [243960.587] cfg80211: (57240000 KHz - 63720000 KHz @ 2160000 KHz), (N/A, 0 mBm), [243963.070] wlan0: authenticate with aa:bb:cc:dd:ee [243963.075] wlan0: send auth to aa:bb:cc:dd:ee (try 1/3) [243963.077] wlan0: authenticated [243963.084] wlan0: associate with aa:bb:cc:dd:ee (try 1/3) [243963.088] wlan0: RX AssocResp from aa:bb:cc:dd:ee (capab=0x411 status=0 aid=3) [243963.090] wlan0: associated
Если же вместо этого вы увидите ошибку:
Successfully initialized wpa_supplicant nl80211: Driver does not support authentication/association or connect commands wlan0: Failed to initialize driver interface
то скорее всего, надо использовать драйвер wext вместо nl80211 . А с ошибкой:
WEXT: Driver did not support SIOCSIWAUTH for AUTH_ALG, trying SIOCSIWENCODE
наоборот, вместо wext надо подставить nl80211 .
В ситуации, когда вы не можете определить ошибку, запустите wpa_supllicant напрямую с ключем -dd .
[root@home ~]$ wpa_supplicant -Dnl80211 -iwlan0 -C/var/run/wpa_supplicant/ -c/etc/wpa_supplicant/wpa_supplicant.conf -dd
Использованные материалы
- WL18XX Linux WIreless Architecture
- Linux Kernel Wireless
- wpa_supplicant and wifi in RHEL 7
- Linux WPA Supplicant (IEEE 802.1X, WPA, WPA2, RSN, IEEE 802.11i)
- ↑ 4-way handshake
- ↑ Unicast and broadcast
Переводы страниц руководства
Беспроводные сети не требуют физического доступа к сетевому оборудованию таким же образом, что и проводные сети. Это упрощает неавторизованным пользователям пассивное наблюдение за сетью и перехват всех переданных кадров. В добавок, неавторизованное использование сети значительно проще. Во многих случаях, это может произойти без явного уведомления пользователя, поскольку беспроводной сетевой адаптер может быть настроен на автоматическое вхождение в любую доступную сеть.
Для обеспечения уровня безопасности беспроводных сетей можно воспользоваться шифрованием на уровне канала. Исходный стандарт беспроводных сетей IEEE 802.11 включает простой механизм шифрования WEP. Однако доказано, что он имеет недостатки во многих аспектах, а сети защищённые с помощью WEP не могут считаться безопасными. Для улучшения безопасности сети можно использовать аутентификацию IEEE 802.1X и часто меняемые динамические ключи WEP, но даже в этом случае можно ожидать унаследованных проблем, возникающих при использовании WEP для шифрования. Защищённый доступ Wi-Fi (WPA) и поправка IEEE 802.11i к стандарту беспроводной сети вводит хорошо улучшенный механизм безопасности беспроводных сетей. Сети, использующие IEEE 802.11i можно назвать действительно безопасными, поскольку при этом применяется CCMP (механизм шифрования основанный на сильном криптографическом алгоритме AES), который может обеспечить эффективную защиту от неавторизованного доступа тем приложениям, которые в ней нуждаются.
wpa_supplicant является компонентом просителя WPA, то есть той частью, которая запускается на стороне клиентской станции. wpa_supplicant осуществляет обмен данными с аутентификатором WPA и аутентификацией по протоколу EAP с сервером аутентификации. К тому же, wpa_supplicant контролирует переход между сетями (roaming) и аутентификацию/ассоциацию IEEE 802.11 в драйвере беспроводной локальной сети.
wpa_supplicant представляет собой «демон», программу которая запускается в фоновом режиме и действует в качестве служебного компонента, управляющего беспроводным соединением. wpa_supplicant поддерживает различные программы-оболочки, например текстовый wpa_cli, входящий в состав wpa_supplicant.
Перед тем, как wpa_supplicant сможет сделать свою работу, необходимо что бы сетевой интерфейс был доступен. Это означает, что физическое устройство должно быт присутствовать и быть включённым, а драйвер устройства должен быть загружен. Демон немедленно прекратит работу, если устройство ещё не доступно.
После того, как wpa_supplicant настроил сетевое устройство, могут быть запущены более высокоуровневые средства настройки, например DHCP. Существуют различные способы для встраивания wpa_supplicant в сценарии настройки сети компьютера, некоторые из которых описаны в разделе ниже.
Для ассоциирования с точкой доступа при помощи WPA используются следующие шаги:
| o | wpa_supplicant запрашивает драйвер ядра просканировать окружающие базовые станции (BSS) |
| o | wpa_supplicant выбирает базовую станцию (BSS) основываясь на её настройках |
| o | wpa_supplicant запрашивает драйвер ядра ассоциироваться с указанной выбранной базовой станцией (BSS) |
| o | Если WPA-EAP: встроенный проситель IEEE 802.1X завершает аутентификацию EAP на сервере аутентификации (ретранслируемом с помощью аутентификатора в точке доступа) |
| o | Если WPA-EAP: от просителя IEEE 802.1X принимается мастер-ключ |
| o | Если WPA-PSK: wpa_supplicant использует общий ключ PSK в качестве мастер-ключа сеанса |
| o | wpa_supplicant завершает четырёхэтапное рукопожатие WPA и рукопожатие группового ключа (Group Key Handshake) с аутентификатором точки доступа |
| o | wpa_supplicant настраивает ключи шифрования для направленного вещания и широковещания |
| o | могут передаваться и приниматься обычные пакеты данных |
ПОДДЕРЖИВАЕМЫЕ ВОЗМОЖНОСТИ
Список поддерживаемых возможностей WPA/IEEE 802.11i:
| o | WPA-PSK («WPA-Personal») |
| o | WPA с EAP (например, с сервером аутентификации RADIUS) («WPA-Enterprise») Просителем IEEE 802.1X поддерживаются следующие встроенные методы аутентификации: |
| o | EAP-PEAP/MSCHAPv2 (PEAPv0 и PEAPv1) |
| o | EAP-PEAP/TLS (PEAPv0 и PEAPv1) |
| o | EAP-PEAP/GTC (PEAPv0 и PEAPv1) |
| o | EAP-PEAP/OTP (PEAPv0 и PEAPv1) |
| o | EAP-PEAP/MD5-Challenge (PEAPv0 и PEAPv1) |
| o | EAP-TTLS/EAP-MD5-Challenge |
| o | EAP-TTLS/EAP-GTC |
| o | EAP-TTLS/EAP-OTP |
| o | EAP-TTLS/EAP-MSCHAPv2 |
| o | EAP-TTLS/EAP-TLS |
| o | EAP-TTLS/MSCHAPv2 |
| o | EAP-TTLS/MSCHAP |
| o | EAP-TTLS/PAP |
| o | EAP-TTLS/CHAP |
| o | EAP-SIM |
| o | EAP-AKA |
| o | EAP-PSK |
| o | EAP-PAX |
| o | LEAP (замечание: требует особой поддержки драйвером аутентификации IEEE 802.11) |
| o | (следующие методы поддерживаются, но они пока не порождают обмен ключевым материалом, они не могут использоваться для обмен ключами по WPA или IEEE 802.1X WEP) |
| o | EAP-MD5-Challenge |
| o | EAP-MSCHAPv2 |
| o | EAP-GTC |
| o | EAP-OTP |
| o | пре-аутентификация |
| o | кэширование PMKSA |
ДОСТУПНЫЕ ДРАЙВЕРЫ
Драйверы, доступные для указания в опции -D:Сводная информация по доступным драйверам приведена ниже. Поддержка каждого из драйверов выбирается во время сборки wpa_supplicant. Список поддерживаемых в вашей системе драйверов можно узнать с помощью опции -D, обратитесь к справочному выводу wpa_supplicant (wpa_supplicant -h).
| hostap | (по умолчанию) Ведущий драйвер точки доступа (Intersil Prism2/2.5/3). (Он также может использоваться совместно с загрузчиком драйвера Linuxant). |
| hermes | Драйвер Agere Systems Inc. (Hermes-I/Hermes-II). |
| madwifi | |
| Поддерживаемые MADWIFI 802.11 (Atheros, etc.). | |
| atmel | ATMEL AT76C5XXx (USB, PCMCIA). |
| wext | Беспроводные расширения Linux (обобщённый). |
| ndiswrapper | |
| Linux ndiswrapper. | |
| broadcom | |
| Драйвер Broadcom wl.o. | |
| ipw | Драйвер Intel ipw2100/2200. |
| wired | Проводной драйвер Ethernet wpa_supplicant |
| bsd | Поддерживаемые BSD 802.11 (Atheros, etc.). |
| ndis | Драйвер Windows NDIS. |
ОПЦИИ КОМАНДНОЙ СТРОКИ
Большинство опций командной строки имеют глобальную область действия. Некоторые относятся к интерфейсу, и они применимы только в том случае, если указана хотя бы одна опция -i, иначе они будут проигнорированы. Группы опций для разных интерфейсов могут разделяться опцией -N.
| -b интерфейс_моста | |
| Необязательное имя интерфейса моста. (Для интерфейса) | |
| -B | Запустить демона в фоновом режиме. |
| -c имя_файла | |
| Путь к файлу конфигурации. (Для интерфейса) | |
| -C ctrl_interface | |
| Путь к сокету управления_интерфейсом (используется только если -c отсутствует). | |
| -i имя_интерфейса | |
| Интерфейс для прослушивания. Можно указывать несколько экземпляров этой опции по одной для каждого интерфейса, разделённых опцией -N (смотри ниже). | |
| -d | Увеличивает подробность отладочных сообщений (-dd ещё больше). |
| -D драйвер | |
| Используемый драйвер. (На интерфейс, смотри доступные опции далее). | |
| -f выходной_файл | |
| Журналировать вывод в указанный файл, а не на стандартный вывод. | |
| -g глобальный_сокет_управления_интерфейсом | |
| Путь к глобальному_сокету_управления_интерфейсом. Если указано, определение интерфейса можно опустить. | |
| -K | Включать ключи (пароли и т.п.) в отладочный вывод. |
| -t | Включать отметки времени в отладочный вывод. |
| -h | Помощь. Показать справку по использованию. |
| -L | Показать лицензию (GPL и BSD). |
| -p | Параметры драйвера. (На интерфейс) |
| -P PID_файл | |
| Путь к файлу с идентификатором процесса. | |
| -q | Уменьшить подробность отладочных сообщений (-qq ещё меньше). |
| -u | Включить управляющий интерфейс DBus. Если включено, то определение интерфейса можно опустить. |
| -v | Показать версию. |
| -W | Ждать управляющий интерфейс перед запуском. |
| -N | Начать описание новых интерфейсов. |
ПРИМЕРЫ
В большинстве случаев wpa_supplicant запускается следующим образом:
wpa_supplicant -B -c/etc/wpa_supplicant.conf -iwlan0
Эта команда заставляет процесс ответвиться в фоновый режим.
Наилегчайший способ отладки проблем и получения журнала об ошибках для составления отчета об ошибке, заключается в запуске wpa_supplicant в фоновом режиме с включенным режимом отладки:
wpa_supplicant -c/etc/wpa_supplicant.conf -iwlan0 -d
wpa_supplicant может управлять несколькими (радио) интерфейсами, по одному запущенному процессу для каждого отдельного интерфейса или просто запуском одного процесса со списком опций в командной строке. Каждый интерфейс отделяется аргументом -N. Например, следующая командная строка запустит wpa_supplicant для двух интерфейсов:
wpa_supplicant -c wpa1.conf -i wlan0 -D hostap -N -c wpa2.conf -i ath0 -D madwifi
ТРЕБОВАНИЯ К ОПЕРАЦИОННОЙ СИСТЕМЕ
Текущие аппаратные/программные требования:
| o | ядро Linux 2.4.x или 2.6.x с беспроводными расширениями Linux v15 или новее |
| o | FreeBSD 6-CURRENT |
| o | Microsoft Windows с WinPcap (по меньшей мере WinXP, может работать с другими версиями) |
ПОДДЕРЖИВАЕМЫЕ ДРАЙВЕРЫ
| Драйвер точки доступа для Prism2/2.5/3 (снимок разрабатываемой версии/v0.2.x) | |
| (http://hostap.epitest.fi/) Драйвер должен быть настроен в режиме управления (iwconfig wlan0 mode managed). Отметим, что фирменное программное обеспечение компьютера должно иметь версию 1.7.0 или новее, чтобы работать в режиме WPA. | |
| Загрузчик драйвера Linuxant | |
| (http://www.linuxant.com/driverloader/) с драйвером Windows NDIS для вашей беспроводной сетевой карты, поддерживающим WPA. | |
| Agere Systems Inc. драйвер для Linux | |
| (http://www.agere.com/support/drivers/) Отметим, что файл интерфейса драйвера (driver_hermes.c) и аппаратно-зависимые файлы не включаются в комплект поставки wpa_supplicant. Вам может потребоваться скопировать их из пакета с исходными текстами драйвера Agere. | |
| Драйвер madwifi для карт, основанных на наборе микросхем Atheros (ar521x) | |
| (http://sourceforge.net/projects/madwifi/) Отметим, что вам потребуется изменить файл конфигурации wpa_supplicant, чтобы использовать правильный путь до корневого каталога драйвера madwifi (CFLAGS += -I../madwifi/wpa — строка в примере defconfig). | |
| Драйвер ATMEL AT76C5XXx для карт USB и PCMCIA | |
| (http://atmelwlandriver.sourceforge.net/). | |
| Linux ndiswrapper | |
| (http://ndiswrapper.sourceforge.net/) с драйвером Windows NDIS. | |
| Драйвер Broadcom wl.o | |
| Это обобщённый драйвер Linux для карт IEEE 802.11a/g. Однако, это собственнический драйвер, который не доступен общественности, исключая связанные с особыми обстоятельствами, главным образом с беспроводными маршрутизаторами и точками доступа на основе Broadcom, которые используют Linux. Драйвер в двоичном виде может быть скачан, например, с сайта поддержки Linksys (http://www.linksys.com/support/gpl.asp) для Linksys WRT54G. Архив GPL включает в себя кросс-компилятор и необходимый заголовочный файл wlioctl.h, для сборки wpa_supplicant. Этот драйвер поддерживает wpa_supplicant, ожидается что он будет работать также с другими устройствами, основанными на драйвере Broadcom (подразумевая, что драйвер содержит поддержку клиентского режима). | |
| Драйвер Intel ipw2100 | |
| (http://sourceforge.net/projects/ipw2100/) | |
| Драйвер Intel ipw2200 | |
| (http://sourceforge.net/projects/ipw2200/) | |
| Беспроводные расширения Linux | |
| Теоретически, любой драйвер, поддерживающий беспроводные расширения Linux может использоваться вместе с IEEE 802.1X (то есть, не WPA) при использовании опции ap_scan=0 в файле конфигурации. | |
| Проводные драйверы Ethernet | |
| Воспользуйтесь ap_scan=0. | |
| Слой BSD net80211 (например, драйвер Atheros) | |
| В настоящее время он доступен в ветке FreeBSD 6-CURRENT. | |
| Windows NDIS | |
| Текущий версия для Windows требует для работы WinPcap (http://winpcap.polito.it/). Обратитесь к README-Windows.txt за более подробной информацией. | |
wpa_supplicant был спроектирован пригодным для переноса на различные драйверы и операционные системы. Надеемся, что в будущем будет добавлена поддержка большего количество беспроводных карт и операционных систем. Обратитесь к developer.txt за более подробной информацией об архитектуре wpa_supplicant и о переносе на другие драйверы. Одной из главных целей было добавление полной поддержки WPA/WPA2 в беспроводные расширения Linux, с целью избежать реализации специального кода для взаимодействия между каждым новым драйвером и wpa_supplicant.
АРХИТЕКТУРА
Система wpa_supplicant состоит из следующих компонентов:
| wpa_supplicant.conf | |
| Файл конфигурации, описывающий все сети, к которым пользователь хочет подключать компьютер. | |
| wpa_supplicant | |
| Программа, которая напрямую взаимодействует с сетевым интерфейсом. | |
| wpa_cli | |
| Программа-клиент, которая предоставляет высокоуровневый интерфейс к функциям демона. | |
| wpa_passphrase | |
| Служебный инструмент, необходимый для создания файлов wpa_supplicant.conf, включающих зашифрованные пароли. | |
БЫСТРОЕ НАЧАЛО
Для начала, создайте файл конфигурации, например /etc/wpa_supplicant.conf, который описывает интересные вам сети. За более подробной информацией обратитесь к wpa_supplicant.conf(5).
Когда файл конфигурации готов, вы можете проверить работает ли он, запустив wpa_supplicant с помощью следующей команды, которая запустит его в интерактивном режиме со включенным режимом отладки:
wpa_supplicant -iwlan0 -c/etc/wpa_supplicant.conf -d
Если всё хорошо, вы можете выполнить следующую команду, которая запустит wpa_supplicant в фоновом режиме без отладки:
wpa_supplicant -iwlan0 -c/etc/wpa_supplicant.conf -B
Отметим, что если перед сборкой пакета вы указали более одного драйвера в файле конфигурации (.config), вам может потребоваться указать в командной строке опцию -D, для указания используемого интерфейса.
ИНТЕРФЕЙС К PCMCIA-CS/CARDMRG
Например, для включения поддержки WPA можно воспользоваться следующими небольшими изменениями в сценариях pcmcia-cs:
Добавить MODE=»Managed» и WPA=»y» в сетевую схему в /etc/pcmcia/wireless.opts.
Добавить следующий блок в конец обработчика действия start в /etc/pcmcia/wireless:
if [ "$WPA" = "y" -a -x /usr/local/bin/wpa_supplicant ]; then /usr/local/bin/wpa_supplicant -B -c/etc/wpa_supplicant.conf -i$DEVICE fi
Добавить следующий блок в конец обработчика действия stop (может потребоваться отделение от других действий) в /etc/pcmcia/wireless:
if [ "$WPA" = "y" -a -x /usr/local/bin/wpa_supplicant ]; then killall wpa_supplicant fi
Это заставит cardmgr запускать wpa_supplicant при подключении карты.
СМОТРИ ТАКЖЕ
wpa_background(8) wpa_supplicant.conf(5) wpa_cli(8) wpa_passphrase(8)
ПРАВА
wpa_supplicant Copyright © 2003-2007, Джуни Мэлайнен (Jouni Malinen) и вкладчики. Все права защищены.
Эта программа распространяется под двумя лицензиями: GPL версии 2 и лицензией BSD. Любая из лицензий может использоваться на ваш выбор.
АВТОРЫ ПЕРЕВОДА
Перевод выполнен на сайте коллективных переводов http://translated.by. Авторы перевода Олег Безначев aka saturn721, Владимир Ступин , alexanderyt.
| WPA_SUPPLICANT (8) | 02 декабря 2008 |
Перейти в начало страницы | Раздел 8 | Главный указатель.
Сгенерировано manServer 1.07 из /home/stupin/man/man8/wpa_supplicant.8.gz с использованием макросов man.
wpa_supplicant
wpa_supplicant — это Wi-Fi-проситель для обработки аутентификации части управления сетью, дополнительно он также может поднимать сетевые интерфейсы.
- 1 Установка
- 1.1 USE-флаги
- 1.2 Emerge
- 2.1 Quick Connect
- 2.2 Connection for two interfaces
- 3.1 Файлы
- 3.1.1 Настройка для беспроводного интерфейса
- 3.1.2 Setup for wireless interface
- 3.1.3 WPA2 с wpa_supplicant
- 3.1.4 Configuration file with dynamic WEP keys
- 3.1.5 Allows more or less all configuration modes
- 3.1.6 Настройка проводного 802.1X
- 4.1 Настройка с dhcpcd в качестве менеджера сетей
- 4.1.1 Using OpenRC
- 4.1.2 Using Systemd
- 5.1 Использование wpa_gui
- 5.2 Использование wpa_cli
- 5.3 Редактирование вручную
- 5.3.1 Автоматическое подключение к любой незащищённой сети
- 6.1 Проверьте среди известных ошибок
- 6.2 rfkill: WLAN soft blocked
- 6.3 Запустите wpa_supplicant в режиме отладки
- 6.4 Включение журналирования
- 6.4.1 Включение журналирования для Gentoo сценариев net.*
Установка
В качестве предварительного условия в ядре должна быть активирована поддержка беспроводных сетей, как описано в IEEE 802.11, а также необходимых драйверов беспроводных адаптеров [1] .
USE-флаги
USE flags for net-wireless/wpa_supplicant IEEE 802.1X/WPA supplicant for secure wireless transfers
ap Add support for access point mode broadcom-sta Flag to help users disable features not supported by broadcom-sta driver dbus Enable dbus support for anything that needs it (gpsd, gnomemeeting, etc) eap-sim Add support for EAP-SIM authentication algorithm eapol-test Build and install eapol_test binary fasteap Add support for FAST-EAP authentication algorithm fils Add support for Fast Initial Link Setup (802.11ai) hs2-0 Add support for 802.11u and Passpoint for HotSpot 2.0 macsec Add support for wired macsec mbo Add support Multiband Operation mesh Add support for mesh mode p2p Add support for Wi-Fi Direct mode privsep Enable wpa_priv privledge separation binary ps3 Add support for ps3 hypervisor driven gelic wifi qt5 Add support for the Qt 5 application and UI framework readline Enable support for libreadline, a GNU line-editing library that almost everyone wants selinux !!internal use only!! Security Enhanced Linux support, this must be set by the selinux profile or breakage will occur smartcard Add support for smartcards tdls Add support for Tunneled Direct Link Setup (802.11z) tkip Add support for WPA TKIP (deprecated due to security flaws in 2009) uncommon-eap-types Add support for GPSK, SAKE, GPSK_SHA256, IKEV2 and EKE wep Add support for Wired Equivalent Privacy (deprecated due to security flaws in 2004) wimax Add support for Wimax EAP-PEER authentication algorithm wps Add support for Wi-Fi Protected Setup Emerge
После просмотра USE-флагов установите net-wireless/wpa_supplicant , используя команду Portage emerge :
root # emerge —ask net-wireless/wpa_supplicant
Direct connect
Quick Connect
Предупреждение
To not store any clear text password in history, history is disabled. This should be used temporarily to test that it is possible to connect to the access point.root # set +o history
root # wpa_supplicant -i wlp0s20f3 -c <(wpa_passphrase ssid password) & root # set -o history Заметка
Process output when connect direct: ‘wpa_supplicant -iwlan0 -c /dev/fd/63Connection for two interfaces
wpa_supplicant can control multiple interfaces (radios) either by running one process for each interface separately or by running just one process and list of options at command line. Each interface is separated with -N argument. Following command would start wpa_supplicant for two interfaces
user $ wpa_supplicant -c wpa1.conf -i wlan0 -D nl80211 -N -c wpa2.conf -i ath0 -D wext
Настройка
Файлы
Настройка для беспроводного интерфейса
wpa_supplicant includes a tool to quickly write a network block from the command line for pre-shared key (WPA-PSK aka password) networks, wpa_passphrase .
root # wpa_passphrase ssid password >> /etc/wpa_supplicant/wpa_supplicant.conf
Заметка
When password is stored as hash instead of clear text it is required to add key_MGMT=WPA-EAP and eap=PEAP to the configuration file that is not generated by defaultSetup for wireless interface
Для использования с единственным беспроводным интерфейсом требуется всего один конфигурационный файл.
ФАЙЛ /etc/wpa_supplicant/wpa_supplicant.conf
# Позволять пользователям из группы 'wheel' контролировать wpa_supplicant ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel # Разрешить wpa_gui / wpa_cli запись в файл update_config=1
Чтобы разрешить непривилегированным пользователям управлять соединением с использованием wpa_gui / wpa_cli , убедитесь, что пользователи добавлены в группу wheel .
Этот файл по умолчанию не существует; хорошо документированный шаблонный файл конфигурации может быть скопирован из /usr/share/doc/$/wpa_supplicant.conf.bz2 , где значение переменной P – название и версия установленного в данный момент wpa_supplicant:
root # bzless /usr/share/doc/$
/wpa_supplicant.conf.bz2 > /etc/wpa_supplicant/wpa_supplicant.conf
WPA2 с wpa_supplicant
Подключение к любой точке доступа с YourSSID
ФАЙЛ /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel #ap_scan=0 #update_config=1 network= ssid="YourSSID" psk="your-secret-key" scan_ssid=1 proto=RSN key_mgmt=WPA-PSK group=CCMP TKIP pairwise=CCMP TKIP priority=5 >
Configuration file with dynamic WEP keys
ФАЙЛ /etc/wpa_supplicant/wpa_supplicant_wired.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel network= ssid="1x-test" scan_ssid=1 key_mgmt=IEEE8021X eap=TLS identity="user@example.com" ca_cert="/etc/cert/ca.pem" client_cert="/etc/cert/user.pem" private_key="/etc/cert/user.prv" private_key_passwd="password" eapol_flags=3 >
Allows more or less all configuration modes
Предупреждение
The configuration options are used based on what security policy is used in the selected SSID. This is mostly for testing and is not recommended for normal useФАЙЛ /etc/wpa_supplicant/wpa_supplicant_wired.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel network= ssid="example" scan_ssid=1 key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONE pairwise=CCMP TKIP group=CCMP TKIP WEP104 WEP40 psk="very secret passphrase" eap=TTLS PEAP TLS identity="user@example.com" password="foobar" ca_cert="/etc/cert/ca.pem" client_cert="/etc/cert/user.pem" private_key="/etc/cert/user.prv" private_key_passwd="password" phase1="peaplabel=0" ca_cert2="/etc/cert/ca2.pem" client_cert2="/etc/cer/user.pem" private_key2="/etc/cer/user.prv" private_key2_passwd="password" >
Настройка проводного 802.1X
Проводные соединения также можно обрабатывать с помощью wpa_supplicant, что полезно для сетей 802.1X. Создайте отдельный конфигурационный файл, содержащий настройки проводной сети. Пример ниже использует сертификаты для аутентификации, проверьте примеры других методов в man-странице wpa_supplicant.conf.
Заметка
This can be used with wired or roboswitch interface (-Dwired or -Droboswitch on command line)
ФАЙЛ /etc/wpa_supplicant/wpa_supplicant_wired.confctrl_interface=/var/run/wpa_supplicant eapol_version=1 ap_scan=0 fast_reauth=1 network= key_mgmt=IEEE8021X eap=TLS identity="COMPUTERAACT$@DOMAIN" ca_cert="/etc/wpa_supplicant/ca.pem" client_cert="/etc/wpa_supplicant/COMPUTERACCT.pem" private_key="/etc/wpa_supplicant/COMPUTERAACT.key" private_key_passwd="secret_password" eapol_flags=0 >
Так как конфигурационный файл содержит конфиденциальную информацию, установите соответствующий режим.
root # chmod 600 /etc/wpa_supplicant/wpa_supplicant_wired.conf
wpa_supplicant требует нескольких дополнительных параметров, чтобы применить вышеописанную конфигурацию к проводному интерфейсу (eth0) Учтите, что приведённые ниже аргументы wpa_supplicant подразумевают, что версия wpa_supplicant >=2.6-r2 (-M, CONFIG_MATCH_IFACE=y)
ФАЙЛ /etc/conf.d/wpa_supplicant
wpa_supplicant_args="-ieth0 -Dwired -c/etc/wpa_supplicant/wpa_supplicant_wired.conf -M -c/etc/wpa_supplicant/wpa_supplicant.conf"
Позвольте wpa_supplicant обрабатывать запуск/остановку интерфейсов удалением их из /etc/init.d и активацией службы wpa_supplicant
root # /etc/init.d/net.eth0 stop
root # /etc/init.d/net.wlan0 stop
root # rm /etc/init.d/net.wlan0 /etc/init.d/net.eth0
root # rc-update add wpa_supplicant
root # /etc/init.d/wpa_supplicant startПроверьте статус проводного интерфейса через wpa_cli
Connect directly to the wireless access point from the command line
root # wpa_cli
wpa_cli v2.8 Copyright (c) 2004-2019, Jouni Malinen and contributors This software may be distributed under the terms of the BSD license. See README for more details. Selected interface 'p2p-dev-wlan0' Interactive mode > interface eth0 Connected to interface 'eth0. > status bssid=00:00:00:00:00:00 freq=0 ssid= id=0 mode=station pairwise_cipher=NONE group_cipher=NONE key_mgmt=IEEE 802.1X (no WPA) wpa_state=COMPLETED ip_address=10.10.10.100 p2p_device_address=bb:bb:bb:bb:bb:bb address=aa:aa:aa:aa:aa:aa Supplicant PAE state=AUTHENTICATED suppPortStatus=Authorized EAP state=SUCCESS selectedMethod=13 (EAP-TLS) eap_tls_version=TLSv1 EAP TLS cipher=ECDHE-RSA-AES256-SHA .
Настройка сетевого менеджера
Важно
Приложения, перечисленные в списке Network management, обычно не работают вместе. Убедитесь, что одновременно запущен только один из этих сервисов. Запуск более одного сервиса управления сетью приведёт к непредсказуемым результатам!Убедитесь, что выбрали соответствующую установку.
Настройка с dhcpcd в качестве менеджера сетей
First follow the setup guide for dhcpcd.
Emerge wpa_supplicant (Version >=2.6-r2 is needed in order to get the CONFIG_MATCH_IFACE option added in April 2017):
root # emerge —ask net-wireless/wpa_supplicant
Using OpenRC
Complete its conf.d file with the -M option for the wireless network interface:
ФАЙЛ /etc/conf.d/wpa_supplicant
wpa_supplicant_args="-B -M -c/etc/wpa_supplicant/wpa_supplicant.conf"
In case authentication for the wired interface is needed, this configuration file should look like:
ФАЙЛ /etc/conf.d/wpa_supplicant
wpa_supplicant_args="-ieth0 -Dwired -c/etc/wpa_supplicant/wpa_supplicant_wired.conf -B -M -c/etc/wpa_supplicant/wpa_supplicant.conf"
With the configuration done, run it as a service:
root # rc-update add wpa_supplicant default
root # rc-service wpa_supplicant startUsing Systemd
Systemd allows a simpler per-device setup without needing to create the above conf.d files. As explained under wpa_supplicant item in the Native services section, a service symlink such as wpa_supplicant@wlan0.service looks for a separate configuration file to manage the device wlan0 in this case.
To configure a specific device this way, first copy or rename the /etc/wpa_supplicant/wpa_supplicant.conf file as /etc/wpa_supplicant/wpa_supplicant-DEVNAME.conf where DEVNAME should be the name of the device, such as wlan0 .
Then, navigate to /etc/systemd/system/multi-user.target.wants and create the symlink:
root # ln -s /lib/systemd/system/wpa_supplicant@.service wpa_supplicant@DEVNAME.service
where DEVNAME is same device name as in the conf file above.
Важно
Note the @ signs on both arguments in the symlink step.Test the system:
root # systemctl daemon-reload
root # systemctl start wpa_supplicant@DEVNAME
root # systemctl status wpa_supplicant@DEVNAMEВ случае если необходим устаревающий драйвер WEXT, изменение драйвера может помочь решить проблемы, когда адаптер подключается и тут же отключается по причине 3. Выполните wpa_supplicant -h , чтобы увидеть список доступных драйверов, которые были встроены во время компиляции.
ФАЙЛ /etc/conf.d/wpa_supplicant Настройка драйвера для wext
wpa_supplicant_args="-D wext"
Настройка со сценариями Gentoo net.*
Укажите сетевым сценариям использовать wpa_supplicant:
ФАЙЛ /etc/conf.d/net
modules_wlan0="wpa_supplicant" config_wlan0="dhcp"
Хорошая идея после последующей настройки изменить права доступа, чтобы быть уверенным в том, что WiFi пароли не могут быть просмотрены в открытом виде всеми, кто использует компьютер: [2]
root # chmod 600 /etc/wpa_supplicant/wpa_supplicant.conf
Setup for NetworkManager
NetworkManager configured with wpa_supplicant as WiFi backend is able to use D-Bus to start wpa_supplicant when needed. Therefore it is recommended to keep the wpa_supplicant service itself stopped at boot time.
Использование
Использование wpa_gui
Самый простой способ использовать wpa_supplicant – через его графический интерфейс wpa_gui . Чтобы включить его, соберите wpa_supplicant с USE-флагом qt5 .
Использование wpa_cli
Wpa_supplicant также имеет интерфейс командной строки. Ввод wpa_cli запускает его в интерактивном режиме с дополнением по tab. Ввод help в командной строке отобразит список всех доступных команд (нажмите «развернуть», чтобы увидеть ниже вывод команды wpa_cli ):
user $ wpa_cli
wpa_cli v2.5 Copyright (c) 2004-2015, Jouni Malinen and contributors This software may be distributed under the terms of the BSD license. See README for more details. Selected interface 'wlan0' Interactive mode > scan OK > scan_results bssid / frequency / signal level / flags / ssid 01:23:45:67:89:ab 2437 0 [WPA-PSK-CCMP+TKIP][WPA2-PSK-CCMP+TKIP][ESS] hotel-free-wifi > add_network 0 > set_network 0 ssid "hotel-free-wifi" OK > set_network 0 psk "password" OK > enable_network 0 OK CTRL-EVENT-SCAN-RESULTS WPS-AP-AVAILABLE Trying to associate with 01:23:45:67:89:ab (SSID='hotel-free-wifi' freq=2437 MHz) Associated with 01:23:45:67:89:ab WPA: Key negotiation completed with 01:23:45:67:89:ab [PTK=CCMP GTK=TKIP] CTRL-EVENT-CONNECTED - Connection to 01:23:45:67:89:ab completed [id=0 id_str=] > save_config OK > quit
For switching to another Wi-Fi:
user $ wpa_cli
wpa_cli v2.5 Copyright (c) 2004-2015, Jouni Malinen and contributors This software may be distributed under the terms of the BSD license. See README for more details. > list_networks network id / ssid / bssid / flags 0 TAMO any 1 ORBI705 any 2 ORBI any 3 Tangerine any 4 271 any 5 POCO X3 Pro any 6 Orbi Guest any 7 hackerspace any 8 HUAWEI-25 a-2 any 9 A1-13 any > select_network 1
Подробнее о том, как подключиться, можно найти в Arch Linux wiki. [3]
Редактирование вручную
Конечно, конфигурационный файл /etc/wpa_supplicant/wpa_supplicant.conf может быть также отредактирован вручную. Однако, это может быть очень утомительно, если компьютер должен подключаться ко множеству различных точек доступа.
Примеры можно найти в man 5 wpa_supplicant.conf и /usr/share/doc/wpa_supplicant-2.4-r3/wpa_supplicant.conf.bz2 .
ФАЙЛ /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel ap_scan=1 network= bssid=00:50:17:31:1a:11 ssid="YourSSID" psk="your-secret-key" scan_ssid=1 proto=RSN key_mgmt=WPA-PSK group=CCMP TKIP pairwise=CCMP TKIP priority=5 >
Автоматическое подключение к любой незащищённой сети
ФАЙЛ /etc/wpa_supplicant/wpa_supplicant.conf
network= key_mgmt=NONE priority=-999 >
Устранение проблем
В случае если это не работает как ожидалось, попробуйте что-нибудь из перечисленного ниже и проанализируйте вывод.
Проверьте среди известных ошибок
- Gentoo bugtracker: known bugs
- Архив списков рассылки разработчиков wpa_supplicant
rfkill: WLAN soft blocked
If rfkill is blocking the interface, first find the interface number with:
user $ rfkill list
0: ideapad_wlan: Wireless LAN Soft blocked: yes Hard blocked: no 1: ideapad_bluetooth: Bluetooth Soft blocked: yes Hard blocked: no 2: hci0: Bluetooth Soft blocked: yes Hard blocked: no 3: phy0: Wireless LAN Soft blocked: yes Hard blocked: no
Then the interface can be unblocked with:
root # rfkill unblock 3
Запустите wpa_supplicant в режиме отладки
Убедитесь, что остановлены все запущенные процессы wpa_supplicant:
root # killall wpa_supplicant
Что-либо наподобие этого может быть использовано для отладки (нажмите «развернуть», чтобы посмотреть вывод ниже):
root # wpa_supplicant -Dnl80211 -iwlan0 -C/var/run/wpa_supplicant/ -c/etc/wpa_supplicant/wpa_supplicant.conf -dd
wpa_supplicant v2.2 random: Trying to read entropy from /dev/random Successfully initialized wpa_supplicant Initializing interface 'wlp8s0' conf '/etc/wpa_supplicant/wpa_supplicant.conf' driver 'nl80211' ctrl_interface '/var/run/wpa_supplicant' bridge 'N/A' Configuration file '/etc/wpa_supplicant/wpa_supplicant.conf' -> '/etc/wpa_supplicant/wpa_supplicant.conf' Reading configuration file '/etc/wpa_supplicant/wpa_supplicant.conf' ctrl_interface='DIR=/var/run/wpa_supplicant GROUP=wheel' update_config=1 Line: 6 - start of a new network block
Включение журналирования
Включение журналирования для Gentoo сценариев net.*
ФАЙЛ /etc/conf.d/net для использования с Настройкой со сценариями Gentoo net.*
modules_wlan0="wpa_supplicant" wpa_supplicant_wlan0="-Dnl80211 -d -f /var/log/wpa_supplicant.log" config_wlan0="dhcp"
Теперь из одного терминала запустите команду tail , чтобы отслеживать вывод, и перезапустите устройство net.wlan0 в другом терминале:
root # tail -f /var/log/wpa_supplicant.log
root # /etc/init.d/net.wlan0 restartСсылки
- ↑bug #623014
- ↑bug #264000
- ↑https://wiki.archlinux.org/index.php/WPA_supplicant#Connecting_with_wpa_cli
Переводы страниц руководства
wpa_supplicant настраивается с помощью текстового файла, который перечисляет все разрешенные сети и политики безопасности, включая общие (pre-shared) ключи. Обратитесь к примеру файла конфигурации, возможно в /usr/share/doc/wpa_supplicant/, за подробной информацией по формату конфигурации и поддерживаемым полям.
Все пути в файле конфигурации должны быть полными путями (абсолютными, не связанными с рабочим каталогом), чтобы была возможность изменить рабочий каталог. Это может произойти, если wpa_supplicant запущен в фоновом режиме.
Изменения в файле конфигурации могут быть перезагружены отправкой сигнала SIGHUP процессу wpa_supplicant (’killall -HUP wpa_supplicant’). Так же, перезагрузка может быть запрошена с помощью команды wpa_cli reconfigure.
Файл конфигурации может включать один или более блоков network, то есть, по одному для каждого используемого SSID. wpa_supplicant автоматически выберет лучшую сеть, основываясь на порядке блоков network в файле конфигурации, уровне безопасности сети (предпочитаются WPA/WPA2), и мощности сигнала.
КОРОТКИЕ ПРИМЕРЫ
# разрешить использование оболочки (т. е., wpa_cli) всеми пользователями из группы ’wheel’ ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel # # домашняя сеть; разрешить все действительные шифры network= < ssid="home" scan_ssid=1 key_mgmt=WPA-PSK psk="very secret passphrase" ># # рабочая сеть; использовать EAP-TLS с WPA; разрешить только шифры CCMP и TKIP network=< ssid="work" scan_ssid=1 key_mgmt=WPA-EAP pairwise=CCMP TKIP group=CCMP TKIP eap=TLS identity mailto:user@example.com">user@example.com" ca_cert="/etc/cert/ca.pem" client_cert="/etc/cert/user.pem" private_key="/etc/cert/user.prv" private_key_passwd="password" >
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel network=< ssid="example" scan_ssid=1 key_mgmt=WPA-EAP eap=PEAP identity mailto:user@example.com">user@example.com" password="foobar" ca_cert="/etc/cert/ca.pem" phase1="peaplabel=0" phase2="auth=MSCHAPV2" >
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel network=< ssid="example" scan_ssid=1 key_mgmt=WPA-EAP eap=TTLS identity mailto:user@example.com">user@example.com" anonymous_identity mailto:anonymous@example.com">anonymous@example.com" password="foobar" ca_cert="/etc/cert/ca.pem" phase2="auth=MD5" >
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel network=< ssid="1x-test" scan_ssid=1 key_mgmt=IEEE8021X eap=TLS identity mailto:user@example.com">user@example.com" ca_cert="/etc/cert/ca.pem" client_cert="/etc/cert/user.pem" private_key="/etc/cert/user.prv" private_key_passwd="password" eapol_flags=3 >
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel network=< ssid="example" scan_ssid=1 key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONE pairwise=CCMP TKIP group=CCMP TKIP WEP104 WEP40 psk="very secret passphrase" # очень секретная ключевая фраза eap=TTLS PEAP TLS identity mailto:user@example.com">user@example.com" password="foobar" ca_cert="/etc/cert/ca.pem" client_cert="/etc/cert/user.pem" private_key="/etc/cert/user.prv" private_key_passwd="password" phase1="peaplabel=0" ca_cert2="/etc/cert/ca2.pem" client_cert2="/etc/cer/user.pem" private_key2="/etc/cer/user.prv" private_key2_passwd="password" >
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel ap_scan=0 network=
СЕРТИФИКАТЫ
Некоторые методы аутентификации EAP требуют использования сертификатов. EAP-TLS использует сертификат сервера и сертификат клиента, в то время как EAP-PEAP и EAP-TTLS требуют только сертификат сервера. При использовании сертификата клиента, соответствующий тайный файл ключа должен быть также указан в настройках. Если тайный ключ использует ключевую фразу, она должна быть настроена в wpa_supplicant.conf («private_key_passwd»).
wpa_supplicant поддерживает сертификаты X.509 в форматах PEM и DER. Сертификат пользователя и тайный ключ могут находиться в одном и том же файле.
Если сертификат пользователя и тайный ключ получены в формате PKCS#12/PFX, их нужно сконвертировать в формат PEM/DER, подходящий для wpa_supplicant. Это может быть сделано, например, следующими командами:
# преобразование сертификата клиента и тайного ключа в формат PEM openssl pkcs12 -in example.pfx -out user.pem -clcerts # преобразование сертификата CA (если имеется в файле PFX) в формат PEM openssl pkcs12 -in example.pfx -out ca.pem -cacerts -nokeys
СМОТРИ ТАКЖЕ
АВТОРЫ ПЕРЕВОДА
Перевод выполнен на сайте коллективных переводов http://translated.by. Авторы перевода Олег Безначев aka saturn721, Владимир Ступин .
WPA_SUPPLICANT.CONF (5) 02 декабря 2008 Перейти в начало страницы | Раздел 5 | Главный указатель.
Сгенерировано manServer 1.07 из /home/stupin/man/man5/wpa_supplicant.conf.5.gz с использованием макросов man.