⚠️ This post was last updated on October 5, 2020 and the content may be OUTDATED!
If you encounter any issues, please feel free to reachout to me!
介绍
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.