Vorhersehbare Netzwerkschnittstellennamen in systemd

15

Die neueste Version von Ubuntu und Debian (stretch) bringt ein neues Namensschema für die Netzwerkschnittstelle.

Wenn Sie von einem System aktualisieren, das alte Namen wie "eth0" verwendet, möchten Sie wissen, bevor Sie den neuen Namen booten .

Wie kann ich das machen? Gibt es einen magischen Aufruf von "systemd", den ich verwenden kann, um / etc / network / interface vor dem Booten zu bearbeiten (und anschließend die Netzwerkverbindung zu verlieren)?

Ralf Hildebrandt
quelle
1
Ich bin über dieses Problem
Neil,

Antworten:

7

Es stehen zwei verschiedene Schemata zur Verfügung: biosdevname im Vergleich zum Namen der vorhersagbaren Netzwerkschnittstelle.

biosdevname

Biosdevname scheint der Standard in Ubuntu zu sein. Sie wird durch die Installation des Pakets biosdevname aktiviert.

Der Biosdev-Name eines Interfaces kann gefunden werden mit:

biosdevname -i eth0

Vorhersehbare Namen der Netzwerkschnittstelle

Ich glaube, dies ist die Standardeinstellung in Debian Stretch, muss aber beim Upgrade von früheren Releases explizit aktiviert werden.

Der vorhersagbare Name für eth0 kann gefunden werden mit:

udevadm test-builtin net_id /sys/class/net/eth0 | grep '^ID_NET_NAME_'
GnP
quelle
Obwohl die tatsächliche Antwort, wie „vor dem Booten , was der neue Name wird“ vorherzusagen (nach der Verbindung von @Neil zur Verfügung gestellt) ist der neue Name der gleiche wie der alte Name sein wird , denn es gibt noch udev - Regeln konfigurieren , die sind die alten Namen in /etc/udev/rules.d/70-persistent-net.rules. Der Link enthält eine Migrationsanleitung, wenn Sie zu einem neuen Benennungsschema wechseln möchten.
Tuomas
2

Das neue Schema wird anscheinend als "vorhersagbare Netzwerkschnittstellennamen" bezeichnet, aber ich finde nicht viel Dokumentation darüber, wie der Name tatsächlich vorhergesagt werden kann. Alles, was ich darüber gefunden habe, verweist im Wesentlichen auf diesen Quellcodekommentar (der wiederum auf den ersten Link verweist). Aus dem Kommentar geht nicht hervor, wie man weiß, welches Adressierungsschema udev für den Netzwerkgerätenamen verwenden wird.

Bei der ersten Verknüpfung können Sie sie deaktivieren und die traditionellen Namen verwenden, indem Sie sie net.ifnames=0in der Kernel-Befehlszeile in Grub hinzufügen . Entsprechend diesem Kommentar kann es erforderlich sein, wenn Sie eine VLAN-gekennzeichnete Schnittstelle erstellen möchten, da der Schnittstellenname durch die hinzugefügte Erweiterung zu lang wird.

Andernfalls ist es möglicherweise besser, die Frage erneut zu stellen, um zu erklären, was Sie mit dem Namen tun möchten (z. B. Konfigurieren der Schnittstelle über ansible oder ähnliches).

DerfK
quelle
2

Ich bin mir nicht sicher, ob dies bei aktualisierten Versionen immer noch der Fall ist, aber auf meinen alten Systemen konnte ich eine leere Datei unter erstellen /etc/udev/rules.d/80-net-name-slot.rulesund die "vorhersehbare" Benennungsfunktion deaktivieren. Sie können auch Ihre eigene Regel erstellen und die Schnittstellen anhand der Mac-Adresse oder der PCI / USB-Verbindungen selbst benennen.

user143311
quelle
0

Diese Dokumentation könnte ein wenig helfen. Siehe den Abschnitt unter "Was genau hat sich in v197 geändert?". Ja, mir ist klar, dass dies von etwas begrenztem Wert ist, aber es könnte Ihnen einen Weg für weitere Nachforschungen bieten.

Charles Burge
quelle