WPA supplicant (Русский)
wpa_supplicant — кроссплатформенный суппликант с поддержкой WEP, WPA и WPA2 (IEEE 802.11i / RSN (Robust Secure Network, надежная защищенная сеть)). Он подходит для настольных компьютеров, ноутбуков и встраиваемых систем.
wpa_supplicant является реализацией компонента IEEE 802.1X/WPA Supplicant, который используется на клиентских машинах. Он реализует согласование ключей шифрования с аутентификатором WPA (WPA Authenticator), аутентификацию EAP с сервером аутентификации (Authentication Server), а также управляет роумингом и выполняет сопряжение адаптера с беспроводной сетью.
Contents
Установка
Установите пакет wpa_supplicant, доступный в официальных репозиториях.
Также вы можете установить wpa_supplicant_guiAUR, который предоставляет wpa_gui – графическую оболочку для wpa_supplicant.
Обзор
При установке соединения с зашифрованной беспроводной сетью wpa_supplicant проходит аутентификацию у аутентификатора WPA. Для успешного завершения этого процесса wpa_supplicant должен быть настроен так, чтобы иметь возможность передать правильный закрытый ключ сети аутентификатору.
После успешного завершения процесса аутентификации необходимо установить IP-адрес сетевого интерфейса вручную с помощью утилит iproute2, либо автоматически, например с systemd-networkd или dhcpcd (Русский) для настройки автоматического получения IP через DHCP. Как только сетевому интерфейсу будет присвоен IP-адрес, станет возможо получить доступ к сети через беспроводное соединение.
Методы и примеры вы также сможете найти на страницах по беспроводной и проводной настройке сети.
Подключение при помощи wpa_cli
Этот метод позволяет выполнить сканирование для поиска окружающих сетей, используя wpa_cli – утилиту командной строки, которая может быть использована для интерактивной настройки запущенного wpa_supplicant. Смотрите wpa_cli(8) для получения дополнительной информации.
Чтобы использовать wpa_cli, для wpa_supplicant должен быть указан контрольный интерфейс (файл сокета), и ему должны быть даны права на обновление файла настроек. Сделать это можно создав минимальный файл настроек:
/etc/wpa_supplicant/example.conf
ctrl_interface=/run/wpa_supplicant update_config=1
Теперь запустите wpa_supplicant командой:
# wpa_supplicant -B -i имя_интерфейса -c /etc/wpa_supplicant/example.conf
где имя_интерфейса – имя вашего беспроводного сетевого интерфейса.
Теперь запустите wpa_cli:
# wpa_cli
Будет отображено приглашение для ввода команд (>
), где вы можете использовать автодополнение по Tab
и получать описание для дополняемых команд.
Используйте команды scan
и scan_results
для сканирования доступных беспроводных сетей:
> scan OK <3>CTRL-EVENT-SCAN-RESULTS > scan_results bssid / frequency / signal level / flags / ssid 00:00:00:00:00:00 2462 -49 [WPA2-PSK-CCMP][ESS] MYSSID 11:11:11:11:11:11 2437 -64 [WPA2-PSK-CCMP][ESS] ANOTHERSSID
Чтобы подключиться к сети MYSSID
, добавьте новую сеть (add_network
), укажите ее идентификатор (ssid) и пароль для доступа к сети (set_network
), затем включите ее (enable_network
):
> add_network 0 > set_network 0 ssid "MYSSID" > set_network 0 psk "passphrase" > enable_network 0 <2>CTRL-EVENT-CONNECTED – Connection to 00:00:00:00:00:00 completed (reauth) [id=0 id_str=]
Теперь сохраните внесенные изменения в файл настроек:
> save_config OK
Как только сопряжение с сетью будет выполнено, все, что останется сделать – получить IP адрес, как было указано в разделе #Обзор, например:
# dhcpcd имя_интерфейса
Подключение при помощи wpa_passphrase
Этот метод позволяет быстро соединиться с сетью, SSID которой известен, используя wpa_passphrase – утилиту командной строки, которая генерирует текст минимальной необходимой конфигурации для wpa_supplicant. Пример:
$ wpa_passphrase MYSSID passphrase
network={ ssid="MYSSID" #psk="passphrase" psk=59e0d07fa4c7741797a4e394f38a5c321e3bed51d54ad5fcbd3f84bc7415d73d }
Так как текст попадает в стандартный вывод, вы можете сразу вызвать wpa_supplicant, передавая ему настройки:
# wpa_supplicant -B -i имя_интерфейса -c <(wpa_passphrase MYSSID passphrase)
Как только сопряжение с сетью будет выполнено, вам останется получить IP адрес, как было указано в разделе #Обзор, например:
# dhcpcd имя_интерфейса
Расширенное использование
Для более сложных сетей, например, широко практикующих использование EAP, будет необходимо вручную настроить wpa_supplicant. На странице wpa_supplicant.conf(5) вы можете найти описание структуры и содержимого файла настроек и примеры файлов; более детальное описание всех опций вы можете найти в файле /etc/wpa_supplicant/wpa_supplicant.conf
.
Настройка
Как уже было сказано в разделе #Подключение при помощи wpa_passphrase, минимальная конфигурация может быть создана при помощи команды:
# wpa_passphrase SSID_сети парольная_фраза > /etc/wpa_supplicant/example.conf
Команда создает только блок опций network
. Файл настроек с наиболее общими опциями может выглядеть примерно так:
/etc/wpa_supplicant/example.conf
ctrl_interface=DIR=/run/wpa_supplicant GROUP=wheel update_config=1 fast_reauth=1 ap_scan=1 network={ ssid="''SSID_сети''" #psk="''парольная_фраза''" psk=59e0d07fa4c7741797a4e394f38a5c321e3bed51d54ad5fcbd3f84bc7415d73d }
В дальнейшем блоки network
могут быть добавлены вручную либо с использованием wpa_cli, как показано в разделе #Подключение при помощи wpa_cli. Чтобы использовать wpa_cli, должен быть указан контрольный интерфейс при помощи опции ctrl_interface
. Установка GROUP=wheel
позволяет пользователям этой группы использовать wpa_cli. Также добавьте update_config=1
, чтобы изменения, сделанные в wpa_cli могли сохраняться в файл.
Опции fast_reauth=1
и ap_scan=1
установлены глобально. Нужны они вам или нет зависит от того, к какому типу сети вы хотите подключиться. Если вам нужны прочие глобальные опции, просто скопируйте их из /etc/wpa_supplicant/wpa_supplicant.conf
.
Также вы можете использовать команду wpa_cli set
для отображения текущего состояния опций и установки их значений. Несколько блоков network
можно добавить в файл настроек: wpa_supplicant сможет работать с каждой из них. По умолчанию, производится подключение к сети с наиболее сильным сигналом; если это поведение нежелательно, вы можете использовать опцию priority
для установки числового значения приоритета.
Преимущество размещения настроек в /etc/wpa_supplicant/wpa_supplicant.conf
в том, что dhcpcd использует этот файл по умолчанию. Обратите внимание, что, кроме подробного описания опций в комментариях, некоторые опции добавлены в файл незакомментированными, в том числе и набор блоков network
, приведенный там в качестве примера, которые однажды могут привести к незапланированному подключению к чужой сети с совпавшим SSID. Возможно, вы захотите сохранить резервную копию этого файла для примера, и создать новый файл для своих настроек на этом месте. В любом случае, при наличии изменений в новых версиях стандартного файла конфигурации должно произойти безопасное слияние.
Установка соединения
Вручную
Запустите wpa_supplicant. Наиболее распространенные опции команды:
-B
– запуск в фоновом режиме.-c filename
– путь до файла настроек.-i interface
– сетевой интерфейс.-D driver
– опционально позволяет указать драйвер адаптера. Для получения списка поддерживаемых драйверов наберитеwpa_supplicant -h
.nl80211
в данный момент является стандартным, но не все модули беспроводных контроллеров поддерживают его.wext
устарел, однако, все еще широко поддерживается.
Полный список поддерживаемых опций ищите в руководстве wpa_supplicant(8).
Пример вызова wpa_supplicant:
# wpa_supplicant -B -i имя_интерфейса -c /etc/wpa_supplicant/example.conf
Когда будет произведено успешное сопряжение с беспроводной сетью, вы сможете получить IP-адрес, как было указано в разделе #Обзор, например:
# systemctl enable dhcpcd@interface
При загрузке (systemd)
Пакет wpa_supplicant предоставляет множество файлов служб systemd:
wpa_supplicant.service
– использует D-Bus, рекомендуется для пользователей NetworkManager.wpa_supplicant@.service
– принимает имя интерфейса в качестве аргумента и запускает на нем демон wpa_supplicant, который прочитывает настройки из файла/etc/wpa_supplicant/wpa_supplicant-имя_интерфейса.conf
.wpa_supplicant-nl80211@.service
– также позволяет указать интерфейс, кроме того указывает wpa_supplicant использовать драйверnl80211
. Используется файл настроек/etc/wpa_supplicant/wpa_supplicant-nl80211-имя_интерфейса.conf
.wpa_supplicant-wired@.service
– также позволяет указать интерфейс, кроме того указывает wpa_supplicant использовать драйверwired
. Используется файл настроек/etc/wpa_supplicant/wpa_supplicant-wired-имя_интерфейса.conf
.
Чтобы соединение автоматически выполнялось при старте системы, включите одну из предоставленных служб, например:
# systemctl enable wpa_supplicant@имя_интерфейса
Когда будет произведено успешное сопряжение с беспроводной сетью, вы сможете получить IP-адрес, как было указано в разделе #Обзор, например:
# systemctl enable dhcpcd@interface
Скрипт обработки событий на основе wpa_cli
wpa_cli может выполняться как демон и запускать указанный скрипт для событий, генерируемых wpa_supplicant. Поддерживаются два события: CONNECTED
и DISCONNECTED
. Некоторые переменные окружения доступны для использовании в скрипте, смотрите wpa_cli(8) для получения подробной информации.
Следующий пример использует уведомления рабочего стола для уведомления пользователя о событиях:
#!/bin/bash case "$2" in CONNECTED) notify-send "WPA supplicant: connection established"; ;; DISCONNECTED) notify-send "WPA supplicant: connection lost"; ;; esac
Не забудьте сделать файл скрипта исполняемым, затем укажите его при запуске wpa_cli с помощью опции -a
:
$ wpa_cli -a /путь/до/скрипта