排解網路連線問題:介面設定

診斷 Fuchsia 裝置網路連線問題時,請先確認下列事項:

  • 主機正確列舉已連線的 Fuchsia CDC 裝置。
  • 主機設定正確無誤。

主機是否能偵測到裝置?

判斷主機的 USB 堆疊是否知道 Fuchsia 裝置。如果沒有,就無法設定網路介面。

舉例來說,Google 的公開 USB 供應商 ID (VID) 為 0x18d1,所有 Fuchsia USB 裝置 (CDC 或其他) 都會使用這個 ID。Fuchsia 裝置的產品 ID (PID) 則介於 0xa000-0xafff 之間。

使用 lsusb 指令判斷主機是否看到任何透過 USB 連接的 Fuchsia 裝置,這會回報任何連接裝置的 VID:PID 元組:

lsusb

在輸出內容中尋找提及 Google Inc. CDC Ethernet 的項目。

您可能會看到其他結果,對應的 Google 產品 PID 超出 Fuchsia PID 範圍。

注意:PID=0xa025

部分產品設定不會在列舉的 Fuchsia USB 裝置中公開 CDC 介面。 如果設定僅包含 adb,PID 會是 0xa025。如果看到 PID 為 0xa025 的 Fuchsia 裝置,表示該裝置刻意不含 CDC 介面,因此沒有對應的網路介面可供設定。

CDC 介面是否已正確命名?

Fuchsia CDC 網路介面的命名方式與 zx-XXXXXXXXXXXX 類似,實際介面名稱代表介面的 MAC 位址。

您必須有能正確偵測及命名 Fuchsia CDC 介面的設定。目前 Fuchsia 來源樹狀結構包含 Puppet 指令碼,可在支援的機器上執行。如要執行這項指令碼,您必須使用 NetworkManager、Puppet 和類似 Debian 的 Linux 發行版本。如果上述情況都適用於您,可以使用下列指令執行這個 Puppeteer 指令碼:

curl -s 'https://fuchsia.googlesource.com/fuchsia/+/refs/heads/main/scripts/puppet/networkmanager-cfg.pp?format=TEXT' | base64 -d | sudo puppet apply

接著,您可以使用下列指令檢查介面:

ip -6 --oneline addr | grep 'zx-'

這項指令會尋找以 zx- 為前置字串的 IPv6 介面,並輸出類似下列內容:

$ ip -6 --oneline addr | grep 'zx-'
7: zx-c863147051da    inet6 fe80::ca63:14ff:fe70:51da/64 <snip>

介面是否已指派 Fuchsia CDC 設定檔?

簡單來說,本機 NetworkManager 服務需要使用連結本機 IPv6 位址設定介面,且不得嘗試取得 DHCP 租約。這項設定位於 Fuchsia CDC NetworkManager 連線設定檔中。也就是說,我們必須確保 CDC 介面已套用至設定檔。

使用 nmcli conn show 指令確認已指派正確的設定檔:

nmcli conn show

在 Fuchsia-CDC 設定檔列中,檢查 CDC 介面:

$ nmcli conn show
NAME         UUID                                  TYPE      DEVICE
...
Fuchsia CDC  25b512f5-70e0-4fd3-9bc2-34432a01bc80  ethernet  zx-c863147051da
...

您可以忽略 UUID 欄位,因為這是無關緊要的不透明 ID。

Fuchsia CDC 設定檔會使用 IPv6 連結本機位址設定主機端介面,這些位址位於 fe80::/10 網路。使用下列 ip 指令驗證:

$ ip -6 --oneline addr | grep 'zx-'
7: zx-c863147051da    inet6 fe80::ca63:14ff:fe70:51da/64 <snip>

其中,位址 fe80::ca63:14ff:fe70:51da 是主機端網路介面的連結本機位址。請注意,這並非已連線 Fuchsia CDC 裝置的位址。