WPA supplicant (Русский)

From ArchWiki
Jump to: navigation, search

Tango-preferences-desktop-locale.pngЭта страница нуждается в сопроводителеTango-preferences-desktop-locale.png

Статья не гарантирует актуальность информации. Помогите русскоязычному сообществу поддержкой подобных страниц. См. Команда переводчиков ArchWiki

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), а также управляет роумингом и выполняет сопряжение адаптера с беспроводной сетью.

Установка

Установите пакет wpa_supplicant, доступный в официальных репозиториях.

Также вы можете установить wpa_supplicant_gui, который предоставляет 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

где имя_интерфейса – имя вашего беспроводного сетевого интерфейса.

Совет: Чтобы определить имя беспроводного сетевого интерфейса, используйте команду ip link.

Теперь запустите wpa_cli:

# wpa_cli

Будет отображено приглашение для ввода команд (>), где вы можете использовать автодополнение по Tab и получать описание для дополняемых команд.

Совет: Расположение сокета может быть указано вручную с помощью опции -p; с помощью -i можно также указать имя сетевого интерфейса. Если имя не указано явно, будет использоваться первый найденный беспроводной интерфейс, управляемый wpa_supplicant.

Используйте команды 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=]
Примечание:
  • Каждая сеть нумеруется с нуля, поэтому первая сеть имеет индекс 0.
  • Закрытый ключ (PSK) сети вычисляется на основе парольной фразы, заключенной в кавычки, что вы также можете заметить, прочитав раздел wpa_passphrase. Тем не менее, вы можете ввести закрытый ключ напрямую, введя его в команде set_network id psk без кавычек.

Теперь сохраните внесенные изменения в файл настроек:

> 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)
Note: Из-за подстановки процесса, вы не можете запускать эту команду из sudo: вам нужен постоянный сеанс суперпользователя. Смотрите также Help:Reading#Regular user or root.
Совет:
  • Используйте кавычки, если строка содержит пробелы, например: "secret passphrase".
  • Чтобы определить имя беспроводного сетевого интерфейса, используйте команду ip link.
  • Парольные фразы с некоторыми нестандартными символами могут потребовать ввода из файла: wpa_passphrase MYSSID < passphrase.txt.

Как только сопряжение с сетью будет выполнено, вам останется получить IP адрес, как было указано в разделе #Обзор, например:

# dhcpcd имя_интерфейса

Расширенное использование

Для более сложных сетей, например, широко практикующих использование EAP, будет необходимо вручную настроить wpa_supplicant. На странице wpa_supplicant.conf(5) вы можете найти описание структуры и содержимого файла настроек и примеры файлов; более детальное описание всех опций вы можете найти в файле /etc/wpa_supplicant/wpa_supplicant.conf.

Настройка

Как уже было сказано в разделе #Сопряжение при помощи wpa_passphrase[broken link: invalid section], минимальная конфигурация может быть создана при помощи команды:

# 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. Возможно, вы захотите сохранить резервную копию этого файла для примера, и создать новый файл для своих настроек на этом месте. В любом случае, при наличии изменений в новых версиях стандартного файла конфигурации должно произойти безопасное слияние.

Примечание: Начиная с версии dhcpcd-6.10.0-1 поведение демона по умолчанию изменено: теперь хук 10-wpa_supplicant не запускается по умолчанию! Подробнее: [1], [2]
Совет: Чтобы настроить блок network для соединения с беспроводной сетью со скрытым SSID, добавьте в него опцию scan_ssid=1.

Установка соединения

Вручную

Запустите 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
Совет: dhcpcd имеет хук, который может неявно запускать wpa_supplicant, подробнее смотрите на странице dhcpcd (Русский)#10-wpa_supplicant.

При загрузке (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
Совет: dhcpcd имеет хук, который может неявно запускать wpa_supplicant, подробнее смотрите на странице dhcpcd (Русский)#10-wpa_supplicant.

Скрипт обработки событий на основе 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 /путь/до/скрипта

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