Was steuert die NIC-Benennungskonvention nach einer Neuinstallation von Ubuntu 20.04?

Was steuert die NIC-Benennungskonvention nach einer Neuinstallation von Ubuntu 20.04?

Dies ist ein neu installiertes Ubuntu-Serversystem 20.04.04. Ich verwende networkd und netplan, um das Netzwerk zu konfigurieren. Ich habe keine benutzerdefinierten Installationsschritte ausgeführt, sondern nur die ISO-Datei geladen und den Ubuntu-Server über die Eingabeaufforderungen installiert.

Als diese Maschinen vom Hersteller ausgeliefert wurden, war Ubuntu bereits installiert und die Netzwerkschnittstellen hatten ens1f0folgende Namen ens1f1:

root@oldHost2:~# sudo lshw -C network |grep "logical name"
       logical name: ens1f0
       logical name: ens1f1
       logical name: bond0

Nach der Neuinstallation des Betriebssystems (vor dem Ausführen von Netplan) erhalte ich jedoch ...

root@freshHost1:~# sudo lshw -C network |grep "logical name"
       logical name: ens1f0np0
       logical name: ens1f1np1
       logical name: bond0

Auf allen meinen Websites verwenden wir eine Netplan-Konfiguration, die ens1f0und voraussetzt ens1f0. Ich möchte, dass alle Schnittstellen dem entsprechen.

Ich weiß, dass Sie den Schnittstellennamen set-namein Netplan festlegen können (wie inhttps://ubuntu.com/server/docs/network-configuration) Sie müssen die Schnittstelle jedoch bereits irgendwie anpassen (mithilfe der Mac-Adresse usw.), was die automatische Bereitstellung zu einem Albtraum (wenn nicht unmöglich) macht. Ein Henne-Ei-Szenario. Ich muss Hunderte von Maschinen bereitstellen und möchte meine Netplan-Konfiguration als Vorlage erstellen, ohne die Mac-Adressen zu kennen.

Ich weiß, dass Sie die Schnittstellen auch im Netplan gruppieren können:

  ethernets:
    eports:
      match:
        name: ens*

Das könnte in meinem Fall funktionieren, aber nicht alle Systeme verfügen über eine einfache Konfiguration mit zwei Netzwerkkarten wie diese, daher bin ich nicht sicher, was die beste Vorgehensweise ist.

Meine Fragen an ServerFault...

  • Da dieser logische Name festgelegt wird, bevor Netplan überhaupt ausgeführt wird, stellt sich die Frage, was diesen Namen bestimmt. Wie kann ich ihn während der Installation/Bereitstellung des Betriebssystems überschreiben?
  • Was bedeuten die np0„und“ np1in den Schnittstellennamen?

Antwort1

Dies wird von systemd anhand von Informationen zum Gerät bestimmt. Der Name kann von verschiedenen Faktoren beeinflusst werden, darunter BIOS, andere möglicherweise installierte Geräte, Linux-Version und Treiberversion. Siehehttps://www.freedesktop.org/software/systemd/man/systemd.net-naming-scheme.htmlfür die Art und Weise, wie systemd die Namen konstruiert.

Beispielsweise können Steckplatznummern mit PCIe-Steckplätzen verknüpft sein oder nicht. Ich denke, das hängt zumindest teilweise mit BIOS/ACPI zusammen, aber es könnten auch andere Faktoren eine Rolle spielen. Auf einem meiner Rechner wird eine in einem Steckplatz installierte Netzwerkkarte als enpN aufgelistet, und wenn dieselbe Netzwerkkarte in einen anderen Steckplatz verschoben wird, wird sie als ensN aufgelistet.

Ich habe von Fällen gehört, in denen PCIe-Busnummern unter bestimmten Bedingungen anders zugewiesen werden, beispielsweise wenn beim Booten ein Thunderbolt-Gerät vorhanden ist. Letztendlich liegt dies wahrscheinlich am System-BIOS, da die PCIe-Busnummern für den Thunderbolt-Port nicht korrekt reserviert sind.

Was Sie bei np0 und np1 sehen, sind p0 und p1 physische Portnamen, die von devlink stammen __devlink_port_phys_port_name_get. Vermutlich wurde dem NIC-Treiber devlink-Unterstützung hinzugefügt, wodurch np0/np1 angezeigt wurden. Wenn Sie das ältere System auf dieselbe Kernelversion aktualisieren, sollte sich auch die Benennung ändern.

verwandte Informationen