Persistent Network Names in Debian 11

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
Benutzeravatar
shaoran
Beiträge: 51
Registriert: 08.10.2009 11:34:03

Persistent Network Names in Debian 11

Beitrag von shaoran » 01.07.2022 20:22:51

Hallo

Ich habe ein debian11 image, das ich auf meine PC Engines APU boards installiere und das Basis System habe ich vor Jahren (zur Zeiten von Debian 7) erstellt. Ich pflege dieses Image nach wie vor. Damals hat man die Namen der Netzwerk Interfaces mittels /etc/udev/rules.d/70-persistent-net.rules festgesetzt.

Jetzt teste ich ein neues APU Board mit SPF Anschluss und es hat ein Netzwerk Interface mehr als die anderen Baords, die ich normalerweise nehme. Der SPF wird nun als eth0 geführt und das passt mir nicht. Ich habe SVG Vorlagen, die ich dann als ausdrucke und auf dem Gehäuse draufklebe, wo die Netzwerk Interfaces beschrieben werden und ich will sie nicht anpassen müssen, deswegen würde ich eth0 in eth3 umbennen, usw. Also habe die /etc/udev/rules.d/70-persistent-net.rules Datei angepasst aber leider hat das nichts gebracht.

ich habe dann https://wiki.debian.org/NetworkInterfaceNames gefunden und dort steht:
How to cling to it for now

If you've got a working "legacy" /etc/udev/rules.d/70-persistent-net.rules file and want to stick with it, you can safely upgrade through Debian 9 "stretch" and Debian 10 "buster". The udev on these releases still respects that file if present (and will accept a freshly created one). However, bear in mind that you'll need to maintain it yourself, and be ready to switch to a different scheme for Debian 11 "bullseye", which lacks this legacy support.
Es kommt mir seltsam vor, denn vor kurzem habe ich bei einem anderen Debian 11 System diese UDEV Regel gemacht

Code: Alles auswählen

SUBSYSTEM=="net", ATTR{address}=="00:13:3b:9a:08:49", NAME="ueth0"
um ein USB-Ethernet den Namen ueth0 zu vergeben und da hat es funktioniert. Deshalb wundere ich mich, dass es jetzt nicht mehr geht.

Habe ich also keine Chance meine eigene Namen für die Netzwerk Interfaces zu setzen wie früher?

Danke

// EDIT:

ich habe sogar ein hook in /etc/initramfs-tools/hooks geschrieben, das garantiert, dass die /etc/udev/rules.d/70-persistent-net.rules in der initramfs schreibt (ich hab mit unmkinitramfs gecheckt), selbst damit hat es nicht geklappt :evil:

Benutzeravatar
Blackbox
Beiträge: 4289
Registriert: 17.09.2008 17:01:20
Lizenz eigener Beiträge: GNU Free Documentation License

Re: Persistent Network Names in Debian 11

Beitrag von Blackbox » 01.07.2022 21:27:31

shaoran hat geschrieben: ↑ zum Beitrag ↑
01.07.2022 20:22:51
Habe ich also keine Chance meine eigene Namen für die Netzwerk Interfaces zu setzen wie früher?
Zumindest nicht mit mehr mit einer udev-Regel.

Aber hättest du das von dir verlinkte Debian Wiki weiter durchgelesen, wärst du auf die folgende Möglichkeit gestoßen.

https://wiki.debian.org/NetworkInterfac ... LINK_FILES

Die Umsetzung ist eigentlich nicht schwerer, oder umfangreicher als eine udev-Regel.
Eigenbau PC: Debian Sid - Kernel: 6.5.13 - Xfce 4.18 mit sway
Desktop PC: Dell Inspiron 530 - Debian Sid - Kernel: 6.5.13 - Xfce 4.18 mit sway
Notebook: TUXEDO BU1406 - Debian Sid - Kernel: 6.5.13 - Xfce 4.18 mit sway
Alles Minimalinstallationen und ohne sudo/PA/PW.
Rootserver: Rocky Linux 9.3 - Kernel: 5.14

Freie Software unterstützen, Grundrechte stärken!

Benutzeravatar
Tintom
Moderator
Beiträge: 3033
Registriert: 14.04.2006 20:55:15
Wohnort: Göttingen

