iwd

出自 Alpine Linux

iNet Wireless Daemon (iwd) 项目旨在为基于 Linux 的设备提供全面的 Wi-Fi 连接解决方案。 iwd 提供了一个自包含的环境,仅依赖于 Linux 内核和运行时 C 库。 Alpine Linux 的 v3.10 版本之后开始支持 iwd。

注意: Alpine Linux 同时支持无线守护进程,即 wpa_supplicantiwd。同时使用无线守护进程,即 wpa_supplicantiwd 会导致冲突。

前提条件

安装

使用以下命令安装 iwd 软件包

# apk add iwd

接下来,确定您想要在单机模式下使用 iwd,还是与 NetworkManager 一起使用,或者与 ifupdown-ng 一起使用。 从这三个选项中选择一个,然后继续进行服务配置

单机模式

为了让 iwd 在连接到 Wi-Fi 网络时自行完成大多数网络配置,需要安装 openresolv 软件包,因此请先安装它

# apk add openresolv

然后编辑配置文件 /etc/iwd/main.conf 并按如下方式设置

内容 /etc/iwd/main.conf

[General] EnableNetworkConfiguration=True [Network] NameResolvingService=resolvconf

将 iwd 用作 networkmanager 后端

可以将 NetworkManager 配置为使用 iwd 作为 后端,以替代默认的 wpa_supplicant

将 iwd 与 ifupdown-ng 结合使用

iwd 可以将处理 IP 地址分配(静态或 DHCP)的责任委托给 ifupdown-ng。 要做到这一点,请编辑 /etc/network/interfaces 文件。 例如,如果您在 wlan0 接口上使用 DHCP

内容 /etc/network/interfaces

auto lo iface lo inet loopback auto wlan0 iface wlan0 inet dhcp

服务配置

注意: 为避免冲突,请确保在继续操作之前停止 wpa_supplicant 和相关服务。

首先启动 iwd 服务以继续配置

# rc-service iwd start

一旦 iwd 服务完全配置并测试完毕,为了让 iwd 服务在每次启动时自动启动(推荐)

# rc-update add iwd default

iwctl 的用法

iwd 软件包提供了客户端程序 iwctl、守护进程 iwd 和 Wi-Fi 监控工具 iwmon

首先启动客户端

$ iwctl

列出所有可用命令

[iwd]# help

连接到网络

列出所有 Wi-Fi 设备

[iwd]# device list

如果您的无线适配器未列出,请参阅 Wifi 故障排除 页面。

如果设备或其对应的适配器已关闭,请将其打开

[iwd]# device device set-property Powered on
[iwd]# adapter adapter set-property Powered on

然后,启动网络扫描(请注意,此命令不会输出任何内容)

[iwd]# station device scan

然后您可以列出所有可用网络

[iwd]# station device get-networks

最后,连接到网络

[iwd]# station device connect SSID

如果需要密码,系统将提示您输入。 或者,您可以将其作为命令行参数提供

$ iwctl –passphrase 密码 station 设备 connect SSID

注意:
  • iwd 会自动将网络密码存储在 /var/lib/iwd 目录中,并在将来使用它们自动连接。
  • 如果您运行无盘 Alpine,请务必提交:

    # lbu add /var/lib/iwd && lbu commit -d

  • 要连接到 SSID 中带有空格的网络,连接时网络名称应使用双引号引起来。
  • iwd 仅支持 8 到 63 个 ASCII 编码字符的 PSK 密码短语。

断开网络连接

断开网络连接

[iwd]# station device disconnect

显示设备和连接信息

显示 Wi-Fi 设备的详细信息,如 MAC 地址

[iwd]# device device show

显示连接状态,包括 Wi-Fi 设备的已连接网络

[iwd]# station device show

管理已知网络

列出您之前连接过的网络

[iwd]# known-networks list

忘记已知网络

[iwd]# known-networks SSID forget
注意: 无法为网络分配优先级,iwd 将根据以下因素对网络进行优先级排序:
  • 信号强度级别
  • 安全特性
  • 最大速率
  • 信道利用率
  • 自上次连接以来的时间。

iwgtk

iwgtk showing list of networks
iwgtk

iwgtk 是 iwd 的无线网络 GUI,其支持的功能与 iwctl 类似。 功能包括查看和连接到可用网络、管理已知网络、通过 WPS 或 Wi-Fi Easy Connect 配置新网络,以及显示连接状态和信号强度的指示器(托盘)图标。

安装 iwgtk 软件包

# apk add iwgtk

故障排除

如果 iwctl 命令失败并显示消息 The name net.connman.iwd was not provided by any .service files Failed to retrieve IWD dbus objects, quitting...

此错误表示 iwd 守护进程未启动。 启动 iwd 守护进程

参见