iwd (Русский)

Состояние перевода:
На этой странице представлен перевод статьи
iwd
. Дата последней синхронизации: 12 октября 2023. Вы можете
помочь
синхронизировать перевод, если в английской версии произошли
изменения
.
Ссылки по теме
Настройка сети
Настройка беспроводной сети
wpa_supplicant (Русский)
iwd
(iNet wireless daemon) — беспроводной демон для Linux, созданный компанией Intel. Разработчики постарались снизить число внешних библиотек-зависимостей и использовать по максимуму возможности ядра Linux.
iwd может работать как отдельно, так и в паре с сетевым менеджером вроде
ConnMan
,
systemd-networkd
или
NetworkManager
.
Примечание
Не следуйте инструкциям из этой статьи, если iwd используется через
сетевой менеджер
и в статье этого сетевого менеджера явно не указано иное.
Установка
Установите
пакет
iwd
.
Использование
Пакет
iwd
содержит клиентскую программу
iwctl
, демон
iwd
и утилиту для мониторинга Wi-Fi сетей
iwmon
.
iwgtk
AUR
предоставляет графический интерфейс и значок в трее.
Запустите/включите
службу
iwd.service
. Для управления службой можно использовать команду
iwctl
или графический интерфейс
iwgtk
.
Примечание
Взаимодействовать с
iwd
могут только суперпользователь и пользователи из групп
netdev
или
wheel
. Для использования
iwctl
или
iwgtk
добавьте себя в одну из этих групп
.
iwctl
Запуск в интерактивном режиме:
$ iwctl
В интерактивном режиме приглашение командной строки имеет вид
[iwd]#
.
Совет
В интерактивном режиме работает автодополнение команд и названий устройств по нажатию клавиши
Tab
.
Для выхода из интерактивного режима отправьте
EOF
комбинацией
Ctrl+d
.
Все команды можно использовать как аргументы командной строки в неинтерактивном режиме. Пример:
iwctl device wlan0 show
.
Вывести список доступных команд:
[iwd]# help
Подключение к сети
Если вы не знаете название своего беспроводного интерфейса, запросите список всех Wi-Fi устройств:
[iwd]# device list
Если устройство или соответствующий адаптер выключен, включите его:
[iwd]# device
устройство
set-property Powered on
[iwd]# adapter
адаптер
set-property Powered on
Затем запустите сканирование сети (команда ничего не выведет):
[iwd]# station
устройство
scan
После этого можно вывести список обнаруженных сетей:
[iwd]# station
устройство
get-networks
Наконец, подключитесь к сети:
[iwd]# station
устройство
connect
SSID
Примечание
Для автоматической настройки IP и DNS через DHCP нужно
вручную включить
встроенный DHCP-клиент или настроить
отдельный DHCP-клиент
.
Совет
Пользовательский интерфейс позволяет использовать автодополнение. Например, введите
station
и нажмите
Tab
Tab
— отобразится список доступных устройств; введите первую букву названия устройства и нажмите
Tab
для завершения. Аналогично,
connect
Tab
Tab
выведет список доступных сетей, а
Tab
при частично введённом названии завершит его.
Если для подключения к сети необходим пароль, то появится соответствующий запрос. В неинтерактивном режиме его можно передать в виде аргумента:
$ iwctl --passphrase
пароль
station
устройство
connect
SSID
Примечание
iwd
автоматически сохраняет пароли в каталоге
/var/lib/iwd
и использует их для автоподключения в будущем. См.
#Настройка сети
.
Если SSID содержит пробелы, то его необходимо обернуть двойными кавычками.
iwd поддерживает только PSK-пароли, от 8 до 63 ASCII-символов. В противном случае вы увидите сообщение об ошибке:
PMK generation failed.  Ensure Crypto Engine is properly configured
.
Подключение к сети через WPS/WSC
Если ваша сеть поддерживает подключение по нажатию клавиши (
Википедия:Wi-Fi Protected Setup
), убедитесь, что сетевое устройство тоже может использовать эту возможность.
[iwd]# wsc list
После этого, если ваше устройство было в списке, выполните
[iwd]# wsc
устройство
push-button
и нажмите кнопку на маршрутизаторе. В принципе кнопку можно нажать и до этого (но не ранее, чем за 2 минуты).
Если при таком способе подключения сеть требует подтверждения PIN, изучите вывод команды
help
на предмет подходящих опций для команды
wsc
.
Отключение от сети
Отключиться от сети:
[iwd]# station
устройство
disconnect
Информация об устройстве и соединении
Вывести подробности о Wi-Fi устройстве (например, MAC-адрес):
[iwd]# device
устройство
show
Вывести состояние подключения, в том числе сети, подключённой к устройству:
[iwd]# station
устройство
show
Ранее посещённые сети
Вывести список сетей, к которым вы подключались в прошлом:
[iwd]# known-networks list
«Забыть» известную сеть:
[iwd]# known-networks
SSID
forget
iwgtk
iwgtk
AUR
предоставляет графический интерфейс, через который также можно взаимодействовать с iwd.
Запуск
iwgtk
без аргументов откроет окно приложения, с помощью которого можно включать/выключать адаптеры и устройства, изменять режимы их работы, просматривать доступные сети, подключаться к ним и управлять известными сетями.
Значок в трее
Для запуска демона, отображающего значок iwgtk в трее, выполните команду:
$ iwgtk -i
Если значок не появился, то, скорее всего, трей не поддерживает StatusNotifierItem API — в этом случае попробуйте использовать слой совместимости, например
snixembed-git
AUR
Реализации трея, которые поддерживают StatusNotifierItem и поэтому работают из коробки:
KDE Plasma
swaybar
xfce4-panel
Реализации, поддерживающие только XEmbed и потому требующие установки
snixembed-git
AUR
:
AwesomeWM
i3bar
Автозапуск
Распространённый вариант использования iwgtk — запуск демона, отображающего значок в трее, при входе в систему. Если используемая вами среда рабочего стола поддерживает
XDG Autostart
, это должно происходить автоматически благодаря файлу
iwgtk-indicator.desktop
, который устанавливается AUR-пакетом в
/etc/xdg/autostart/
.
В качестве альтернативы пакет AUR также предоставляет юнит systemd для запуска демона. Если среда рабочего стола поддерживает юнит
graphical-session.target
, то для автозапуска iwgtk через systemd включите
пользовательский юнит
iwgtk.service
.
Настройка сети
По умолчанию
iwd
хранит настройки сети в каталоге
/var/lib/iwd
. Файл настроек именуется по схеме
сеть
.
тип
, где
сеть
— SSID сети, а, соответственно,
.тип
— её тип (
.open
,
.psk
или
.8021x
). В файле хранится зашифрованный
PreSharedKey
, а также (опционально)
Passphrase
открытым текстом. Файл можно создать вручную, не вызывая
iwctl
. Кроме того, в файле можно указывать и другие настройки, подробнее см.
iwd.network(5)
.
Примечание
В строковых значениях, в том числе идентификаторах и паролях, некоторые символы могут быть экранированы обратным слешем. Ведущие пробелы, \n, \r и собственно обратные слеши экранировать обязательно. Смотрите
iwd.network(5)
.
WPA-PSK
Пример минимального файла настроек для подключения к сети WPA-PSK или WPA2-PSK с SSID «spaceship» и паролем «test1234»:
/var/lib/iwd/spaceship.psk
[Security]
PreSharedKey=aafb192ce2da24d8c7805c956136f45dd612103f086034c402ed266355297295
Примечание
В качестве имени файла используется SSID сети, но только если последний состоит из цифр, букв и символов
- _
. При наличии иных символов имя файла имеет вид hex-строки, начинающейся с символа
=
, после которого идёт SSID, закодированный в шестнадцатеричном виде.
PreSharedKey можно вычислить одним из двух методов:
Указав пароль открытым текстом в файле настроек:
/var/lib/iwd/spaceship.psk
[Security]
Passphrase=test1234
Ключ будет добавлен в файл при первом подключении:
/var/lib/iwd/spaceship.psk
[Security]
Passphrase=test1234
PreSharedKey=aafb192ce2da24d8c7805c956136f45dd612103f086034c402ed266355297295
Вычислив на основе SSID и пароля утилитами
wpa_passphrase
(входит в
wpa_supplicant
) или
wpa-psk
AUR
. Подробнее см.
wpa_supplicant#Connecting with wpa_passphrase
.
WPA Enterprise
EAP-PWD
Для подключения к производственным сетям с EAP-PWD защитой создайте файл
essid
.8021x
в каталоге
/var/lib/iwd
со следующим содержимым:
/var/lib/iwd/
essid
.8021x
[Security]
EAP-Method=PWD
EAP-Identity=
ваш_email_на_предприятии
EAP-Password=
ваш_пароль
[Settings]
AutoConnect=true
Если автоподключение к точке доступа не требуется, измените значение последней опции на False. После этого подключаться к сети придётся вручную командой
iwctl
. То же самое касается пароля — если вы не хотите хранить его в файле в открытом виде, то просто удалите соответствующую опцию и подключайтесь вручную.
Примечание
Нет возможности изменить приоритеты различных SSID, поэтому в качестве обходного пути можно установить
AutoConnect=false
.
EAP-PEAP
Как и в случае EAP-PWD, создайте файл
essid
.8021x
. Предварительно выясните, какой CA-сертификат используется в вашей организации. Ниже дан пример файла настроек с MSCHAPv2-аутентификацией:
/var/lib/iwd/
essid
.8021x
[Security]
EAP-Method=PEAP
EAP-Identity=anonymous@realm.edu
EAP-PEAP-CACert=/path/to/root.crt
EAP-PEAP-ServerDomainMask=radius.realm.edu
EAP-PEAP-Phase2-Method=MSCHAPV2
EAP-PEAP-Phase2-Identity=johndoe@realm.edu
EAP-PEAP-Phase2-Password=hunter2