Re: Persistent Network Names in Debian 11

Beitrag von Tintom » 01.07.2022 21:28:54

Ich hatte bei Bullseye ebenfalls Schwierigkeiten und habe dann die Udev-Regel einer Buster-Installation als Vorlage genommen. Die hatte noch folgende Einträge extra drin:

Code: Alles auswählen

ATTR{dev_id}=="0x0", ATTR{type}=="1"
Die Option ATTR{type} findet sich ja auch im Wiki, inwieweit ATTR{dev_id} dann noch benötigt wird, vermag ich nicht zu sagen. Auf der Buster-Maschine hatten alle Netzwerkschnittstellen besagtes dev_id in der Regel drin. Anschließend funktionierte es auch unter Bullseye.
Hätte es nicht funktioniert, wäre ich wohl ohne den Umweg mit udev direkt auf systemd-basierte Regeln umgestiegen: https://wiki.debian.org/NetworkInterfac ... LINK_FILES

edit: Blackbox war schneller

Benutzeravatar
shaoran
Beiträge: 51
Registriert: 08.10.2009 11:34:03

Re: Persistent Network Names in Debian 11

Beitrag von shaoran » 01.07.2022 23:17:02

Blackbox hat geschrieben: ↑ zum Beitrag ↑
01.07.2022 21:27:31
shaoran hat geschrieben: ↑ zum Beitrag ↑
01.07.2022 20:22:51
Habe ich also keine Chance meine eigene Namen für die Netzwerk Interfaces zu setzen wie früher?
Zumindest nicht mit mehr mit einer udev-Regel.

Aber hättest du das von dir verlinkte Debian Wiki weiter durchgelesen, wärst du auf die folgende Möglichkeit gestoßen.

https://wiki.debian.org/NetworkInterfac ... LINK_FILES

Die Umsetzung ist eigentlich nicht schwerer, oder umfangreicher als eine udev-Regel.
:facepalm: ich schähme mich, dass ich die Wiki Seite nicht zum Ende gelesen habe.

Ich habe 4 .link Dateien in /etc/systemd/network erzeugt, jeweils mit der MAC und den device name den ich will. Aber nach einem reboot waren die alten Namen noch drin :( ich denke, das klappt nur für nicht standard Namen, die Wiki sagt
per systemd.link(5), you shouldn't use a name that the kernel might use for another interface (for example "eth0")
oder muss ich diese .link Datei irgendwie aktivieren mit systemctl enable ???

PS: ich habe gerade mit einer einzigen Datei getestet mit dem Namen "myeth0" aber der interface wurde nach einem reboot nicht neu benannt.

Benutzeravatar
shaoran
Beiträge: 51
Registriert: 08.10.2009 11:34:03

Re: Persistent Network Names in Debian 11

Beitrag von shaoran » 01.07.2022 23:41:11

So, ich habe eine sehr quick & dirty Lösung gefunden. Ich habe die Datei /etc/initramfs-tools/scripts/init-bottom/rename-network-interfaces.sh erstellt mit

Code: Alles auswählen

#!/bin/sh

# Inspired by https://askubuntu.com/a/820566/781052

# the udev net persistent rules are not honored

PREREQ=""


prereqs()
{
    echo "$PREREQ"
}


case $1 in
    prereqs)
        prereqs
        exit 0
        ;;
esac

. /scripts/functions

log_begin_msg "Renaming the ethernet interfaces"

ip link set eth0 name oldeth0
ip link set eth1 name eth0
ip link set eth2 name eth1
ip link set eth3 name eth2
ip link set oldeth0 name eth3

log_end_msg

die initrd Datei neu erzeugt und nun sind die devices Names korrekt. Ich werde in Ruhe ein sicheres SHELL Skript schreiben, welches die MAC Addressen auch ermittelt und die Syntax von /etc/udev/rules.d/70-persistent-net.rules liest. Als proof of concept geht noch. Ich habe es leider nicht mit den system link files hingekriegt.

Benutzeravatar
Blackbox
Beiträge: 4289
Registriert: 17.09.2008 17:01:20
Lizenz eigener Beiträge: GNU Free Documentation License

Re: Persistent Network Names in Debian 11

