跳转至内容

iwd

来自 ArchWiki

iwd (iNet wireless daemon) 是由英特尔开发的 Linux 无线守护进程。该项目的核心目标是通过不依赖任何外部库,转而最大限度地利用 Linux 内核提供的功能,从而优化资源利用率。

iwd 可以作为独立模式运行,也可以与全面的网络管理器(如 ConnMansystemd-networkdNetworkManager)结合使用。

注意 当通过网络管理器使用 iwd 时,请勿遵循此页面上的说明,除非该网络管理器的文章中明确说明。

安装

安装 iwd 软件包。

此外,还可以安装第三方图形化和终端用户界面前端

  • impala — iwd 的终端用户界面 (TUI)。
https://github.com/pythops/impala || impala
  • iwdgui — iwd 的图形化前端。
https://gitlab.com/hfernh/iwdgui || iwdguiAUR
  • iwgtk — iwd 的图形化前端和指示器(托盘)图标。
https://github.com/J-Lentz/iwgtk || iwgtkAUR
  • iwmenu — iwd 的菜单驱动界面。
https://github.com/e-tho/iwmenu || iwmenu-gitAUR
  • iwqt — 适用于 Linux 系统的 iwd 网络小程序。
https://github.com/fingu/iwqt || iwqtAUR

用法

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

启动/启用 iwd.service,以便可以通过 iwctl 命令或您偏好的 iwd 前端进行控制。

注意 只有 root 用户和 networkwheel 用户组的成员才被允许与 iwd 交互。为了使用 iwctl 或其他前端,您需要将您的用户添加到其中一个组中

iwctl

要进入交互式提示符,请执行

$ iwctl

交互式提示符将以 [iwd]# 为前缀显示。

提示
  • iwctl 提示符下,您可以通过按 Tab 键自动补全命令、设备名称和 SSID。
  • 要退出交互式提示符,请按 Ctrl+d 发送 EOF
  • 您可以将所有命令作为命令行参数使用,无需进入交互式提示符。例如:iwctl device wlan0 show

列出所有可用命令

[iwd]# help

连接到网络

首先,如果您不知道无线设备名称,请列出所有 Wi-Fi 设备

[iwd]# device list

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

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

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

[iwd]# station name scan

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

[iwd]# station name get-networks

最后,连接到网络

[iwd]# station name connect SSID

如果网络是隐藏的

[iwd]# station name connect-hidden SSID
注意 如需通过 DHCP 进行自动 IP 和 DNS 配置,您必须手动启用内置 DHCP 客户端或配置独立的 DHCP 客户端

如果需要密码(并且该密码尚未存储在 iwd 自动检查的配置文件中),系统将提示您输入密码。或者,您也可以将其作为命令行参数提供

$ iwctl --passphrase passphrase station name connect SSID
  • iwd 会自动将网络密码存储在 /var/lib/iwd 目录中,并使用它们在将来自动连接。请参阅 #网络配置
  • 要连接到 SSID 中包含空格的网络,连接时应使用双引号括住网络名称。
  • iwd 仅支持 8 到 63 个 ASCII 字符的 PSK 密码。如果不满足要求,将收到以下错误消息:PMK generation failed. Ensure Crypto Engine is properly configured

使用 WPS/WSC 连接到网络

如果您的网络配置为可以通过按下按钮连接(维基百科:Wi-Fi Protected Setup),请先检查您的网络设备是否也支持此设置过程。

[iwd]# wsc list

然后,假设您的设备出现在上面的列表中,

[iwd]# wsc device push-button

并按下路由器上的按钮。如果按钮提前按下(在 2 分钟内),此过程也有效。

如果您的网络需要验证 PIN 码才能以这种方式连接,请查看 help 命令的输出,了解如何向 wsc 命令提供正确的选项。

断开网络连接

要断开与网络的连接

