iwd (Русский)
iwd (iNet wireless daemon) — беспроводной демон для Linux, созданный компанией Intel. Разработчики постарались снизить число внешних библиотек-зависимостей и использовать по максимуму возможности ядра Linux.
iwd может работать как отдельно, так и в паре с сетевым менеджером вроде ConnMan, systemd-networkd или NetworkManager.
Установка
    
Установите пакет iwd.
Использование
    
Пакет iwd содержит клиентскую программу iwctl, демон iwd и утилиту для мониторинга Wi-Fi сетей iwmon.
Запустите/включите службу . Для управления службой используется команда iwctl.
iwctl
    
Запуск в интерактивном режиме:
$ iwctl
В интерактивном режиме приглашение командной строки имеет вид .
Вывести список доступных команд:
[iwd]# help
Подключение к сети
    
Если вы не знаете название своего беспроводного интерфейса, запросите список всех Wi-Fi устройств:
[iwd]# device list
Просканируйте сети:
[iwd]# station устройство scan
После этого можно вывести список обнаруженных сетей:
[iwd]# station устройство get-networks
Наконец, подключитесь к сети:
[iwd]# station устройство connect SSID
Если для подключения к сети необходим пароль, то появится соответствующий запрос. В неинтерактивном режиме его можно передать в виде аргумента:
$ 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 на предмет подходящих опций для команды .
Отключение от сети
    
Отключиться от сети:
[iwd]# station устройство disconnect
Информация об устройстве и соединении
    
Вывести подробности о Wi-Fi устройстве (например, MAC-адрес):
[iwd]# device устройство show
Вывести состояние подключения, в том числе сети, подключённые к устройству:
[iwd]# station устройство show
Ранее посещённые сети
    
Вывести список сетей, к которым вы подключались в прошлом:
[iwd]# known-networks list
"Забыть" известную сеть:
[iwd]# known-networks SSID forget
Настройка сети
    
По умолчанию iwd хранит настройки сети в каталоге . Файл настроек именуется по схеме , где сеть — SSID сети, а, соответственно, тип — её тип (open, wep, psk или 8021x). В файле хранится зашифрованный , а также (опционально)  открытым текстом. Файл можно создать вручную, не вызывая iwctl. Кроме того, в файле можно указывать и другие настройки, подробнее см. .
WPA-PSK
    
Пример минимального файла настроек для подключения к сети WPA-PSK или WPA2-PSK с SSID "spaceship" и паролем "test1234":
- _. При наличии иных символов имя файла имеет вид hex-строки, начинающейся с символа =, после которого идёт зашифрованный SSID.
PreSharedKey можно вычислить одним из двух методов:
- Указав пароль в явном виде в файле настроек:
Ключ будет добавлен в файл при первом подключении:
/var/lib/iwd/spaceship.psk
[Security] Passphrase=test1234 PreSharedKey=aafb192ce2da24d8c7805c956136f45dd612103f086034c402ed266355297295
- Вычислив на основе SSID и пароля утилитами wpa_passphrase (входит в ) или . Подробнее см. wpa_supplicant#Connecting with wpa_passphrase.
EAP-PWD
    
Для подключения к производственным сетям с EAP-PWD защитой создайте файл в каталоге со следующим содержимым:
Если автоподключение к точке доступа не требуется, измените значение последней опции на False. После этого подключаться к сети придётся вручную командой iwctl. То же самое касается пароля — если вы не хотите хранить его в файле в открытом виде, то просто удалите соответствующую опцию и подключайтесь вручную.
EAP-PEAP
    
Как и в случае EAP-PWD, создайте файл . Предварительно выясните, какой CA-сертификат использует на вашем предприятии. Для работы MSCHAPv2 необходимо также установить (см. MS-CHAPv2). Ниже дан пример файла настроек с MSCHAPv2-аутентификацией:
TTLS-PAP
    
Как и в случае EAP-PWD, создайте файл . Предварительно выясните, какой CA-сертификат использует на вашем предприятии. Ниже дан пример файла настроек с PAP-аутентификацией:
Eduroam
    
