使用systemd重命名網路介面

使用systemd重命名網路介面

我想在 Fedora 22 上將由 systemd-networkd(版本 219)管理的網路介面從系統分配的名稱重命名enp2s0wan.為此,我創建了以下文件/etc/systemd/network/80-wan.link

[Match]
MACAddress=mac-address
[Link]
Name=wan

但是,這對系統沒有影響。重新啟動後名稱仍然是enp2s0。我看到udevadmudev 選擇了配置文件,但忽略了提供的名稱:

~> udevadm info /sys/class/net/enp2s0 
P: /devices/pci0000:00/0000:00:1c.1/0000:02:00.0/net/enp2s0
E: DEVPATH=/devices/pci0000:00/0000:00:1c.1/0000:02:00.0/net/enp2s0
E: ID_BUS=pci
E: ID_MM_CANDIDATE=1
E: ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
E: ID_MODEL_ID=0x8168
E: ID_NET_DRIVER=r8169
E: ID_NET_LINK_FILE=/etc/systemd/network/80-wan.link
E: ID_NET_NAME_MAC=enxMacAddress
E: ID_NET_NAME_PATH=enp2s0
E: ID_OUI_FROM_DATABASE=Shuttle Inc.
E: ID_PATH=pci-0000:02:00.0
E: ID_PATH_TAG=pci-0000_02_00_0
E: ID_PCI_CLASS_FROM_DATABASE=Network controller
E: ID_PCI_SUBCLASS_FROM_DATABASE=Ethernet controller
E: ID_VENDOR_FROM_DATABASE=Realtek Semiconductor Co., Ltd.
E: ID_VENDOR_ID=0x10ec
E: IFINDEX=2
E: INTERFACE=enp2s0
E: SUBSYSTEM=net
E: SYSTEMD_ALIAS=/sys/subsystem/net/devices/enp2s0
E: TAGS=:systemd:
E: USEC_INITIALIZED=24183

wan即使在啟動 udev 偵錯輸出後,任何日誌中也沒有提及新名稱。我做錯了什麼?

答案1

至少在 Debian Stretch 上,似乎您需要update-initramfs -u && reboot輸入*.link檔案/etc/systemd/network/才能對現有介面生效。

看起來網路介面在 initramfs 內啟動期間很早就被重命名,*.link在文件/etc/systemd/network可用之前......並且一旦接口被重命名一次(/sys/class/net/*/name_assign_type=4),那麼udev-builtin-net_setup_link將不再發射ID_NET_NAME 因為 should_rename回報false

答案2

你正在使用嗎systemd-networkd?我認為這些.link文件僅在您相關時才相關(而不是預設的 NetworkManager 或舊版初始化腳本)。 (不過我承認我還沒有深入研究過。)

我想你想要的是一個.rules文件/etc/udev/rules.d,例如

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="mac-address", NAME="wan"

mac-address當然,你的實際十六進位 MAC 位址在哪裡)。

該文件需要訂購 /usr/lib/udev/rules.d/80-net-setup-link.rules, 所以上游文檔建議/etc/udev/rules.d/70-my-net-names.rules

答案3

由於一些不好的原因,網路管理器似乎優先於網路(誰能想像呢?)。您可以如下進行測試:

  • systemctl stop NetworkManager
  • 拔掉網路介面
  • ip addr

結果:遵守 /etc/systemd/network/*.link 規則

如果啟動 NetworkManager 並重複測試 /etc/systemd/network/*.link 將不再有效。我用指令測試了MACAddressPolicy=random這個

相關內容