it-swarm.com.de

Das Umbenennen der Netzwerkschnittstelle in Ubuntu 16.04 mit systemd schlägt fehl

Ich verwende einen Ubuntu 16.04 LTS-Server ohne Kopf mit zwei physischen Netzwerkkarten mit den Namen enp5s0f0 und enp5s0f1.

Ich möchte diese Schnittstellen umbenennen und folgte dieses Beispiel . Ich habe daher die Datei /lib/systemd/network/70-myinterface.link (die ursprüngliche Quelle scheint nicht zu funktionieren) wie folgt erstellt (ich habe die richtige Mac-Adresse eingestellt):

[Match]
MACAddress=12:34:56:78:9a:bc

[Link]
Name=dmz0

und startete den Server neu. Leider wurde die Oberfläche nicht umbenannt, obwohl udevadm anzeigt, dass meine Konfigurationsdatei verwendet wird:

$ udevadm info /sys/class/net/enp5s0f1
P: /devices/pci0000:00/0000:00:02.0/0000:01:00.0/0000:02:02.0/0000:05:00.1/net/enp5s0f1
E: DEVPATH=/devices/pci0000:00/0000:00:02.0/0000:01:00.0/0000:02:02.0/0000:05:00.1/net/enp5s0f1
E: ID_BUS=pci
E: ID_MODEL_FROM_DATABASE=80003ES2LAN Gigabit Ethernet Controller (Copper)
E: ID_MODEL_ID=0x1096
E: ID_NET_DRIVER=e1000e
E: ID_NET_LINK_FILE=/lib/systemd/network/70-myinterface.link  <-- my file
E: ID_NET_NAME_MAC=enx123456789abc
E: ID_NET_NAME_PATH=enp5s0f1
E: ID_OUI_FROM_DATABASE=Intel Corporation
E: ID_PATH=pci-0000:05:00.1
E: ID_PATH_TAG=pci-0000_05_00_1
E: ID_PCI_CLASS_FROM_DATABASE=Network controller
E: ID_PCI_SUBCLASS_FROM_DATABASE=Ethernet controller
E: ID_VENDOR_FROM_DATABASE=Intel Corporation
E: ID_VENDOR_ID=0x8086
E: IFINDEX=3
E: INTERFACE=enp5s0f1
E: SUBSYSTEM=net
E: SYSTEMD_ALIAS=/sys/subsystem/net/devices/enp5s0f1
E: TAGS=:systemd:
E: USEC_INITIALIZED=1900192

Hast du eine Idee, warum das Umbenennen nicht funktioniert hat?

14
muffel

Dies kann oder kann nicht helfen .. Ich würde /etc/udev/rules.d überprüfen und sehen, ob Sie 70-persistent-net.rules haben. Sie sollten in der Lage sein, sie mit dieser Datei umzubenennen

Meins sieht so aus:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="e0:cb:ee:d7:ff:9a", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

Wenn Sie die Einträge für Ihre Karten in dieser Datei haben, können Sie den Namen beliebig ändern, indem Sie "NAME = TheNameYouWant" ändern.

6
John Orion

Eine Option, die keine udev-Regeln erfordert (eine Alternative zu systemd-networkd .link-Dateien), die mit Ubuntu 16.04 sowie vielen anderen Linux-Versionen funktioniert, ist

Beispiel:

ifconfig peth0 down  
ip link set peth0 name eth0  
ifconfig eth0 up 

Im obigen Beispiel ist peth0 der ursprüngliche Schnittstellenname und eth0 der gewünschte Name. Geben Sie den Namen ein, den Sie aktuell haben, wo sich peth0 befindet, und den Namen, den Sie möchten, wo sich eth0 befindet. Es ist kein Neustart erforderlich oder wird empfohlen. Wiederholen Sie den Vorgang für die zweite Schnittstellenkarte

Getestet unter Ubuntu 16.04 mit Kernel 4.4.0-36-generic # 55-Ubuntu

Bearbeiten: Wenn Sie nach einer dauerhaften Lösung suchen, die einen Neustart übersteht, lesen Sie Ändern des Namens der Netzwerkschnittstelle in Ubuntu 16.04

Quellen: https://www.freedesktop.org/software/systemd/man/systemd.link.html

http://kernelpanik.net/rename-a-linux-network-interface-without-udev/

Testen.

Hinweis: Da die @ antti-haapala-Methode zuvor funktioniert hat und plötzlich gestoppt wurde, könnte Sie Folgendes interessieren: "Als Sonderfall deaktiviert eine leere Datei (Dateigröße 0) oder ein Symlink mit demselben Namen, der auf/dev/null zeigt, die Konfigurationsdatei ganz (es ist "maskiert") ". <- Source

