iNet wireless daemon (iwd) - это демон беспроводных сетей от компании Интел, предлагаемый в качестве альтернативы wpa_supplicant.
Ключевые особенности проекта:
- Отсутствие каких-либо зависимостей от внешних библиотек.
- Максимальное использование функций ядра Линукс.
- Минимальная нагрузка на систему.
- Быстрое обнаружение и подключение, а также упрощенное управление беспроводными сетями.
- Собственная реализация DHCP и встроенный криптографический функционал.
- Может работать, как самостоятельный клиент, так и в паре с менеджером сети (networkmanager, dhcpcd, connman, netifrc, systemd-networkd) в качестве бэкенда.
Архитектурно iwd выглядит следующим образом:
Для функционирования iwd достаточно только ядра Линукс и библиотеки "С" (glibc). Данный инструментарий оптимизирован на минимальное потребление системных ресурсов и отлично подходит для применения во встраиваемых устройствах.
Пакет iwd состоит из демона (iwd), консольной утилиты (iwctl) и программы мониторинга (iwmon).
Для установки в вашу систему, используйте подходящий пакетный менеджер (pacman, apt, dnf ...etc). Далее на примере подробно разберем установку iwd в систему с NetworkManager.
Поскольку в Calculate Linux мне требовалась установка iwd как полностью самостоятельного инструментария, а 'standalone' в USE-флагах по умолчанию отключен для этого пакета, сначала определил полный путь и имя пакета, добавил пользовательский USE-флаг в конфигурационный файл (удобно создавать отдельные файлы, каждый для своего пакета) и запустил установку:
root# eix iwd
!!! Этот шаг только для установки iwd в качестве самостоятельного клиента:
root# echo "net-wireless/iwd standalone" >> /etc/portage/package.use/iwd
---
root# emerge -av net-wireless/iwd
После установки iwd нужно сконфигурировать запуск/останов системных сервисов. Для OpenRC:
Убедитесь, что wpa_supplicant остановлен до запуска iwd:
root# rc-service wpa_supplicant stop
root# rc-update del wpa_supplicant default
---
Запустите iwd и включите его в автозагрузку:
root# rc-service iwd start
root# rc-update add iwd default
Для SystemD:
root# systemctl stop wpa_supplicant
root# systemctl disable wpa_supplicant
---
root# systemctl start iwd
root# systemctl enable iwd
В случае 'standalone' установки, аналогичным образом нужно остановить NetworkManager и удалить его из автозагрузки. А также добавить файл конфигурации, чтобы iwd мог работать самостоятельно:
root# nano /etc/iwd/main.conf
[General]
EnableNetworkConfiguration=true
[Network]
NameResolvingService=resolvconf
Для работы iwd в качестве бэкенда NetworkManager, необходимо прописать необходимые для этого конфигурации и выполнить следующие команды:
root# echo "net-misc/networkmanager iwd" >> /etc/portage/package.use/networkmanager
root# emerge -aN net-misc/networkmanager
---
root# nano /etc/NetworkManager/conf.d/iwd.conf
[device]
wifi.backend=iwd
wifi.iwd.autoconnect=yes
---
Перезапустите NetworkManager
OpenRC:
root# rc-service NetworkManager restart
SystemD:
root# systemctl restart NetworkManager
Для установки и конфигурирования iwd в систему с менеджерами сети отличными от NetworkManager, рекомендую обращаться к следующим базам знаний:
Когда iwd установлен в систему и выполнена начальная конфигурация для его использования, остается только произвести настройку беспроводных интерфейсов. Как отмечалось выше, пакет включает в себя консольную утилиту iwctl, которая запускается в интерактивном режиме (если не заданы ключи команды).
$ iwctl
Список доступных беспроводных адаптеров в системе и их состояние:
[iwd]# adapter list
Список доступных wifi устройств и их состояние:
[iwd]# device list
Список доступных wifi сетей и их состояние:
[iwd]# station list
$ iwctl
Включаем нужный адаптер беспроводной сети, если он был отключен:
[iwd]# adapter phy0 set-property Powered on
Включаем нужное сетевое устройство, если оно было отключено:
[iwd]# device wlan0 set-property Powered on
Сканируем доступные wifi сети:
[iwd]# station wlan0 scan
Выводим список wifi сетей доступных для подключения:
[iwd]# station wlan0 get-networks
Подключаемся к выбранной wifi сети:
[iwd]# station wlan0 connect TP-Link_A289
!!! При первом подключении к сети защищенной паролем появится запрос на его ввод.
Проверяем состояние подключения:
[iwd]# station wlan0 show
$ iwctl
Для вывода помощи по командам iwctl и доступным опциям:
[iwd]# help
Для выхода из интерактивного режима утилиты:
[iwd]# quit
По умолчанию настройки каждой сети хранятся в каталоге /var/lib/iwd. Имя файла создается по принципу: "SSID_сети.тип_сети" (в моем примере - "TP-Link_A289.psk"). Файл содержит зашифрованный PreSharedKey, а также Passphrase в открытом виде. Поскольку Passphrase является опциональным в файле конфигурации, его можно удалить, после получения зашифрованного PreSharedKey, формируемого автоматически при первом подключении к сети.
Для iwd существуют gui-клиенты. В моей системе Calculate Linux использован iwgtk, который обеспечивает пользователя полноценным функционалом iwctl (все настройки беспроводных сетей можно выполнить из него), а также предоставляет tray icon, единственный который у меня нормально заработал с systray окружения рабочего стола Enlightenment. Сама иконка не кликабельна (решается добавлением iwgtk в "избранные приложения" и быстрым его вызовом по правому клику мышки), но с основной своей задачей визуального информирования о состоянии сети справляется на "отлично".
После полного перехода на iwd с NetworkManager (от Connman отказался раньше по причине проблемной настройки сети для виртуальных машин), заметил такую особенность: система стартует значительно быстрее, wifi сети сканируются мгновенно и обеспечивается очень быстрое подключение к ним.
Комментарии
10:16
14:09
14:12
Органичненько
https://ibb.co/Fn8ybtX
14:21
14:29
14:32
15:22
15:30
17:33
12:17
13:03
А если серьезно, если это ремесло - то это одно, а если баловство - то другое!)
20:44
Как раз нужны команды тем, кто ставит, например, арч через wi-fi, а тут все нужное в одном месте.
14:04
На Fedora, к сожалению, у меня с ним проблемы
14:10
https://github.com/TimTinkers/rofi-iwd-menu
А Дилан Арапс (создатель KISS Linux, neofetch, pure bash bible) переписал iwd без dbus
https://github.com/dylanaraps/eiwd