[Settings]
AutoConnect=true
Пароли MsCHAPv2 также можно хранить в виде хэша. Правильный хэш md4 может быть вычислен такой командой:
$ iconv -t utf16le | openssl md4 -provider legacy
Завершите ввод пароля нажатием
Ctrl+d
(не нажимайте
Enter
). Полученный хэш поместите в параметр
EAP-PEAP-Phase2-Password-Hash
.
Совет
Если вы собираетесь использовать
eduroam
, изучите также раздел
#eduroam
.
TTLS-PAP
Как и в случае EAP-PWD, создайте файл
essid
.8021x
. Предварительно выясните, какой CA-сертификат используется в вашей организации. Ниже дан пример файла настроек с PAP-аутентификацией:
/var/lib/iwd/
essid
.8021x
[Security]
EAP-Method=TTLS
EAP-Identity=anonymous@uni-test.de
EAP-TTLS-CACert=cert.pem
EAP-TTLS-ServerDomainMask=*.uni-test.de
EAP-TTLS-Phase2-Method=Tunneled-PAP
EAP-TTLS-Phase2-Identity=user
EAP-TTLS-Phase2-Password=password

[Settings]
AutoConnect=true
eduroam
eduroam предоставляет
утилиту для настройки
(configuration assistant tool, CAT), но она, к сожалению, не поддерживает iwd. Тем не менее, загружаемый установщик представляет собой обычный Python-скрипт. Из него нетрудно извлечь необходимые параметры настройки, включая сертификат и маску домена.
В таблице ниже приведены значения параметров iwd, которые используются в переменных установочного сценария CAT.
Опция iwd
Переменная скрипта CAT
essid
один из
Config.ssids
EAP-Method
Config.eap_outer
EAP-Identity
Config.anonymous_identity
EAP-
метод
-CACert
содержимое
Config.CA
или абсолютный путь к файлу
.pem
, содержащему
Config.CA
EAP-
метод
-ServerDomainMask
один из
Config.servers
EAP-
метод
-Phase2-Method
Config.eap_inner
, если он не равен
PAP
, иначе
Tunneled-PAP
EAP-
метод
-Phase2-Identity
имя_пользователя
@Config.user_realm
где
метод
— это содержимое
EAP-Method
, которое должно быть
TTLS
или
PEAP
. После извлечения всей необходимой информации и преобразования её в настройки iwd можно поместить её в файл с именем
essid
.8021x
, как описано в разделах выше.
Примечание
Ваш провайдер может не требовать параметр
EAP-Identity
, в этом случае укажите для него значение
anonymous@
Config.user_realm
.
Если ваш
EAP-
метод
-ServerDomainMask
начинается с
DNS:
, используйте только часть после
DNS:
.
Прочие случаи
В репозитории разработчиков можно найти много дополнительных
примеров
.
Дополнительные настройки
Для хранения большинства настроек вполне подойдёт файл
/etc/iwd/main.conf
. См.
iwd.config(5)
.
Отключение автоподключения к сети
Создайте/отредактируйте файл
/var/lib/iwd/
сеть
.
тип
:
/var/lib/iwd/spaceship.psk (для примера)
[Settings]
AutoConnect=false
Отключение сканирования сетей
По умолчанию, если
iwd
ни к чему не подключён, он периодически выполняет сканирование для поиска доступных сетей. Чтобы это отключить (и сканировать вручную при необходимости), создайте/отредактируйте файл
/etc/iwd/main.conf
:
/etc/iwd/main.conf
[Scan]
DisablePeriodicScan=true
Включение встроенной настройки сети
С версии 0.19 iwd может выполнять привязку IP-адресов и настраивать маршруты с помощью встроенного DHCP-клиента или в соответствии со статической конфигурацией. Это неплохая альтернатива использованию
отдельных DHCP-клиентов
.
Чтобы активировать возможности iwd по настройке сети, добавьте следующие строки в
/etc/iwd/main.conf
:
/etc/iwd/main.conf
[General]
EnableNetworkConfiguration=true
Также можно задать параметр маршрутизации
RoutePriorityOffset
:
/etc/iwd/main.conf
[Network]
RoutePriorityOffset=300
Поддержка IPv6
С версии 1.10 iwd имеет поддержку IPv6, но в версиях до 2.0 она по умолчанию она отключена.
С версии
2.0
она включена по умолчанию.
Для отключения добавьте следующие строки в файл настроек:
/etc/iwd/main.conf
[Network]
EnableIPv6=false
Для включения на версиях до 2.0:
/etc/iwd/main.conf
[Network]
EnableIPv6=true
Эта настройка должна быть включена, если вы желаете использовать DHCPv6 или статическую IPv6-конфигурацию. Её также можно задать для отдельной сети.
Статический IP-адрес в настройках сети
Добавьте следующие строки в файл
/var/lib/iwd/
сеть
.
тип
:
/var/lib/iwd/spaceship.psk
[IPv4]
Address=192.168.1.10
Netmask=255.255.255.0
Gateway=192.168.1.1
Broadcast=192.168.1.255
DNS=192.168.1.1
Выбор DNS-менеджера
На данный момент iwd поддерживает два DNS-менеджера —
systemd-resolved
и
resolvconf
.
Настройки для
systemd-resolved
:
/etc/iwd/main.conf
[Network]
NameResolvingService=systemd
Для
resolvconf
:
/etc/iwd/main.conf
[Network]
NameResolvingService=resolvconf
Примечание
Если опция не задана, то по умолчанию используется
systemd-resolved
.
Разрешить всем пользователям считывать состояние
Если вы хотите разрешить любому пользователю читать информацию о состоянии, но не изменять настройки, создайте файл настроек
D-Bus
:
/etc/dbus-1/system.d/iwd-allow-read.conf
<!-- Allow any user to read iwd status information. Overrides some part
     of /usr/share/dbus-1/system.d/iwd-dbus.conf. -->