Beitrag von Blackbox » 02.07.2022 15:08:31

Das ist ja schlimmes Gefrickel.
Du solltest schleunigst den empfohlenen Weg beschreiten, denn dein Würgaround wird dir (spätestens) mit dem nächsten Release Upgrade um die Ohren fliegen.
Eigenbau PC: Debian Sid - Kernel: 6.5.13 - Xfce 4.18 mit sway
Desktop PC: Dell Inspiron 530 - Debian Sid - Kernel: 6.5.13 - Xfce 4.18 mit sway
Notebook: TUXEDO BU1406 - Debian Sid - Kernel: 6.5.13 - Xfce 4.18 mit sway
Alles Minimalinstallationen und ohne sudo/PA/PW.
Rootserver: Rocky Linux 9.3 - Kernel: 5.14

Freie Software unterstützen, Grundrechte stärken!

Benutzeravatar
shaoran
Beiträge: 51
Registriert: 08.10.2009 11:34:03

Re: Persistent Network Names in Debian 11

Beitrag von shaoran » 02.07.2022 23:44:02

Blackbox hat geschrieben: ↑ zum Beitrag ↑
02.07.2022 15:08:31
Das ist ja schlimmes Gefrickel.
Du solltest schleunigst den empfohlenen Weg beschreiten, denn dein Würgaround wird dir (spätestens) mit dem nächsten Release Upgrade um die Ohren fliegen.
Hallo, ja, das ist ein schlimmes Gefrickel, das ist mir auch klar. Allerdings mit den board Mitteln von systemd ist es auch nicht zu lösen, ich habe es ausprobiert, so wie die Wiki Seite es beschreibt und es die Interfaces Namen haben sich nicht geändert. Und die Wiki Seite warnt auch davor
per systemd.link(5), you shouldn't use a name that the kernel might use for another interface (for example "eth0")
und ich will eth0 -> eth3, eth1 -> eth0, eth2 -> eth1, eth3 -> eth1 umbenennen also wird es damit einfach nicht gehen. Ich sehe leider keine andere Wahl. Allerdings, wie ich es schon selber zugegeben habe, ist das eine sehr naive Lösung. Ich werde später ein besseres Skript schreiben. Leider finde ich keine andere Lösung für mein Problem :(

Benutzeravatar
Blackbox
Beiträge: 4289
Registriert: 17.09.2008 17:01:20
Lizenz eigener Beiträge: GNU Free Documentation License

Re: Persistent Network Names in Debian 11

Beitrag von Blackbox » 04.07.2022 15:12:08

shaoran hat geschrieben: ↑ zum Beitrag ↑
02.07.2022 23:44:02
Und die Wiki Seite warnt auch davor
per systemd.link(5), you shouldn't use a name that the kernel might use for another interface (for example "eth0")
Ich lese in dieser Aussage einen Konjunktiv und damit eher eine Empfehlung und keine Warnung.
shaoran hat geschrieben: ↑ zum Beitrag ↑
02.07.2022 23:44:02
und ich will eth0 -> eth3, eth1 -> eth0, eth2 -> eth1, eth3 -> eth1 umbenennen also wird es damit einfach nicht gehen.
Das ist Quatsch.
Ich habe dein Szenario soeben in unserer VA probiert und es gab (bei mir) keinerlei Probleme.
Weder mit dem Erstellen und Verwenden der .link-Dateien, noch mit deren Einsatz.
Also entweder habe ich dein Problem noch nicht verstanden, oder du machst etwas falsch?
shaoran hat geschrieben: ↑ zum Beitrag ↑
02.07.2022 23:44:02
Ich sehe leider keine andere Wahl.
Es gibt immer Alternativen zu Flickereien.
shaoran hat geschrieben: ↑ zum Beitrag ↑
02.07.2022 23:44:02
Allerdings, wie ich es schon selber zugegeben habe, ist das eine sehr naive Lösung.
Einsicht ist der erste Schritt zur Besserung.
shaoran hat geschrieben: ↑ zum Beitrag ↑
02.07.2022 23:44:02
Ich werde später ein besseres Skript schreiben.
Skript schreiben klingt in diesem Kontext immer noch nach Frickelei.
Warum nicht die vorhandenen Bordmittel zum Einsatz bringen?
shaoran hat geschrieben: ↑ zum Beitrag ↑
02.07.2022 23:44:02
Leider finde ich keine andere Lösung für mein Problem
Dass du keine findest, heißt nicht, dass es keine gibt.
Eigenbau PC: Debian Sid - Kernel: 6.5.13 - Xfce 4.18 mit sway
Desktop PC: Dell Inspiron 530 - Debian Sid - Kernel: 6.5.13 - Xfce 4.18 mit sway
Notebook: TUXEDO BU1406 - Debian Sid - Kernel: 6.5.13 - Xfce 4.18 mit sway
Alles Minimalinstallationen und ohne sudo/PA/PW.
Rootserver: Rocky Linux 9.3 - Kernel: 5.14

Freie Software unterstützen, Grundrechte stärken!

Benutzeravatar
detix
Beiträge: 1702
Registriert: 07.02.2007 18:51:28
Wohnort: MK

Re: Persistent Network Names in Debian 11

Beitrag von detix » 04.07.2022 17:37:07

Wenn die Benennung der Interfaces mit *.link Dateien in /etc/systemd/network/ erfolgt, könnte es sein dass du eine neue initrd.img bauen musst:

Code: Alles auswählen

update-initramfs -u
siehe dazu auch /usr/share/doc/udev/README.Debian.gz,
vielleicht sollte/muss auch die /etc/udev/rules.d/70-persistent-net.rules gelöscht werden...
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!

Benutzeravatar
shaoran
Beiträge: 51
Registriert: 08.10.2009 11:34:03

Re: Persistent Network Names in Debian 11

Beitrag von shaoran » 05.07.2022 02:10:34

Blackbox hat geschrieben: ↑ zum Beitrag ↑
04.07.2022 15:12:08
shaoran hat geschrieben: ↑ zum Beitrag ↑
02.07.2022 23:44:02
und ich will eth0 -> eth3, eth1 -> eth0, eth2 -> eth1, eth3 -> eth1 umbenennen also wird es damit einfach nicht gehen.
Das ist Quatsch.
Ich habe dein Szenario soeben in unserer VA probiert und es gab (bei mir) keinerlei Probleme.
Weder mit dem Erstellen und Verwenden der .link-Dateien, noch mit deren Einsatz.
Also entweder habe ich dein Problem noch nicht verstanden, oder du machst etwas falsch?
Wie gesagt, ich habe copy&paste vom Wiki Eintrag gemacht gemacht, initrd File neu erzeugt aber die Interfaces wurden nicht umbenannt, ich habe sogar mit Namen wie testeth0 ausprobiert, es hat nichts geholfen. Ich werde es auch mal in einer VM ausprobieren, das APU Board habe ich nicht da, hab es bereits ausgeliefert.
Blackbox hat geschrieben: ↑ zum Beitrag ↑
04.07.2022 15:12:08
shaoran hat geschrieben: ↑ zum Beitrag ↑
02.07.2022 23:44:02
Allerdings, wie ich es schon selber zugegeben habe, ist das eine sehr naive Lösung.
Einsicht ist der erste Schritt zur Besserung.
Ich habe von Anfang an gesagt, dass es mir klar war, dass es eine hässliche Lösung ist. Und am Ende habe ich mich dazu entschieden, dieses Hack zu entfernen und die Label-templates anzupassen. Ich werde es in einer VM ausprobieren und schauen und dort Erfahrung ohne Gefahr sammeln.
detix hat geschrieben: ↑ zum Beitrag ↑
04.07.2022 17:37:07
Wenn die Benennung der Interfaces mit *.link Dateien in /etc/systemd/network/ erfolgt, könnte es sein dass du eine neue initrd.img bauen musst:

Code: Alles auswählen

update-initramfs -u
siehe dazu auch /usr/share/doc/udev/README.Debian.gz,
vielleicht sollte/muss auch die /etc/udev/rules.d/70-persistent-net.rules gelöscht werden...
Ich bin ziemlich sicher, dass ich die initrd Datei neu erzeugt hatte. Leider habe ich das Baord bereits ausgeliefert und kann es nicht mehr testen, ich werde aber es in einer VM ausprobieren. Danke für den Hinweis.

Antworten