Ubuntu

如何確定網路介面的“可預測名稱”

  • August 20, 2020

我正在設置一個新伺服器並安裝了 Ubuntu Bionic,它使用Predictable Network Interface Names

安裝程序在救援系統上執行,該系統仍然使用舊的介面名稱,如eth0, eth1,但新安裝的系統已將第一個網卡配置為enp8s0.

使用lshw,這張卡的公車資訊是:

bus info: pci@0000:08:00.0

我想設置其他網路介面而不引導到新安裝的系統,但不知道如何確定其他卡的可預測網路介面名稱。

使用lshw,我發現另一個網卡,目前已禁用:

bus info: pci@0000:41:00.0

是否可以從中確定可預測的網路介面名稱?會是這樣的enp41s0嗎?

我已經搜尋了一段時間,找不到任何工具可以簡單地列出所有設備及其可預測的名稱。

編輯:為什麼我不想啟動新系統來找出答案?因為這會給設置過程增加一個額外的步驟。使用舊的介面命名,我可以執行一個腳本來從託管公司提供的救援系統中設置伺服器,並且可以使用它。現在我必須先設置伺服器減去額外的網路配置。然後我必須在新系統啟動後手動設置網路,只是為了知道介面的名稱。

命名方案的詳細資訊在原始碼中:udev/udev-builtin-net_id.c。以前,這有一個很好的可讀註釋塊來解釋事情,但是由於一個重構刪除了一個更好的參考是在man systemd.net-naming-scheme

一些常見的方案是 PCI 物理、PCI 熱插拔和板載。您的 enp 界面建議物理。

從評論中去除異國情調和不相關的部分留下以下規則:

* Two character prefixes based on the type of interface:
*   en — Ethernet
*
* Type of names:
*   [P<domain>]p<bus>s<slot>[f<function>][n<phys_port_name>|d<dev_port>]
*                                         — PCI geographical location
*
* All multi-function PCI devices will carry the [f<function>] number in the
* device name, including the function 0 device.
*
*
* When using PCI geography, The PCI domain is only prepended when it is not 0.

該 PCI 匯流排名稱的格式為domain:bus:slot.function

假設它不是多功能設備,pci@0000:41:00.0顯示為enp65s0,因為十六進制 41 轉換為十進制 65。

引用自:https://serverfault.com/questions/965873