Eduroam имеет утилиту для настройки (configuration assistant tool, CAT), но она, к сожалению, не поддерживает iwd. Тем не менее, загружаемый установщик представляет собой обычный Python-сценарий. Из него нетрудно извлечь необходимые параметры настройки, включая сертификат и маску домена.
В таблице ниже приведены значения параметров iwd, которые используются в переменных установочного сценария CAT.
| Опция iwd | Переменная сценария CAT | 
|---|---|
| имя файла | один из | 
| EAP-Method | Config.eap_outer | 
| один из | |
| EAP-PEAP-Phase2-Identity | имя_пользователя@ | 
- Ваш провайдер может не требовать параметр EAP-Identity, в этом случае укажите для него значениеanonymousилиanonymous@Config.user_realm.
- Если ваш EAP-PEAP-ServerDomainMaskначинается сDNS:, используйте только часть послеDNS:.
Прочие случаи
    
В репозитории разработчиков можно найти много дополнительных примеров.
Дополнительные настройки
    
Для хранения большинства настроек вполне подойдёт файл . См. .
Отключение автоподключения к сети
    
Создайте/отредактируйте файл :
Отключение сканирования сетей
    
По умолчанию, если iwd не подключён, он периодически выполняет сканирование в поиске доступных сетей. Чтобы это отключить (и сканировать вручную при необходимости), создайте/отредактируйте файл :
Включение встроенной настройки сети
    
С версии 0.19 iwd может выполнять привязку IP-адресов и настраивать маршруты с помощью встроенного DHCP-клиента или в соответствии со статической конфигурацией. Это неплохая альтернатива использованию отдельных DHCP-клиентов.
Чтобы активировать возможности iwd по настройке сети, добавьте следующие строки в :
Также можно задать параметр маршрутизации :
/etc/iwd/main.conf
[Network] RoutePriorityOffset=300
Поддержка IPv6
    
С версии 1.10 iwd имеет поддержку IPv6, но по умолчанию она отключена. Для включения добавьте следующие строки в файл настроек:
Эта настройка необходима, если вы желаете использовать DHCPv6 или статическую IPv6-конфигурацию. Её также можно задать для отдельной сети.
Статический IP-адрес в настройках сети
    
Добавьте следующие строки в файл :
Выбор DNS-менеджера
    
На данный момент iwd поддерживает два DNS-менеджера — systemd-resolved и resolvconf.
Настройки для systemd-resolved:
Для :
Запрет на модификацию настроек из консоли
    
По умолчанию D-Bus интерфейс iwd позволяет любым (в том числе обычным, не-root) пользователям подключаться к демону iwd через консоль и изменять настройки.
Если вы хотите, чтобы пользователи могли только читать выходную информацию, но не изменять настройки, создайте файл настроек D-Bus:
Решение проблем
    
    Подробная отладка TLS
    
Это может пригодиться при решении проблем с MSCHAPv2 или TTLS. Задайте следующую переменную окружения с помощью drop-in файла:
/etc/systemd/system/iwd.service.d/tls-debug.conf
[Service] Environment=IWD_TLS_DEBUG=TRUE
После этого проверьте логи iwd, выполнив с правами root.
Проблемы с подключением после перезагрузки
    
Низкая энтропия системы может вызвать проблемы с подключением, особенно после перезагрузки. Рекомендации по увеличению энтропии можно найти в статье Random number generation.
udev не переименовывает беспроводное устройство
    
С версии 1.0 iwd отключает присвоение беспроводным интерфейсам предсказуемых имён. Для этого используется link-файл systemd, который запрещает udev присваивать беспроводным интерфейсам типовые имена :
В результате после перезагрузки интерфейсы будут иметь имена . Это позволяет избежать ситуации гонок между iwd и udev при переименовании интерфейсов.
Если это привело к каким-то нежелательным последствиям, link-файл можно замаскировать с помощью символической ссылки:
# ln -s /dev/null /etc/systemd/network/80-iwd.link