wpa_supplicant

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Wpa supplicant and the translation is 95% complete.
Outdated translations are marked like this.
Other languages:

wpa_supplicant – это wifi-проситель для обработки сетевой аутентификации.

Установка

В качестве предварительного условия в ядре должна быть активирована поддержка беспроводных сетей, как описано в Wifi/IEEE_802.11/ru, а также необходимых драйверов беспроводных адаптеров.[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
crda Use net-wireless/crda for regulatory domain loading instead of in-kernel (4.15+) support
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

Настройка

Файлы

Настройка для беспроводного интерфейса

Для использования с единственным беспроводным интерфейсом требуется всего один конфигурационный файл.

ФАЙЛ /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/${P}/wpa_supplicant.conf.bz2, где значение переменной P – название и версия установленного в данный момент wpa_supplicant:

root #bzless /usr/share/doc/${P}/wpa_supplicant.conf.bz2 > /etc/wpa_supplicant/wpa_supplicant.conf

Настройка проводного 802.1X

Проводные соединения также можно обрабатывать с помощью wpa_supplicant, что полезно для сетей 802.1X. Создайте отдельный конфигурационный файл, содержащий настройки проводной сети. Пример ниже использует сертификаты для аутентификации, проверьте примеры других методов в man-странице wpa_supplicant.conf.

ФАЙЛ /etc/wpa_supplicant/wpa_supplicant_wired.conf
ctrl_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

root #wpa_cli
wpa_cli v2.8
Copyright (c) 2004-2019, Jouni Malinen <j@w1.fi> 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 start

Using 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 <j@w1.fi> 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
 <3>CTRL-EVENT-SCAN-RESULTS 
 <3>WPS-AP-AVAILABLE 
 <3>Trying to associate with 01:23:45:67:89:ab (SSID='hotel-free-wifi' freq=2437 MHz)
 <3>Associated with 01:23:45:67:89:ab
 <3>WPA: Key negotiation completed with 01:23:45:67:89:ab [PTK=CCMP GTK=TKIP]
 <3>CTRL-EVENT-CONNECTED - Connection to 01:23:45:67:89:ab completed [id=0 id_str=]
 > save_config 
 OK
 > quit

Подробнее о том, как подключиться, можно найти в Arch Linux wiki.[3]

Использование wpa_passphrase

wpa_supplicant включает в себя инструмент для быстрой записи блока network из командной строки для сетей с предварительным ключом (также известных как WPA-PSK или сети с паролем): wpa_passphrase.

root #wpa_passphrase <ssid> [passphrase]

SSID необходим. Если пропустить парольную фразу, её можно будет ввести, когда она будет запрошена.

Получившийся вывод может быть затем скопирован или направлен в /etc/wpa_supplicant/wpa_supplicant.conf.

Редактирование вручную

Конечно, конфигурационный файл /etc/wpa_supplicant/wpa_supplicant.conf может быть также отредактирован вручную. Однако, это может быть очень утомительно, если компьютер должен подключаться ко множеству различных точек доступа.

Примеры можно найти в man 5 wpa_supplicant.conf и /usr/share/doc/wpa_supplicant-2.4-r3/wpa_supplicant.conf.bz2.

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
}

Используйте bssid для указания точки доступа, к которой следует подключиться, по её MAC-адресу в случае, если есть повторители. Не забывайте воспользоваться wpa_passphrase <ssid> [passphrase] для создания psk

ФАЙЛ /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
}

Устранение проблем

В случае если это не работает как ожидалось, попробуйте что-нибудь из перечисленного ниже и проанализируйте вывод.

Проверьте среди известных ошибок

Запустите 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

Ссылки

Смотрите также

  • Iwd — an up-and-coming wireless daemon for Linux..

Внешние ресурсы