Wie kann ich einer Netzwerkschnittstelle basierend auf dem Hardwarestandort einen beliebigen Namen zuweisen? (CentOS 7)

304
MrMas

Ich habe mehrere identische Appliances, auf denen CentOS 7 mit vier integrierten Netzwerkkarten ausgeführt wird. Um ein ähnliches Gefühl wie bei einer älteren Version der Appliance zu erhalten, auf der RHEL6 ausgeführt wird (dh ethX), möchte ich das von RHEL6 verwendete Netzwerkbenennungsschema verwenden. Ich möchte auch die Anzahl der erforderlichen Änderungen minimieren, nachdem ein generischer Systemdatenträger für die Verwendung auf jeder Appliance erstellt wurde.

Wenn ich das Benennungsschema in CentOS 7 verstehe, ist das Benennungsschema basierend auf dem Hardwarestandort konsistent. Wenn die Hardware identisch ist, habe ich für jede Instanz der Appliance dieselben Netzwerkschnittstellennamen.

Aufgrund der Kundenanforderungen muss ich die Netzwerkschnittstellen der Appliance unter CentOS 7 und RHEL6 gleich benennen.

Ein Ansatz besteht darin, die Kernel-Befehlszeile net.ifnames=0wie hier beschrieben zu erweitern und dann meine eigenen ifcfg-ethXDateien zu erstellen . Soweit ich das beurteilen kann, erfordert dies jedoch eine manuelle Änderung der Konfigurationsdatei. Dies wird noch komplizierter, da die alte Reihenfolge zwar festgelegt, aber beliebig ist, sodass ich diese Dateien für jedes System ändern muss. : - /

Ein Gedanke, den ich hatte, war, das CentOS 7-Benennungsschema zu verwenden, aber dann jedem ein Alias ​​hinzuzufügen, sodass das beliebige Benennungsschema basierend auf dem Hardwarestandort angewendet werden konnte. Kann man das machen?

Weitere Ideen, wie ich zwei Namen für dasselbe Gerät und dieselbe IP-Adresse erhalten kann?

ANMERKUNG: Ich frage nicht, wie Sie mehrere IP-Adressen zu demselben Gerät hinzufügen, was ziemlich unkompliziert ist.

EDIT: Ich muss es wirklich umbenennen, möchte es aber programmgesteuert machen.

0

1 Antwort auf die Frage

2
grawity

Kann ein Name gleichzeitig "willkürlich" und "basierend auf Hardware-Standort" sein? Diese Worte widersprechen sich.

  • Die eth#Namen werden vom Kernel selbst basierend auf der Erkennungsreihenfolge bei jedem Booten zugewiesen. Mit anderen Worten, sie sind "first come, first served" und haben nichts mit der Hardware-Position zu tun.

    Ältere udev-Versionen verwendeten automatisch eine Datei /etc/udev/rules.d, um diese Zuordnungen an die MAC-Adressen der Karten zu binden. Sie können diese Datei wahrscheinlich auf die neuen Systeme kopieren.

    Sie können auch benutzerdefinierte Udev-Regeln schreiben, um den NAME=Parameter basierend auf der Adresse oder dem PCI-Standort festzulegen. (Beachten Sie, dass udev in Zukunft die Umbenennung einer Schnittstelle ablehnen kann eth*, falls dies nicht bereits der Fall ist. Und selbst wenn zulässig, ist diese Umbenennung sehr spröde und kann fehlschlagen, wenn die Geräte in einer anderen Reihenfolge erkannt werden.)

  • Soweit ich weiß, hat RHEL 6 für die Generierung der physikalisch basierten Schnittstellennamen (Kernel-Switch ) den Namen biosdevname verwendet biosdevname=0. RHEL 7 verwendet für diesen Zweck die integrierte net_id von systemd-udevd (Kernel-Switch net.ifnames=0).

    Um die p1p2Namen der Stile zu erhalten, können Sie yum install biosdevnamesie über die Kernel-Befehlszeile ( biosdevname=1 net.ifnames=0) aktivieren . Siehe die Red Hat-Dokumentation .

Netzwerkschnittstellen können keine Aliase haben.

Mit willkürlich meine ich "nicht einem vorgeschriebenen Muster folgen" MrMas vor 2 Jahren 0
Dieser Link richtete sich in die richtige Richtung: https://unix.stackexchange.com/a/219277/88800 und für eine udev-artige Persistenz dieses Links wurden wichtige Informationen geteilt: https://www.cyberciti.biz/ faq / centos-7-run-script-when-network-interface-is-up-network-manager / Deshalb habe ich `/ etc / NetworkManager / dispatcher.d / 99-ifup-local.sh` erstellt, um dies für jeden zu tun meiner Geräte. MrMas vor 2 Jahren 0