節錄:Predictable Interface Names | Talos Linux

簡介

有別於傳統的網卡名稱 eth0eth1,Talos 在 v1.5 後使用 predictable names 的方式命名網卡,如同 systemd 的規則。

為什麼要這樣做?

eth0eth1 這種命名方式是根據驅動 (driver) 決定的,但這個機制可能會因為驅動初始化順序不同導致介面順序不固定,也就是說 eth0 在下一次開機時可能會變成 eth1。在這個情況下,使用網卡名稱的元件如防火牆,可能會因此發生問題。為了解決這種不可預測性,systemd v197 開始使用新命名方式。

規則是什麼?

依照網卡特性命名,Talos 預設使用 MAC Address,如 enx78e7d1ea46da

  • firmware/BIOS 對板載裝置的 index,如 eno1
  • firmware/BIOS 對熱插拔 PCIe 裝置的 index,如 ens1
  • 硬體連接器,如 PCIe 上的網卡,可能有多個插孔,所以會出現 s0s1 的編號,如 enp2s0

上述都是 en 開頭的網卡,其實還有其他的,如

PrefixDescription
enEthernet
ibInfiniBand
slSerial line IP (slip)
wlWireless local area network (WLAN)
wwWireless wide area network (WWAN)

不喜歡怎麼辦?

改回 eth0 的命名方式

雖然建議使用新式命名,但想改回 eth0 的話,可以在 kernel argument 上新增 net.ifnames=0

machine:
  install:
    extraKernelArgs:
      - net.ifnames=0

使用 device selector

可以使用官方的 device selector 語法選擇網卡

machine:
  network:
    interfaces:
      - deviceSelector:
          busPath: "0*" # 這行代表選中所有硬體網卡,當該環境中只有一張網卡時,此方法很實用

其他參考資料