iwd的使用教程

SMJ
loading... read

介绍

iNet Wireless Daemon(iwd) 项目旨在为基于 Linux 的设备提供全面的 Wi-Fi 连接解决方案,由 Intel 团队进行维护开发。该项目的核心目标是通过不依赖于任何外部库,并最大限度地利用 Linux 内核提供的功能来优化资源利用率:存储、运行时内存和链路时间成本。是一个仅依赖于 Linux 内核和运行时 C 库的自包含环境(self-contained environment)。 项目架构 iwd 的基本架构如下图所示:

iwd 需要使用 ell(Embedded Learning Library)这个库来进行编译守护进程和控制实用程序的开发版本。 iwd 将 Linux 内核的 crypto 子系统用于所有加密操作,不使用OpenSSL或任何其他用户空间加密库。

image

安装

直接使用各个发行版自带的包管理器下载即可,这里以 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.