介绍
iNet Wireless Daemon(iwd) 项目旨在为基于 Linux 的设备提供全面的 Wi-Fi 连接解决方案,由 Intel 团队进行维护开发。该项目的核心目标是通过不依赖于任何外部库,并最大限度地利用 Linux 内核提供的功能来优化资源利用率:存储、运行时内存和链路时间成本。是一个仅依赖于 Linux 内核和运行时 C 库的自包含环境(self-contained environment)。 项目架构 iwd 的基本架构如下图所示:
iwd 需要使用 ell(Embedded Learning Library)这个库来进行编译守护进程和控制实用程序的开发版本。 iwd 将 Linux 内核的 crypto 子系统用于所有加密操作,不使用OpenSSL或任何其他用户空间加密库。
安装
直接使用各个发行版自带的包管理器下载即可,这里以 arch 系的pacman
为例:
pacman -S iwd
安装完软件包之后,直接使用systemctl enable iwd.service
命令启动 iwd 服务。
基本使用方法
启动iwctl
键入以下命令进入交互式命令行:
$ iwctl
[iwd]#
注意:这里的[iwd]#
是交互式命令行的提示符。
连接到网络
首先,如果你不知道无线设备名称,使用下面的命令列出所有 Wi-Fi 设备:
[iwd]# device list
然后,要扫描网络:
[iwd]# station device scan
然后,您可以列出所有可用的网络:
[iwd]# station device get-networks
最后,要连接到网络:
[iwd]# station device connect SSID
如果你想要手动断开网络链接,使用以下命令:
[iwd]# station device disconnect
要列出以前已连接到的网络:
[iwd]# known-networks list
要忘记已知网络:
[iwd]# known-networks SSID forget
要显示 WiFi 设备的详细信息(如 MAC 地址):
[iwd]# device device show
要显示连接状态,包括 Wi-Fi 设备的连接网络:
[iwd]# station device show
如果你想进行其他操作,可以在交互式命令行中输入help
获取帮助信息。
进阶使用
使用内置的网络配置
iwd 内置DHCP 客户端以及静态配置 IP 地址的功能,所以你可以不用使用独立的 dhcpd 软件包来管理网络。 如果使用 iwd 的网络配置功能,需要编辑/etc/iwd/main.conf
并添加以下部分(如果不存在就手动创建):
[General]
EnableNetworkConfiguration=true
MAC 地址随机化
01. 基本方法
IWD 在版本初期已经支持将 MAC 地址随机化了,不过刚开始在 IWD 的整个生命周期内仅对地址随机化了一次。在 1.6 版本中,添加了基于每个网络的随机地址的功能。这个功能可以在 IWD 的主配置文件(默认为/etc/iwd/main.conf
)中启用此功能:
# main.conf
[General]
AddressRandomization=network
p.s.如果设置AddressRandomization=once__,MAC 地址只在 iwd 启动或硬件启动时第一次被检测到时随机化一次;如果设置 AddressRandomization=disabled,显而易见,就是不隐藏 MAC 地址,使用真实地 MAC 地址。
其实这个时候的 MAC 地址并不是真正意义上的随机,而是伪随机,因为这个 MAC 地址是使用 SHA256 摘要从永久适配器地址和所连接的 SSID 生成的—这也就意味着,如果使用同一个网络所随机化生成的 MAC 地址是一样的。通常来说,对于普通用户来说已经足够了。
02. 高级方法
如果你想使用 IWD 来完全随机化你的 MAC 地址,那么可以使用AlwaysRandomizeAddress
选项来生成。
AlwaysRandomizeAddress=true
下面列举一些常用网络配置选项:![常用网络配置选项](/media/editor/Screenshot 2023-01-14 222054_20230114222118417000.png)03. 设定随机化范围
iwd 配置中还有一个AddressRandomizationRange
选项,用来控制地址的哪一部分是随机化的,那一部分是真实的。
当你把“AddressRandomizationRange
”设置为“nic
”时,仅 NIC 特定的字节(最后3 个字节)是随机的。有一点要注意,随机范围限制为 00:00:01 至 00:00:FE。物理网卡的 mac 地址用于前 3 个字节。
当使用“AddressRandomizationRange
”设置为“full
”时,MAC 地址的 6 个字节都是随机
Sooner or later, everything ends.