[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

iwgtk

此外,iwgtkAUR 提供了一个 GUI 前端,通过它可以使用 iwd。

运行不带任何参数的 iwgtk 将启动应用程序窗口,可用于切换适配器和设备开关、更改运行模式、查看可用网络、连接到可用网络以及管理已知网络。

指示器图标

要启动 iwgtk 的指示器(托盘)图标守护进程,请运行

$ iwgtk -i

如果未显示指示器图标,则说明您的系统托盘可能缺乏对 StatusNotifierItem API 的支持,在这种情况下,您需要运行兼容层,例如 snixembed-gitAUR

以下系统托盘支持 StatusNotifierItem,因此可以直接开箱即用

  • KDE Plasma
  • swaybar
  • lxqt-panel
  • xfce4-panel

以下托盘仅支持 XEmbed,因此需要 snixembed-gitAUR

自启动

iwgtk 最常见的用例是在每次登录桌面时启动指示器守护进程。如果您的桌面环境支持 XDG Autostart 标准,由于 AUR 软件包放置在 /etc/xdg/autostart/ 中的 iwgtk-indicator.desktop 文件,这应该会自动发生。

或者,AUR 软件包也提供了一个启动指示器守护进程的 systemd 单元文件。如果您的桌面环境支持 systemd 的 graphical-session.target 单元,则可以通过启用 iwgtk.service 用户单元来通过 systemd 自动启动 iwgtk。

网络配置

默认情况下,iwd 将网络配置存储在 /var/lib/iwd 目录中。配置文件命名为 network.type,其中 network 是网络 SSID,.type 是网络类型(.open.psk.8021x)。该文件用于存储加密的 PreSharedKey 以及(可选的)明文 Passphrase,也可以由用户创建,无需调用 iwctl。该文件还可以用于与该网络 SSID 有关的其他配置。有关更多设置,请参阅 iwd.network(5)

注意 在字符串值(包括身份和密码)中,某些字符可能需要反斜杠转义。前导空格、\n、\r 和文字反斜杠必须转义。请参阅 iwd.network(5)

WPA-PSK

一个连接到 SSID 为 "spaceship"、密码为 "test1234" 的 WPA-PSK 或 WPA2-PSK 加密网络的最小示例文件

/var/lib/iwd/spaceship.psk
[Security]
PreSharedKey=aafb192ce2da24d8c7805c956136f45dd612103f086034c402ed266355297295
注意 只有当 SSID 仅包含字母数字字符或 - _ 之一时,才会将其作为文件名。如果包含任何其他字符,名称将变为 = 字符,后跟十六进制编码的(十六进制数字使用小写字母)SSID 版本。

要从密码计算预共享密钥,可以使用以下两种方法之一

  • 在配置文件中以明文输入密码
/var/lib/iwd/spaceship.psk
[Security]
Passphrase=test1234
预共享密钥将在第一次连接时追加到文件中
/var/lib/iwd/spaceship.psk
[Security]
Passphrase=test1234
PreSharedKey=aafb192ce2da24d8c7805c956136f45dd612103f086034c402ed266355297295

WPA 企业版

EAP-PWD

要连接到受 EAP-PWD 保护的企业接入点,您需要在 /var/lib/iwd 目录中创建一个名为 essid.8021x 的文件,内容如下

/var/lib/iwd/essid.8021x
[Security]
EAP-Method=PWD
EAP-Identity=your_enterprise_email
EAP-Password=your_password

[Settings]
AutoConnect=true

如果您不想自动连接到接入点,可以将 AutoConnect 选项设置为 False,然后通过 iwctl 手动连接。密码也是如此,如果您不想以明文形式存储它,请不要在文件中包含该选项,直接连接到企业级 AP 即可。

注意 无法更改不同 SSID 的优先级,您可以设置 AutoConnect=false 作为变通方法。

EAP-PEAP

与 EAP-PWD 一样,您也需要在目录中创建一个 essid.8021x 文件。在继续编写配置文件之前,这也是查明您组织使用的 CA 证书的好时机。这是一个使用 MSCHAPv2 密码验证的示例配置文件

/var/lib/iwd/essid.8021x
[Security]
EAP-Method=PEAP
EAP-Identity=anonymous@realm.edu
EAP-PEAP-CACert=/path/to/root.crt
EAP-PEAP-ServerDomainMask=radius.realm.edu
EAP-PEAP-Phase2-Method=MSCHAPV2
EAP-PEAP-Phase2-Identity=johndoe@realm.edu
EAP-PEAP-Phase2-Password=hunter2

[Settings]
AutoConnect=true

MsCHAPv2 密码也可以存储为加密哈希。可以使用以下命令计算正确的 md4 哈希

$ iconv -t utf16le | openssl md4 -provider legacy

通过按 Ctrl+d 在密码后插入 EOF,不要按 Enter。生成的哈希需要存储在 EAP-PEAP-Phase2-Password-Hash 键中。

提示 如果您打算使用 eduroam,请另参阅 #eduroam

TTLS-PAP

与 EAP-PWD 一样,您也需要在目录中创建一个 essid.8021x 文件。在继续编写配置文件之前,这也是查明您组织使用的 CA 证书的好时机。这是一个使用 PAP 密码验证的示例配置文件

/var/lib/iwd/essid.8021x
[Security]
EAP-Method=TTLS
EAP-Identity=anonymous@uni-beispiel.de
EAP-TTLS-CACert=cert.pem
EAP-TTLS-ServerDomainMask=*.uni-beispiel.de
EAP-TTLS-Phase2-Method=Tunneled-PAP
EAP-TTLS-Phase2-Identity=user
EAP-TTLS-Phase2-Password=password

[Settings]
AutoConnect=true

EAP-TLS

EAP-TLS 使用 x509 客户端证书 来验证您的身份。与 ssh 密钥一样,这些使用公钥加密,因此 Wi-Fi 身份验证服务器永远不需要发送密钥,您也不需要在设备之间复制和重用密码。通常每个设备都会使用不同的证书,理论上可以撤销该证书,而无需强制您更改密码或影响您的其他设备。

与其他企业级方法一样,您需要知道您的组织使用的 CA 证书 (cacert.pem),该证书用于向您的设备证明它正在连接到正确的位置。您还需要拥有代表您的客户端证书,该证书将在每次连接时上传 (client-cert.pem),以及随之使用的私钥 (client-key.pem),该私钥用于证明您拥有该客户端证书。

您可以提供所需证书的路径,或者将其嵌入到您的配置中

收集完凭据后,将其放入您的 /var/lib/iwd/essid.8021x 文件中

/var/lib/iwd/essid.8021x
[Security]

EAP-Method=TLS
EAP-TLS-CACert=/path/to/cacert.pem
EAP-Identity=your_enterprise_email
EAP-TLS-ClientCert=/path/to/client-cert.pem
EAP-TLS-ClientKey=/path/to/client-key.pem
#EAP-TLS-ClientKeyPassphrase=key-passphrase  # if client-key.pem is encrypted, provide its passphrase

[Settings]
AutoConnect=true

eduroam

本文或本章节的准确性存在争议。

原因: CAT 中的 iwd 支持可能无法正常工作(请在 Talk:Iwd#eduroam and iwd section wrong? 中讨论)

Eduroam 提供了一个 配置助手工具 (CAT)。如果您的组织在 CAT 中有配置文件,则可以通过下载 Linux 脚本并使用 python 运行它来连接到 eduroam。在较新版本中,CAT 可以直接创建必要的 iwd 配置文件。使用

python3 eduroam-linux-organisation.py --iwd_conf.

然后通过 GUI 输入您的凭据。配置文件保存在当前工作目录中。您必须手动将其放入 /var/lib/iwd/ 并重启 iwd。您的证书保存在 ~/.config/cat_installer/ca.pem 中,但也直接包含在配置文件中。

如果您的组织所属的 CAT 版本尚不支持 iwd,则可以直接从 CAT python 脚本中提取必要的配置选项,包括证书和服务器域名掩码。此外,一些机构正在升级到 EAP-TLS,并将 client-cert.pem 的生成外包给 SecureW2,在这种情况下,您也需要使用他们的工具来生成客户端证书。

下表包含了 iwd 配置选项与 eduroam CAT 安装脚本变量的映射。

Iwd 配置选项 CAT 脚本变量
essid Config.ssids 之一
EAP-Method Config.eap_outer
EAP-Identity Config.anonymous_identity
EAP-method-CACert Config.CA 的内容,指向包含 Config.CA.pem 文件的绝对路径,或嵌入式证书
EAP-method-ServerDomainMask Config.servers 之一
EAP-method-Phase2-Method Config.eap_inner,除非它等于 PAP,在这种情况下请改用 Tunneled-PAP
EAP-method-Phase2-Identity username@Config.user_realm

其中 methodEAP-Method 的内容,应为 TLSTTLSPEAP。一旦提取了所有必要信息并将其转换为等效的 iwd 配置,您可以按照上述方法将其放入名为 essid.8021x 的配置文件中。

  • 您的 eduroam 提供商可能不需要 EAP-Identity,在这种情况下,您可能需要在该字段中使用 anonymous@Config.user_realm
  • 如果您的 EAP-method-ServerDomainMaskDNS: 开头,则仅使用 DNS: 后面的部分。
提示 不使用 CAT 通过 iwd 连接到 eduroam 的另一种方法是手动创建 /var/lib/iwd/eduroam.8021x 文件。请参阅 #EAP-PEAP[1]

其他情况

可以在上游仓库的测试用例中找到更多示例。

嵌入式证书

除了包含 PEM 文件的绝对路径(用于证书和密钥)之外,还可以将 PEM 本身包含在网络配置文件中。

嵌入式 PEM 可以使用以下格式出现在设置文件的任何位置

[@pem@my_ca_cert]
----- BEGIN CERTIFICATE -----
PEM data
----- END CERTIFICATE -----

其中 my_ca_cert 是您可以用来在配置文件中标识证书的任何名称。

然后,嵌入式证书可以在设置文件中需要证书路径的任何位置使用,方法是在值前加上 embed:

EAP-TTLS-CACert=embed:my_ca_cert

这不仅限于 CA 证书。客户端证书、客户端密钥(加密或不加密)和证书链都可以包含在内。

有线以太网上的 WPA

对于有线以太网连接上的 WPA,请按照上述方法创建配置,但将其放置在 /var/lib/ead 目录中。

之后启动/启用 ead.service

可选配置

文件 /etc/iwd/main.conf 可用于主要配置。请参阅 iwd.config(5)

禁用特定网络的自动连接

创建编辑 文件 /var/lib/iwd/network.type。在其中添加以下部分

/var/lib/iwd/spaceship.psk (for example)
[Settings]
AutoConnect=false

禁用对可用网络的周期性扫描

默认情况下,当 iwd 处于断开状态时,它会定期扫描可用网络。要禁用周期性扫描(以便始终手动扫描),请创建/编辑文件 /etc/iwd/main.conf 并在其中添加以下部分

/etc/iwd/main.conf
[Scan]
DisablePeriodicScan=true

启用内置网络配置

从 0.19 版本开始,iwd 可以使用内置 DHCP 客户端或静态配置来分配 IP 地址并设置路由。它是 独立 DHCP 客户端 的良好替代方案。

要激活 iwd 的网络配置功能,请创建/编辑 /etc/iwd/main.conf 并添加以下部分

/etc/iwd/main.conf
[General]
EnableNetworkConfiguration=true

还可以通过 RoutePriorityOffset 设置路由度量值

/etc/iwd/main.conf
[Network]
RoutePriorityOffset=300

IPv6 支持

从 1.10 版本开始,iwd 支持 IPv6,但在 2.0 以下的版本中默认禁用。自 2.0 版本起,它默认启用。

要禁用它,请在配置文件中添加以下内容

/etc/iwd/main.conf
[Network]
EnableIPv6=false

要在 2.0 以下且高于 1.10 的版本中启用它

/etc/iwd/main.conf
[Network]
EnableIPv6=true

无论您是要使用 DHCPv6 还是静态 IPv6 配置,都需要启用此设置。它也可以按网络进行设置。

在网络配置中设置静态 IP 地址

将以下部分添加到 /var/lib/iwd/network.type 文件中。例如

/var/lib/iwd/spaceship.psk
[IPv4]
Address=192.168.1.10
Netmask=255.255.255.0
Gateway=192.168.1.1
Broadcast=192.168.1.255
DNS=192.168.1.1

选择 DNS 管理器

目前,iwd 支持两个 DNS 管理器——systemd-resolvedresolvconf

systemd-resolved 将以下部分添加到 /etc/iwd/main.conf

/etc/iwd/main.conf
[Network]
NameResolvingService=systemd

对于 resolvconf

/etc/iwd/main.conf
[Network]
NameResolvingService=resolvconf
注意 如果未指定,systemd-resolved 将被用作默认值,并推荐用于 systemd 使用

配置 MAC 地址随机化

请参阅 MAC 地址欺骗#iwd

允许任何用户读取状态信息

如果您想允许任何用户读取状态信息但不能修改设置,您可以创建以下 D-Bus 配置文件

/etc/dbus-1/system.d/iwd-allow-read.conf
<!-- Allow any user to read iwd status information. Overrides some part
     of /usr/share/dbus-1/system.d/iwd-dbus.conf. -->

<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>

  <policy context="default">
    <deny send_destination="net.connman.iwd"/>
    <allow send_destination="net.connman.iwd" send_interface="org.freedesktop.DBus.Properties" send_member="GetAll" />
    <allow send_destination="net.connman.iwd" send_interface="org.freedesktop.DBus.Properties" send_member="Get" />
    <allow send_destination="net.connman.iwd" send_interface="org.freedesktop.DBus.ObjectManager" send_member="GetManagedObjects" />
    <allow send_destination="net.connman.iwd" send_interface="net.connman.iwd.Device" send_member="RegisterSignalLevelAgent" />
    <allow send_destination="net.connman.iwd" send_interface="net.connman.iwd.Device" send_member="UnregisterSignalLevelAgent" />
  </policy>

</busconfig>

加密网络配置文件

本文章或章节需要扩充。

原因: 加密网络配置文件可能在某些设置下无法工作。(请在 Talk:Iwd 中讨论)

默认情况下,iwd 会以未加密的方式将网络凭据存储到系统中。自 iwd 1.25 版本起,iwd 为使用 systemd 的系统提供了创建 加密配置文件 的实验性支持。

首先,创建一个加密凭据。以下示例使用 systemd-creds 并创建一个名为 iwd-secret 的加密凭据,该凭据绑定到系统的 可信平台模块 (TPM),并将用于创建加密配置文件

# systemd-ask-password -n | systemd-creds --tpm2-device=auto --name=iwd-secret encrypt - /etc/credstore.encrypted/iwd-secret.cred

接下来,通过为 iwd 服务创建一个 插入式文件 来添加 LoadCredentialEncrypted 选项。

/etc/systemd/system/iwd.service.d/use-creds.conf
[Service]
LoadCredentialEncrypted=iwd-secret:/etc/credstore.encrypted/iwd-secret.cred

最后,将带有指定凭据名称的 SystemdEncrypt 选项添加到 iwd 配置文件中,重新加载 systemd 管理器,并重启 iwd 服务。

/etc/iwd/main.conf
[General]
...
SystemdEncrypt=iwd-secret
  • 系统上当前的任何配置文件都将自动加密。此时无需执行其他操作,未来的任何配置文件都将自动加密。
  • 在上面的示例中,加密凭据隐含绑定到 TPM PCR 7。因此,如果安全启动状态或固件证书发生更改,则该启动会话将无法连接到网络。

故障排除

详细的 TLS 调试

如果您在设置 MSCHAPv2 或 TTLS 时遇到困难,这会很有用。您可以通过 插入式片段 设置以下 环境变量

/etc/systemd/system/iwd.service.d/tls-debug.conf
[Service]
Environment=IWD_TLS_DEBUG=TRUE

之后,以 root 用户身份运行 journalctl -u iwd.service 来检查 iwd 日志。

开机后重启 iwd.service

据报告,在某些机器上,iwd.service 在开机后必须重启才能工作。请参阅 FS#63912线程 251432。这可能是因为 iwd 在无线网卡通电之前启动。

作为变通方法,通过 systemctl list-units --type=device | grep wlan0 找到需要等待的单元,并相应地扩展该单元

/etc/systemd/system/iwd.service.d/override.conf
[Unit]
After=sys-XXXX-net-wlan0.device
Wants=sys-XXXX-net-wlan0.device

然后重新加载 systemd 管理器配置。

如果不行,也尝试

[Service]
ExecStartPre=ip link set wlan0 up

无线设备未被 udev 重命名

从 1.0 版本开始,iwd 禁用了网络接口重命名为可预测的网络接口名称。它安装了以下 systemd.link(5) 配置文件,该文件阻止 udev 将接口重命名为可预测、稳定的名称(例如 wlp#s#

/usr/lib/systemd/network/80-iwd.link
[Match]
Type=wlan

[Link]
NamePolicy=keep kernel

结果是无线链路名称 wlan# 在开机后得以保留。这解决了 iwdudev 在接口重命名方面的竞争条件,如 iwd udev 接口重命名 中所述。

如果这导致问题,请尝试通过以下方式将其屏蔽

# ln -s /dev/null /etc/systemd/network/80-iwd.link

AP 模式下无 DHCP

当以 AP 模式连接到 iwd 时,客户端可能无法通过 DHCP 获取 IP 地址。因此,有必要在托管接口上启用 iwd 的网络配置

/etc/iwd/main.conf
[General]
EnableNetworkConfiguration=True

如果提到的文件不存在,必须创建它。

因 iwd 崩溃导致 Wi-Fi 不断断开

一些用户在使用 Wi-Fi 时会遇到断开连接的情况,不断重新连接但最终稳定下来并设法连接。

用户在他们的 日志 中报告了 iwd.service 的崩溃 ([2])。

核心问题是存在多个相互冲突的服务来管理他们的网络连接。检查您没有同时启用它们以解决此问题。

加载客户端私钥时出错

要加载密钥文件,iwd 需要 pkcs8_key_parser 内核模块。虽然在开机时它是通过 systemd-modules-load.service(8) 使用 /usr/lib/modules-load.d/pkcs8.conf 加载的,但如果刚刚安装了 iwd,情况并非如此。

如果在尝试连接到 WPA 企业级网络时,日志 中出现类似 Error loading client private key /path/to/key 的消息,请手动加载该模块

# modprobe pkcs8_key_parser

iwd 不断漫游

如果连接太差,iwd 将漫游到其他已知的 AP。

这将在系统日志中显示为 wlan0: deauthenticating from xx:xx:xx:xx:xx:xx by local choice (Reason: 3=DEAUTH_LEAVING)

您可以使用以下命令查看连接信号强度

iwctl station wlan0 show | grep RSSI

您可以增加阈值以允许更差的连接。RoamThreshold 默认为 -70,RoamThreshold5G 默认为 -76。

/etc/iwd/main.conf
[General]
RoamThreshold=-75
RoamThreshold5G=-80

DHCP 请求中未发送主机名

在网络配置文件中设置 SendHostname,而不是在 /etc/iwd/main.conf 中设置。

/var/lib/iwd/SomeNetwork.psk
...
[IPv4]
SendHostname=true

/etc/resolv.conf:只读文件系统

当使用 resolvconf 作为 DNS 解析方法时,它在尝试写入 /etc/resolv.conf 时可能会遇到问题,提示文件系统为只读

$ journalctl -u iwd.service
Jun 14 14:08:12 host iwd[1170270]: event: state, old: disconnected, new: autoconnect_quick
Jun 14 14:08:12 host iwd[1170270]: udev interface=wlan0 ifindex=6
Jun 14 14:08:13 host iwd[1170270]: event: connect-info, ssid: <redacted>, bss: <redacted>, signal: -63, load: 0/255
Jun 14 14:08:13 host iwd[1170270]: event: state, old: autoconnect_quick, new: connecting (auto)
Jun 14 14:08:13 host iwd[1170270]: event: state, old: connecting (auto), new: connecting (netconfig)
Jun 14 14:08:14 host iwd[1170315]: cp: cannot create regular file '/etc/resolv.conf.bak': Read-only file system
Jun 14 14:08:14 host iwd[1170316]: /usr/lib/resolvconf/libc: line 257: /etc/resolv.conf: Read-only file system
Jun 14 14:08:16 host iwd[1170366]: cp: cannot create regular file '/etc/resolv.conf.bak': Read-only file system
Jun 14 14:08:16 host iwd[1170367]: /usr/lib/resolvconf/libc: line 257: /etc/resolv.conf: Read-only file system
Jun 14 14:08:16 host iwd[1170270]: event: state, old: connecting (netconfig), new: connected

要解决此问题,请通过添加插入式文件来扩展 iwd.service systemd 单元的配置

/etc/systemd/system/iwd.service.d/50-resolvconf.conf
[Service]
RuntimeDirectory=resolvconf
ReadWritePaths=/etc/resolv.conf

这将允许 iwd.service 系统单元更新 /etc/resolv.conf重启 iwd.service 以使更改生效。

注意 关于此问题的讨论可在上游邮件列表中找到:Re: iwd doesn't work with openresolv

连接到 iPhone 热点反复失败

连接到 iPhone 个人热点时,iwd 可能会反复连接并立即断开,日志中显示 connect-failed, status: 1

$ journalctl -b -u iwd
event: state, old: connected, new: disconnecting
event: connect-failed, status: 1
event: state, old: connecting, new: disconnected

这可能是因为 MAC 地址随机化干扰了 iPhone 的热点身份验证。要解决此问题,请在 iwd 配置中设置 AddressRandomization

/etc/iwd/main.conf
[General]
AddressRandomization=once

然后重启 iwd.service

如果问题仍然存在,请尝试设置 AddressRandomization=disabled


参见

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.