如何解決可預測名稱方案使用的網路介面命名方案中的衝突?
我全新安裝了 Debian 10 (Buster),但可預測名稱方案存在問題。
我有 4 個板載 NIC 和一個 4 埠 PCIe NIC。
命名約定適用於板載埠,但 4 埠 PCIe 正確適用於前 2 個埠
ens2f1
,ens2f0
但最後 2 個具有名稱rename8
和rename9
.我在這裡閱讀了整篇文章:https ://wiki.debian.org/NetworkInterfaceNames
我理解他們為什麼得到這些名字,這裡有一個簡短的解釋:
由於這些介面的名字中的規則文件使用的優先級
/lib/udev/rules.d/80-net-setup-link.rules
來自ID_NET_NAME
,ID_NET_NAME_SLOT
問題是and_SLOT
是相同的,測試時ens2f0
andrename8
也一樣 這裡是和的輸出: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
- 我可以覆蓋
/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"
- 我可以改變它看起來像這樣嗎?
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"
- 是的,您可以將其更改為
ID_NET_NAME_PATH
專門使用,而不僅僅是ID_NET_NAME
優先級。- 覆蓋文件在這裡:
/etc/udev/rules.d/80-net-setup-link.rules
- 是的,該腳本可以工作(自測)
- 已移至新問題:檢查網路介面名稱是否已存在於 udev 可預測名稱方案規則中?