5
Elder Geek
  • Alle drei benutzerdefinierten Benennungsmethoden, die unter systemd: Predictable Network Interface Names erläutert werden, beziehen sich auf udev-Regeln.

    die & udev-Regeln von systemd .link haben Ordnerpriorität. /etc überschreibt /run überschreibt /lib.

    Überprüfen Sie daher das aktuelle Setup.

    # links
    ls -l /*/systemd/network/
    
    # rule that read links
    ls -l /*/udev/rules.d/80-net-setup-link.rules
    
    # rule that check for /etc/.../80-net-setup-link.rules & net.ifnames
    ls -l /*/udev/rules.d/73-usb-net-by-mac.rules
    

    Nach einer Änderung dieser udev-Regeln (Hinzufügen/Entfernen von Überschreibungsdateien) sollte die boot RAM -Diskette aktualisiert werden:

    Sudo update-initramfs -u
    

    Standardmäßig sind dies die einzigen Dateien, die Sie finden können

    ~$ ls -l /*/systemd/network/
    /etc/systemd/network/:
    total 0
    
    /lib/systemd/network/:
    total 12
    -rw-r--r-- 1 root root 404 Jul 12 17:28 80-container-Host0.network ##(virtual-interface)
    -rw-r--r-- 1 root root 482 Jul 12 17:28 80-container-ve.network ##(virtual-interface)
    -rw-r--r-- 1 root root  80 Jul 12 17:28 99-default.link
    
    
    ~$ ls -l /*/udev/rules.d/80-net-setup-link.rules
    -rw-r--r-- 1 root root 292 Jul 12 17:28 /lib/udev/rules.d/80-net-setup-link.rules
    
    ~$ ls -l /*/udev/rules.d/73-usb-net-by-mac.rules
    -rw-r--r-- 1 root root 551 Jul 12 16:37 /lib/udev/rules.d/73-usb-net-by-mac.rules
    

    Ich habe sie alle in der VBox fresh 16.04-Installation getestet, wie im folgenden Link dokumentiert. Alle Methoden funktionieren wie erwartet:

    buntu 16.04 komplizierte Schnittstellennamen

  • /etc/udev/rules.d/70-persistent-net-rules stammt aus älteren Releases, die durch systemd .links ersetzt wurden (diese werden jedoch nicht automatisch erstellt). Ich habe es hier hinzugefügt, um zu überprüfen, ob es bestimmte Probleme gibt, aber nicht für den Fall AnttiHaapala .

3
user.dz

Sie müssen Ihr initrd mit etwas wie update-initramfs -k all -c aktualisieren, da udev diese Konfigurationen bereits anwendet, während initrd ausgeführt wird.

Ubuntu 16.04 hat keine 70-persistent-net-rules-Datei mehr.

1
Jani Jaakkola

Ich habe nicht genug Reputation, um einen Kommentar abzugeben, aber nur um die markierte Antwort zu ergänzen, wird bei Neuinstallationen von Ubuntu 16.04 die Datei /etc/udev/rules.d/70-persistent-net.rules nicht vorhanden sein. Wenn Sie es jedoch manuell erstellen, können Sie eine Zeile hinzufügen, wie in der Antwort hier gezeigt, und es sollte genau wie in älteren Versionen funktionieren, mit einem bemerkenswerten Unterschied: Der KERNEL-Parameter sollte als der Name angegeben werden, der dem zugewiesen wurde Schnittstelle standardmäßig. Wenn das System die Schnittstelle beispielsweise als "ens160" bezeichnet und Sie sie in "eth0" ändern möchten, sieht die Zeile möglicherweise folgendermaßen aus:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="xx:xx:xx:xx:xx:xx", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="ens160", NAME="eth0"

Dies weist die Regel an, nur auf einer Schnittstelle eine Übereinstimmung zu finden, die mit dem angegebenen MAC (im Parameter ATTR {address}) und mit einem dem Parameter KERNEL entsprechenden Kernelnamen übereinstimmt. Alternativ könnten Sie wahrscheinlich den KERNEL-Parameter ganz weglassen, und das sollte auch funktionieren.

BEARBEITEN: Und wenn Sie, wie bereits erwähnt, die .link-Dateimethode verwenden möchten, müssen Sie initramfs aktualisieren, damit sie wirksam wird. Beachten Sie auch, dass die benutzerdefinierte .link-Datei in/etc/systemd/network und nicht in/lib/systemd/network erstellt werden sollte Lassen Sie benutzerdefinierte .link-Dateien zu, die die Standardeinstellungen in/lib/systemd/network überschreiben.

0
dwillis77