<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>

  <policy context="default">
    <deny send_destination="net.connman.iwd"/>
    <allow send_destination="net.connman.iwd" send_interface="org.freedesktop.DBus.Properties" send_member="GetAll" />
    <allow send_destination="net.connman.iwd" send_interface="org.freedesktop.DBus.Properties" send_member="Get" />
    <allow send_destination="net.connman.iwd" send_interface="org.freedesktop.DBus.ObjectManager" send_member="GetManagedObjects" />
    <allow send_destination="net.connman.iwd" send_interface="net.connman.iwd.Device" send_member="RegisterSignalLevelAgent" />
    <allow send_destination="net.connman.iwd" send_interface="net.connman.iwd.Device" send_member="UnregisterSignalLevelAgent" />
  </policy>

</busconfig>
Решение проблем
Подробная отладка TLS
Это может пригодиться при решении проблем с MSCHAPv2 или TTLS. Задайте следующую
переменную окружения
с помощью
drop-in файла
:
/etc/systemd/system/iwd.service.d/tls-debug.conf
[Service]
Environment=IWD_TLS_DEBUG=TRUE
После этого проверьте логи iwd, выполнив
journalctl -u iwd.service
с правами root.
Перезапуск iwd.service после загрузки
Сообщалось, что на некоторых машинах для работы службы
iwd.service
необходимо перезапустить её после загрузки. Смотрите
FS#63912
и
тему на форуме
. Вероятно, это происходит потому, что ядро Linux и службы загружаются слишком быстро и
iwd
запускается до того, как беспроводная сетевая карта успеет включиться. В качестве обходного пути создайте
drop-in файл
, добавляющий задержку перед запуском службы:
[Service]
ExecStartPre=/usr/bin/sleep 2
Затем выполните
daemon-reload
.
Проблемы с подключением после перезагрузки
Низкая энтропия системы может вызвать проблемы с подключением, особенно после перезагрузки. Рекомендации по увеличению энтропии можно найти в статье
Random number generation
.
udev не переименовывает беспроводное устройство
С версии 1.0 iwd отключает присвоение беспроводным интерфейсам предсказуемых имён. Для этого используется link-файл systemd, который запрещает udev присваивать беспроводным интерфейсам типовые имена
wlp#s#
:
/usr/lib/systemd/network/80-iwd.link
[Match]
Type=wlan

