
Angesichts dieses Kernelproblems, das auf eine Lösung wartet, und der zufälligen Zuweisung von Mac-Adressen an diese USB3-LAN-Adapter:Debian 12 - Plötzlich wird meinem USB3-LAN-Adapter bei jedem Neustart eine zufällige Mac-Adresse zugewiesen
Ich versuche, eine Problemumgehung zu finden, abgesehen von benutzerdefiniertenKernel mit einem Patch neu kompilierenoderVerwenden Sie eine alte Kernel-Version.
Grundsätzlich basiert die Konfiguration meiner Schnittstellen auf benutzerdefinierten Namen, die ich mithilfe einer udev-Konfigurationsdatei erhalte.70-persistent-net.rules(bestimmte Schnittstellen werden basierend auf ihrer MAC-Adresse umbenannt, aber aufgrund des oben genannten Fehlers funktioniert dies nicht mehr).
Durch Betrachten der Syntax von udev-Dateien/etc/udev/rules.d/70-persistent-net.rules
Meine Konferenz enthält verschiedene Zeilen wie:
SUBSYSTEM="net", ACTION="add", DRIVERS="?*", ATTR{address}="00:....", ATTR{dev_id}="0x0", ATTR{type}="1", KERNEL="eth*", NAME="lan1"
Was ich nun durch den Aufruf des Befehls herausgefunden habe:
udevadm info -a -p /sys/class/net/eth1
und das gleiche mit eth2, eth3, eth4, eth5 ...
ist, dass es ein ATTR gibt, das interessant ist, um die Schnittstellen eindeutig zu identifizieren.
Es handelt sich um ein Attribut namens „serial“, das jedoch nicht für eth1, eth2 … verfügbar ist, sondern für deren direktes übergeordnetes Gerät.
Tatsächlich beginnt der Befehl mit den Worten:schaue mir das Gerät an ...aber nachdem es heißtschaue auf das übergeordnete Gerät …
Daher frage ich mich, ob ich so etwas tun kann:
SUBSYSTEM="net", ACTION="add", DRIVERS="?*", ATTR{parent>serial}="00000003", ATTR{dev_id}="0x0", ATTR{type}="1", KERNEL="eth*", NAME="lan1"
Verwenden Sie zum Umbenennen der LAN-Schnittstelle die übergeordnete Seriennummer, anstatt die Konfiguration auf der MAC-Adresse zu basieren.
Gibt es eine solche Syntax?
Danke
Antwort1
Es scheint, dass ich mit diesem Beitrag eine Antwort darauf gefunden habe:Wie werden USB-Geräte eindeutig unterschieden?
Lesen dieses Verweises:https://www.reactivated.net/writing_udev_rules.html
Es scheint, dass Sie einzelne Elternteile mit dem tatsächlichen Niveau mischen können, indem Sie verwendenATTRS, also mitATTRS{serial}anstattATTR{Adresse}und unter Verwendung der Seriennummer, die bereitgestellt wird vonudevadm info -a -p /sys/class/net/eth1mach den Job.
Beispiel:
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTRS{serial}=="00000000000094", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="lan1"
Ich bin also wieder auf den neuesten Linux-Kernel umgestiegen und habe darauf gewartet, dass die Debian-Entwickler den Patch in den Upstream-Kanal stellen, damit der Mac im EEPROM gelesen werden kann. Das ist zwar vorerst ein Workaround, aber ein solider.
Der einzige lustige Teil ist, dass, wenn die Geräte keine angeschlossenen Kabel haben, sowohl LAN1 als auch eth0 vorhanden sind. In meinem Fall ist LAN1 aktiv und erhält „seltsamerweise“ die richtige MAC-Adresse, und eth0 ist immer noch mit der zufälligen MAC-Adresse ausgefallen.
BEARBEITEN: Das hat funktioniert, bis ich festgestellt habe, dass einige Geräte die gleiche Seriennummer ¯_(ツ)_/¯ haben. Also habe ich angefangen, direkt die USB-Root-Bus-Nummer und die Gerätenummer zu verwenden, um die Adapter eindeutig zu identifizieren, da ich sie immer an ihrem Platz lasse, ohne sie zu bewegen. Überprüfen Sie dazu die Frage:Verwenden Sie den USB-Pfad einer USB-NIC-Adresse in Udev-Regeln, um einen Schnittstellennamen anstelle einer Mac-Adresse zuzuweisen