Umbenennen der Netzwerkschnittstelle mit systemd

Umbenennen der Netzwerkschnittstelle mit systemd

Ich möchte unter Fedora 22 eine von systemd-networkd (Version 219) verwaltete Netzwerkschnittstelle vom systemseitig zugewiesenen Namen enp2s0in umbenennen wan. Dazu habe ich die folgende Datei erstellt /etc/systemd/network/80-wan.link:

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

Das hat jedoch keine Auswirkungen auf das System. Nach dem Neustart ist der Name immer noch enp2s0. Ich sehe damit udevadm, dass udev die Datei zur Konfiguration übernommen hat, aber den angegebenen Namen ignoriert hat:

~> 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

Außerdem wird der neue Name wanin keinem Protokoll erwähnt, auch nicht nach der Aktivierung der udev-Debugausgabe. Was mache ich falsch?

Antwort1

Zumindest bei Debian Stretch scheint es so, als müssten Sie die Dateien update-initramfs -u && rebooteinfügen , damit die vorhandenen Schnittstellen wirksam werden.*.link/etc/systemd/network/

Es scheint, als würden die Netzwerkschnittstellen sehr früh während des Bootvorgangs innerhalb des initramfs umbenannt, bevor die *.linkDateien /etc/systemd/networkverfügbar sind... und sobald die Schnittstelle einmal umbenannt wurde ( /sys/class/net/*/name_assign_type=4), dann dieudev-builtin-net_setup_linkwird nicht längeremittierenID_NET_NAME Weil should_renamekehrt zurückfalse.

Antwort2

Verwenden Sie systemd-networkd? Ich denke, die .linkDateien sind nur relevant, wenn Sie dies tun (anstelle des Standard-NetworkManagers oder älterer Initscripts). (Ich gebe allerdings zu, dass ich mich noch nicht eingehend damit befasst habe.)

Ich denke, was Sie wollen, ist eine .rulesDatei in /etc/udev/rules.d, so etwas wie

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

(wo mac-addressnatürlich Ihre tatsächliche Hex-MAC-Adresse ist).

Diese Datei muss bestellt werdenVor /usr/lib/udev/rules.d/80-net-setup-link.rules, also dieUpstream-Dokumentevorschlagen /etc/udev/rules.d/70-my-net-names.rules.

Antwort3

Aus irgendwelchen Gründen scheint networkmanager Vorrang vor networkd zu haben (wer hätte das gedacht?). Sie können das wie folgt testen:

  • systemctl stop NetworkManager
  • Trennen Sie die Netzwerkschnittstelle
  • ip addr

Ergebnis: Die Regeln für /etc/systemd/network/*.link werden eingehalten

Wenn Sie NetworkManager starten und den Test wiederholen, wird /etc/systemd/network/*.link nicht mehr berücksichtigt. Ich habe dies mit der MACAddressPolicy=randomDirektive getestet

verwandte Informationen