[Link]
NamePolicy=keep kernel
В результате после перезагрузки интерфейсы будут иметь имена
wlan#
. Это позволяет избежать ситуации гонок между
iwd
и
udev
при
переименовании интерфейсов
[
устаревшая ссылка
2024-10-12 ⓘ]
.
Если это привело к каким-то нежелательным последствиям, link-файл можно замаскировать с помощью символической ссылки:
# ln -s /dev/null /etc/systemd/network/80-iwd.link
Нет DHCP в режиме точки доступа
Когда
iwd
работает в режиме точки доступа, клиенты могут не получить IP-адрес по протоколу DHCP. Нужно разрешить настройку сети с помощью iwd на управляемых интерфейсах:
/etc/iwd/main.conf
[General]
EnableNetworkConfiguration=True
Создайте файл, если его ещё не существует.
WiFi постоянно отключается из-за сбоя iwd
Некоторые пользователи сталкиваются с обрывом связи WiFi и переподключениями, но через время подключиться всё-таки удаётся.
Пользователи сообщают о падениях (
[1]
) службы
iwd.service
.
Основная причина проблемы заключается в наличии нескольких конфликтующих служб, управляющих одними и теми же сетевыми подключениями. Для решения этой проблемы проверьте, не включены ли они одновременно.
Ошибка при загрузке закрытого ключа клиента
Для загрузки файлов ключей
iwd
использует
модуль ядра
pkcs8_key_parser
. Он должен загружаться автоматически через
systemd-modules-load.service(8)
благодаря файлу
/usr/lib/modules-load.d/pkcs8.conf
, но если
iwd
был установлен только что, то модуль не будет загружен до перезагрузки системы.
Если при попытке подключения к сетям WPA Enterprise в
журнале
появляются сообщения типа
Error loading client private key
/путь/к/ключу
, загрузите модуль вручную:
# modprobe pkcs8_key_parser
iwd постоянно переподключается к разным точкам доступа
iwd будет подключаться к другим известным точкам доступа, если соединение с текущей точкой доступа слишком плохое.
Это записывается в журнал:
wlan0: deauthenticating from xx:xx:xx:xx:xx:xx by local choice (Reason: 3=DEAUTH_LEAVING)
Проверьте мощность сигнала:
iwctl station wlan0 show | grep RSSI
Вы можете изменить порог мощности, чтобы разрешить использование плохого соединения. По умолчанию RoamThreshold имеет значение -70, а RoamThreshold5G имеет значение -76.
/etc/iwd/main.conf
[General]
RoamThreshold=-75
RoamThreshold5G=-80
Смотрите также
Getting Started with iwd
[
устаревшая ссылка
2024-10-12 ⓘ]
Network Configuration Settings
[
устаревшая ссылка
2024-10-12 ⓘ]
More Examples for WPA Enterprise
The IWD thread on the Arch Linux Forums
2017 Update on new WiFi daemon for Linux by Marcel Holtmann - YouTube
The New Wi-Fi Experience for Linux - Marcel Holtmann, Intel - YouTube
How to set up a simple access point with iwd
[
устаревшая ссылка
2024-10-12 ⓘ]