介绍
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
下面列举一些常用网络配置选项:
03. 设定随机化范围
iwd配置中还有一个AddressRandomizationRange
选项,用来控制地址的哪一部分是随机化的,那一部分是真实的。
当你把“AddressRandomizationRange
”设置为“nic
”时,仅NIC特定的字节(最后3个字节)是随机的。有一点要注意,随机范围限制为00:00:01至00:00:FE。物理网卡的mac地址用于前3个字节。
当使用“AddressRandomizationRange
”设置为“full
”时,MAC地址的6个字节都是随机的。
END