iwd - Arch Linux 中文维基

跳至內容

# iwd

出自 Arch Linux 中文维基

翻譯狀態：

- 本文（或部分內容）譯自 iwd，最近一次同步於 2025-07-06，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

相關文章

- Network configuration
- Wireless network configuration
- wpa_supplicant

iwd (iNet wireless daemon，iNet 無線守護程序) 是由英特爾（Intel）為 Linux 編寫的一個無線網絡守護程序。該項目的核心目標是不依賴任何外部庫，而是最大程度地利用 Linux 內核提供的功能來優化資源利用。

iwd 可以獨立工作，也可以和 ConnMan、systemd-networkd 和 NetworkManager 這樣更完善的網絡管理器結合使用。

注意：當通過 NetworkManager 使用 iwd 時，除非 NetworkManager 的文章中另有說明，否則請不要按照本頁上的說明操作。

## 安裝

安裝 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 || iwgtkCNRepo

- iwmenu — iwd 的菜單驅動界面。

  https://github.com/e-tho/iwmenu || iwmenu-gitAUR

## 使用方法

iwd包 軟體包提供了客戶端程序 `iwctl`、守護程序 `iwd` 和 WiFi 監控工具 `iwmon`。

啟動/啟用 `iwd.service` 以便可以使用 `iwctl` 或 `iwgtk` 對其進行控制。

注意：僅允許root、`network` 或 `wheel` 用戶組 的成員與 iwd 交互。為了使用 iwctl 或 iwgtk，您需要 將您的用戶添加到其中一個組.

### iwctl

要進入交互式提示符（interactive prompt），執行：

    $ iwctl

然後交互式提示符就會以 `[iwd]#` 前綴顯示出來了。

提示：

- 在 `iwctl` 提示符中，可以通過 `Tab` 鍵自動補全命令和設備名稱。
- 要退出交互式提示，按下 `Ctrl+d` 發送 EOF 信號。
- 可以在不進入交互式提示符的情況下，將所有命令當作命令行參數使用。例如：`iwctl device wlan0 show`。

要列出所有可用的命令：

    [iwd]# help

#### 連接網絡

首先，使用 rfkill 命令確認 Wi-Fi 設備未被屏蔽。

