全新安裝 Ubuntu 20.04 後,什麼控制 NIC 命名約定?

全新安裝 Ubuntu 20.04 後,什麼控制 NIC 命名約定?

這是全新安裝的 Ubuntu 伺服器 20.04.04 系統。我正在使用networkd和netplan來設定網路。我沒有執行任何自訂安裝步驟,只是載入 .iso 並透過提示安裝 Ubuntu 伺服器。

當這些機器從供應商處發貨時,Ubuntu 已經安裝並且網路介面被命名為ens1f0ens1f1

root@oldHost2:~# sudo lshw -C network |grep "logical name"
       logical name: ens1f0
       logical name: ens1f1
       logical name: bond0

但是,在重新安裝作業系統(在運行 netplan 之前)之後,我得到...

root@freshHost1:~# sudo lshw -C network |grep "logical name"
       logical name: ens1f0np0
       logical name: ens1f1np1
       logical name: bond0

ens1f0在我的所有網站中,我們使用假設和 的netplan 配置ens1f0。我希望所有介面都匹配這個。

我知道您可以在 netplan 中設定介面名稱set-name(如中定義https://ubuntu.com/server/docs/network-configuration)但是你需要以某種方式匹配介面(使用Mac位址等),這將使自動配置成為一場噩夢(如果不是不可能的話)。先有雞還是先有蛋的場景。我有數百台機器需要配置,我想在不知道 Mac 位址的情況下模板化我的 netplan 配置。

我知道您也可以將 netplan 中的介面分組在一起:

  ethernets:
    eports:
      match:
        name: ens*

這可能適合我的情況,但並非所有系統都有像這樣的簡單的兩個網卡設置,所以我不確定最好的操作方案是什麼。

我對 ServerFault 的問題...

  • 由於這個邏輯名稱是在 Netplan 運作之前設定的,那麼是什麼決定了這個名稱呢?如何在作業系統安裝/配置期間覆蓋它?
  • 介面名稱中的np0和是什麼意思?np1

答案1

這是由 systemd 根據有關設備的資訊確定的。該名稱可能受到多種不同因素的影響,包括 BIOS、可能安裝的其他裝置、Linux 版本和驅動程式版本。看https://www.freedesktop.org/software/systemd/man/systemd.net-naming-scheme.html了解 systemd 如何建構名稱。

例如,插槽編號可能與 PCIe 插槽相關聯,也可能不相關聯。我認為這至少與 BIOS/ACPI 有一定的關係,但也可能有其他因素。在我的一台機器上,安裝在一個插槽中的 NIC 枚舉為 enpN,而相同的 NIC 當移動到不同插槽時枚舉為 ensN。

我聽說過在某些情況下 PCIe 匯流排編號分配不同的情況,例如啟動期間存在 Thunderbolt 裝置。最終,這可能是系統 BIOS 的錯誤,沒有為 Thunderbolt 連接埠正確保留 PCIe 匯流排編號。

就您在 np0 和 np1 中看到的情況而言, p0 和 p1 是來自 devlink 的實體連接埠名稱__devlink_port_phys_port_name_get。推測是網路卡驅動中加入了devlink支持,導致np0/np1出現。如果將舊系統更新到相同的核心版本,命名也應該更改。

相關內容