Debian

如何解決可預測名稱方案使用的網路介面命名方案中的衝突?

  • September 28, 2020

我全新安裝了 Debian 10 (Buster),但可預測名稱方案存在問題。

我有 4 個板載 NIC 和一個 4 埠 PCIe NIC。

命名約定適用於板載埠,但 4 埠 PCIe 正確適用於前 2 個埠ens2f1ens2f0但最後 2 個具有名稱rename8rename9.

我在這裡閱讀了整篇文章:https ://wiki.debian.org/NetworkInterfaceNames

我理解他們為什麼得到這些名字,這裡有一個簡短的解釋:

由於這些介面的名字中的規則文件使用的優先級/lib/udev/rules.d/80-net-setup-link.rules來自ID_NET_NAMEID_NET_NAME_SLOT問題是and_SLOT是相同的,測試時ens2f0andrename8也一樣 這裡是和的輸出:ens2f1``rename9``udevadm``ens2f0``rename8

# udevadm test-builtin net_id /sys/class/net/ens2f0 2>/dev/null
ID_NET_NAMING_SCHEME=v240
ID_NET_NAME_MAC=enx00151757e989
ID_OUI_FROM_DATABASE=Intel Corporate
ID_NET_NAME_PATH=enp13s0f0
ID_NET_NAME_SLOT=ens2f0

# udevadm test-builtin net_id /sys/class/net/rename8 2>/dev/null
ID_NET_NAMING_SCHEME=v240
ID_NET_NAME_MAC=enx00151757e98b
ID_OUI_FROM_DATABASE=Intel Corporate
ID_NET_NAME_PATH=enp14s0f0
ID_NET_NAME_SLOT=ens2f0
  1. 我可以覆蓋/lib/udev/rules.d/80-net-setup-link.rules文件並使其使用ID_NET_NAME_PATH嗎?

改變這一行:

NAME=="", ENV{ID_NET_NAME}!="", NAME="$env{ID_NET_NAME}"

NAME=="", ENV{ID_NET_NAME_PATH}!="", NAME="$env{ID_NET_NAME_PATH}" 2. 我將如何覆蓋這個文件,我應該把新的規則文件放在哪裡,因為在文件中它說“不要編輯這個文件,它會在更新時被覆蓋”?

我很確定我理解了這個“腳本”是如何工作的。

在這一行NAME=="", ENV{ID_NET_NAME}!="", NAME="$env{ID_NET_NAME}"中,它首先檢查是否NAME等於"",然後確保ENV{ID_NET_NAME}不等於"",然後NAME根據ID_NET_NAME優先級設置一個新的。

這是我擁有的完整文件(我知道每個人都必須相同,但為了清楚起見,我將其發布):

# do not edit this file, it will be overwritten on update

SUBSYSTEM!="net", GOTO="net_setup_link_end"

IMPORT{builtin}="path_id"

ACTION!="add", GOTO="net_setup_link_end"

IMPORT{builtin}="net_setup_link"

NAME=="", ENV{ID_NET_NAME}!="", NAME="$env{ID_NET_NAME}"

LABEL="net_setup_link_end"
  1. 我可以改變它看起來像這樣嗎?
SUBSYSTEM!="net", GOTO="net_setup_link_end"

IMPORT{builtin}="path_id"

ACTION!="add", GOTO="net_setup_link_end"

IMPORT{builtin}="net_setup_link"

NAME=="", ENV{ID_NET_NAME_PATH}!="", NAME="$env{ID_NET_NAME_PATH}"
NAME=="", ENV{ID_NET_NAME_SLOT}!="", NAME="$env{ID_NET_NAME_SLOT}"
NAME=="", ENV{ID_NET_NAME_MAC}!="", NAME="$env{ID_NET_NAME_MAC}"
NAME=="", ENV{ID_NET_NAME}!="", NAME="$env{ID_NET_NAME}"

LABEL="net_setup_link_end"
  1. 是的,您可以將其更改為ID_NET_NAME_PATH專門使用,而不僅僅是ID_NET_NAME優先級。
  2. 覆蓋文件在這裡:/etc/udev/rules.d/80-net-setup-link.rules
  3. 是的,該腳本可以工作(自測)
  4. 已移至新問題:檢查網路介面名稱是否已存在於 udev 可預測名稱方案規則中?

引用自:https://unix.stackexchange.com/questions/611762