如果不知道你的網絡設備名稱，請列出所有 WiFi 設備：

    [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

注意：* 對於通過 DHCP 的 IP 和 DNS 自動配置，您需要 手動啟用 內置 DHCP 客戶端，或配置一個 獨立 DHCP 客戶端。
提示：用戶界面支持自動補全，輸入 `station` 後按壓 `Tab` `Tab`，將顯示可用的設備，鍵入設備的首字母和 `Tab` 將自動補全。同樣，輸入 `connect` 和 `Tab` `Tab` 以顯示可用網絡列表。然後，鍵入所選網絡的首字母，後跟 `Tab`，以自動補全。

當網路密碼尚未儲存在 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 連接網絡

如果網絡配置為可以通過按下一個按鈕就能進行連接 (Wikipedia:Wi-Fi Protected Setup，WPS，WiFi 保護配置)，先檢查設備是否能兼容以下配置步驟：

    [iwd]# wsc list

然後，假設設備出現在了上面的列表中：

    [iwd]# wsc device push-button

接著按下路由器上的按鈕。如果提前按下按鈕，但只要少於兩分鐘前，以上步驟也是可以生效的。

如果網絡要求驗證 PIN 碼才能連接，請檢查 `help` 命令的輸出，了解如何為 `wsc` 命令提供正確的選項。

#### 斷開網絡連接

要斷開網絡連接：

    [iwd]# station device disconnect

#### 顯示設備和連接信息

要顯示 WiFi 設備詳細情況，比如 MAC 地址：

    [iwd]# device device show

要顯示包括 WiFi 設備的連接網絡在內的連接狀態：

    [iwd]# station device show

#### 管理已知網絡

要列出以前連接過的網絡：

    [iwd]# known-networks list

要忘記已知的網絡：

    [iwd]# known-networks SSID forget

### iwgtk

另外，iwgtkCNRepo 提供了一個 GUI 前端，也通過它可以控制 iwd。

不加任何參數運行 `iwgtk` 將啟動一個 iwd 的管理窗口，它能被用於切換適配器的開關、更改操作模式、查看或連結可用的無線網絡、管理已保存的網絡。

#### 托盤圖標

要啟動 iwgtk 的托盤圖標請運行：

    $ iwgtk -i

如果托盤中的圖標沒有出現，則你的系統托盤很可能不支持 StatusNotifierItem API，這種情況下你需要使用一個兼容層（例如snixembed-gitAUR）。 下面的系統托盤支持 StatusNotifierItem API，因此無需兼容層：

- KDE Plasma
- swaybar
- xfce4-panel

下面的托盤只支持 XEmbed 因此需要snixembed-gitAUR：

- AwesomeWM
- i3bar

#### 自啟動

每次登錄桌面時自啟動 iwgtk 的托盤圖標是常見的用法。如果你的桌面環境支持 XDG Autostart 標準，則 iwgtk 托盤圖標的自啟動無需額外配置，因為 iwgtkCNRepo 將 `iwgtk-indicator.desktop` 文件放置在了 `/etc/xdg/autostart/`。 作為上面的方法的替代， iwgtkCNRepo提供了一個用來自啟動托盤進程的 systemd 單元文件.如果你的桌面環境支持 systemd 的 `graphical-session.target` 單元, 則 iwgtk 能在 Systemd#使用單元了 `iwgtk.service` 用戶單元後被 systemd 自動啟動。

## 網絡配置

iwd 默認在 `/var/lib/iwd` 目錄下儲存網絡配置。配置文件名形如 `網絡.類別`，其中網絡是該網絡的 SSID，類別是網絡類別，是 .open, .psk, .8021x 之一。文件儲存加密的 `PreSharedKey` 和可選的 cleartext `Passphrase`，可以不調用 `iwctl` 由用戶創建。該文件亦可用作隸屬該網絡 SSID 的其他配置。參見 iwd.network(5) 獲得更詳盡的設置。

注意：在字符串值中，包括身份和密碼，特定字符被反斜槓轉義。開頭的空格，\n，\r 以及反斜槓必須轉義表達。參見 iwd.network(5)。

### WPA-PSK

一個連接到 WPA-PSK 或 WPA2-PSK 安全網絡的最小示例文件，其 SSID "spaceship"，Passphrase "test1234"：

    /var/lib/iwd/spaceship.psk

    [Security]
    PreSharedKey=aafb192ce2da24d8c7805c956136f45dd612103f086034c402ed266355297295

注意：網絡的 SSID 僅當其僅包含字母，數字或 `- _` 兩字符之一時作為文件名。如果其包含其他字符，文件名將替代為`=`字符後SSID的十六進制編碼（十六進制數使用小寫字母）。

下列兩種方法可以根據 passphrase 計算 pre-shared key：

- 在配置文件的 cleartext 輸入 passphrase：

    /var/lib/iwd/spaceship.psk

    [Security]
    Passphrase=test1234

pre-shared key 會在第一次連接時自動追加到文件末尾：

    /var/lib/iwd/spaceship.psk

    [Security]
    Passphrase=test1234
    PreSharedKey=aafb192ce2da24d8c7805c956136f45dd612103f086034c402ed266355297295

- 亦可使用 wpa_passphrase（自wpa_supplicant包 或 wpa-pskAUR），用 SSID 與 passphrase 計算 pre-shared key。
- 參見 wpa_supplicant#Connecting with wpa_passphrase 獲得更多細節。

### WPA Enterprise

#### EAP-PWD

為了連接到受 EAP-PWD 保護的企業（無線）訪問接入點 (Access Point, AP)，需要在 `/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

如果不想自動連接到 AP，可以將相應選項設定為 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-test.de
    EAP-TTLS-CACert=cert.pem
    EAP-TTLS-ServerDomainMask=*.uni-test.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 密鑰一樣，這些證書使用公鑰加密，因此永不需要向 wifi 驗證伺服器發送密鑰，您也無需複製和重複使用密碼。通常情況下，每台設備都會使用不同的證書。理論上，至少可以在不強迫你更改密碼或中斷其他設備的情況下撤銷證書。

與其他企業級方法一樣，您需要知道貴組織使用的 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  #如果 client-key.pem 是加密的，請提供其密碼。

    [Settings]
    AutoConnect=true

#### Eduroam

通過 iwd 連接 eduroam 的方法詳見以下文件，並填寫必要的信息：

    /var/lib/iwd/eduroam.8021x

    [Security]
    EAP-Method=PEAP
    EAP-Identity=anonymous@university.domain
    EAP-PEAP-Phase2-Method=MSCHAPV2
    EAP-PEAP-Phase2-Identity=username@university.domain
    EAP-PEAP-Phase2-Password=password

    [Settings]
    AutoConnect=true

本文或本章節的事實準確性存在爭議。

原因： CAT 中對 iwd 的支持不可用（在 Talk:Iwd 中討論）

Eduroam 提供了一個配置助手工具 (Configuration Assistant Tool，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`

其中 `method` 是 `EAP-Method` 的內容，應為 `TLS`、`TTLS` 或 `PEAP`。 提取所有必要信息，並轉換、使之與 iwd 配置等價後，就可以按照前面的方法將其放入名為 `essid.8021x` 的配置文件中。

注意：

- Eduroam 提供方可能不要求使用 `EAP-Identity`，在這種情況下可以在選項欄位裡寫上 `anonymous`。
- 若您的 `EAP-method-ServerDomainMask` 以 `DNS:`開始，只使用 `DNS:` 以後的部分。

#### 其他情況

更多測試範例可在上游倉庫的測試案例中找到。

#### 內嵌證書

除了使用 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 證書。客戶端證書、客戶端密鑰（無論是否加密）以及證書鏈都可以包含在內。

## 可選配置

文件 `/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` 設置路由指標（route metric）：

    /etc/iwd/main.conf

    [Network]
    RoutePriorityOffset=300

#### IPv6 支持

自從 1.10 版本，iwd 支持 IPv6，但在 2.0 版本以下默認禁用。2.0 版本後默認啟用。

欲禁用之，在配置文件下添加以下內容：

    /etc/iwd/main.conf

    [Network]
    EnableIPv6=false

要在高於 1.10 低於 2.0 版本啟用它：

    /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-resolved 和 resolvconf。

要使用 `systemd-resolved`，將下列部分添加到 `/etc/iwd/main.conf` 中：

    /etc/iwd/main.conf

    [Network]
    NameResolvingService=systemd

而對於 `resolvconf`，添加的為:

    /etc/iwd/main.conf

    [Network]
    NameResolvingService=resolvconf

注意：若未指定，默認使用 systemd-resolved，並推薦其用於systemd.

### 允許任何用戶讀取狀態信息

如果想允許任何用戶讀取狀態信息，但不允許修改設置，請按如下所示創建一個 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的加密憑據，該憑據與系統的Trusted Platform Module綁定，將用於創建加密配置文件：

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

接下來，為 iwd 服務創建一個 drop-in file，添加 `LoadCredentialEncrypted` 選項。

    /etc/systemd/system/iwd.service.d/use-creds.conf

    [Service]

    LoadCredentialEncrypted=iwd-secret:/etc/credstore.encrypted/iwd-secret.cred

最終，在 iwd 配置文件中添加 `SystemdEncrypt` 選項（值為該憑證），重載 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 和 thread 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

或者

    [Service]
    ExecStartPre=/usr/bin/sleep 2

### Wireless device is not renamed by udev

1.0 起，iwd 禁用了可預測的無線設備重命名。它設置了阻止 udev 重命名 `wlp#s#` 接口的以下 systemd 網絡連接配置文件：

    /usr/lib/systemd/network/80-iwd.link

    [Match]
    Type=wlan

    [Link]
    NamePolicy=keep kernel

結果是網絡連結名 `wlan#` 在引導後保留。 這使得 iwd 和 udev 間存在接口重命名的競爭，如 iwd udev interface renaming 所述。

如果造成問題，嘗試以此解決：

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

### 在 AP 模式下無 DHCP

當在 AP 模式下通過 DHCP連接到 iwd 時，客戶端可能收不到 IP 地址。這有必要用 iwd 在管理好的接口上啟用網絡配置。

    /etc/iwd/main.conf

    [General]
    EnableNetworkConfiguration=True

提及文件若不存在則創建。

### 因 iwd 崩潰無法連接 WiFi

一些用戶經歷 WiFi 斷開的情況，通過不斷重連，最終使之穩定並成功連接。

用戶通過 journal 報告 `iwd.service` 崩潰 ([1]) 。

核心問題 是多個網絡連接服務衝突。要解決，請檢查您是否同時啟用多個服務。

### 客戶端密鑰加載錯誤

要加載密鑰文件，iwd 需要 `pkcs8_key_parser` 內核參數。引導時，它由 systemd-modules-load.service(8) 使用 `/usr/lib/modules-load.d/pkcs8.conf` 加載，如果才安裝 iwd，就不會出現這種情況。

當嘗試連接到 WPA 企業網絡時，如在 journal 有例如 `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

解決此問題的方法是，通過添加 drop-in 擴展 `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

## 另請參閱

- 開始使用 iwd（英文）
- 網絡配置設置（英文）
- WPA Enterprise 的更多示例（英文）
- Arch Linux 論壇上的 IWD 帖子（英文）
- 2017 Update on new WiFi daemon for Linux by Marcel Holtmann - YouTube
- The New Wi-Fi Experience for Linux - Marcel Holtmann, Intel - YouTube
- How to set up a simple access point with iwd

分類：​

- 無線網絡
- 網絡配置

隱藏分類：​

- 使用「模板:準確性」標記的頁面或章節

iwd
新增話題