
Ich habe mehrere kleine NUCs, an die jeweils einige dieser USB3-LAN-Adapter angeschlossen sind (da die NUCs nur über ein Ethernet verfügen, habe ich zusätzliche mit USB3-Adaptern hinzugefügt).
Sie können ein Bild des Produkts sehenHier.
Ganz plötzlich begannen diese Geräte, wahrscheinlich aufgrund eines unbeaufsichtigten automatischen Upgrades, zufällige MAC-Adressen zu erhalten.
Vor:
Jedes angeschlossene USB3-Gerät hatte eine Adresse in der Form:
00:0E:C6:XX:XX:XX
Jedes war anders und immer gleich (stabil) und überstand Neustarts.
Jetzt haben sie Adressen wie:
eth1 - be:7d:ee:6a:26:ab
eth2 - be:7d:ee:6a:26:ab
eth3 - be:7d:ee:6a:26:ab
eth4 - be:7d:ee:6a:26:ab
eth5 - be:7d:ee:6a:26:ab
alle teilen sich dieselbe zufällig ausgewählte Adresse.
Kurz gesagt, Probleme:
- Bei jedem Neustart des Computers ändert sich diese zufällige MAC-Adresse.
- Sie teilen sich alle dieselbe zufällige MAC-Adresse. Zuvor hatte jeder eine andere und klar unterscheidbare Adresse.
Die Geräte werden wie folgt identifiziert lsusb
:
ASIX Electronics Corp. AX88179 Gigabit Ethernet
Ich habe keine Ahnung, was seit dem letzten automatischen Update passiert ist. Es ist eine Frage der Zeit, bis vor zwei Tagen bzw. einer Stunde alles einwandfrei funktionierte und dann dieses seltsame Verhalten dieser Geräte begann.
Könnte es sich um ein problematisches Update handeln? Könnte es an einem neuen Treiber liegen, der die MAC-Adresse jedes Mal zufällig festlegt? Könnte es an einer Funktion des Linux-Kernels oder der Distribution oder der GRUB-Einstellungen liegen, bei denen USB-LAN-Geräte jetzt jedes Mal eine zufällige MAC-Adresse erhalten? Aber warum haben in diesem Fall alle dieselbe Adresse? Sie sollten völlig zufällig sein …
Ich suche Hilfe und bin bereit, Tests zu machen …
Bezüglich des Betriebssystems:
Debian-Version:12.5
Linux 6.1.0-20-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.85-1 (2024-04-11) x86_64 GNU/Linux
Bisher vorgeschlagene Workarounds, einschließlich des letzten, der dank @AB immer funktioniert:
- Verwenden Sie das übergeordnete Attribut „serial“ in der UDEV-Konfiguration, um der LAN-Schnittstelle einen anderen Namen zuzuweisen, anstatt sich auf die Mac-Adresse zu verlassen
- Verwenden Sie den USB-Pfad einer USB-NIC-Adresse in Udev-Regeln, um einen Schnittstellennamen anstelle einer Mac-Adresse zuzuweisen
- Wie setzt man den Status eines Netzwerkadapters zurück, bevor man den Namen in einem Udev-Regelsatz zuweist?
Antwort1
Das6.8 Kernel-Commit, zurückportiert auf 6.1.x:
net: usb: ax88179_178a: zwei aufeinanderfolgende Geräteresets vermeiden
sollte einen doppelten Reset der AX88179-basierten Netzwerkkarte vermeiden, hatte aber als Nebeneffekt die Zuweisung einer zufälligen MAC-Adresse für die Netzwerkkarte.
Es ist ein Fix für den zukünftigen 6.9-Kernel in Arbeit,bereits auf Kernel 6.1.85+ zurückportiertdie das vorherige Problem anerkennt (undangeblichum das Problem zu beheben). Hier ist der Bestätigungsteil:
Nach dem Commit d2689b6a86b9 („net: usb: ax88179_178a: Vermeiden Sie zwei aufeinanderfolgende Geräte-Resets“) wird der Reset nicht vom Bind-Vorgang ausgeführt und die MAC-Adresse wird in diesem Moment nicht aus den Geräteregistern oder dem Gerätebaum gelesen. Da die Überprüfung, ob die zugewiesene MAC-Adresse für die Schnittstelle zufällig ist oder nicht, nach dem Bind-Vorgang von usbnet_probe erfolgt, bleibt die Schnittstelle als zufällige Adresse konfiguriert, obwohl die Adresse während des Öffnungsvorgangs (derzeit der einzige Reset) korrekt gelesen und festgelegt wird.
Das Problem ist, dass Debians Kernel 6.1.0-20-amd64 bereits den Upstream-Kernel 6.1.85 verwendet, der den Fix enthält. Dem Kommentar des OP zufolge scheint dies nicht richtig zu funktionieren, da OPIstverwende Kernel 6.1.0-20-amd64.
Was garantiert funktioniert, ist die Rückkehr zum vorherigen Zustand: vor dem Patch, der am 05.02.2024 auf 6.1.x zurückportiert wurde. Es scheint, dass das derzeit bedeutet, ZWEI Patches zurückzusetzen:
- net: usb: ax88179_178a: Vermeiden Sie die Schnittstelle, die immer als zufällige Adresse konfiguriert ist
- net: usb: ax88179_178a: zwei aufeinanderfolgende Geräteresets vermeiden
um sicherzustellen, dass es wieder wie zuvor funktioniert (und dass das Doppel-Reset-Verhalten wiederhergestellt wird, das damals kein Problem zu sein schien).
Ich konnte in den letzten Wochen feststellen, dass die Rücknahmenet: usb: ax88179_178a: zwei aufeinanderfolgende Geräteresets vermeidenhat es zum Laufen gebracht, ich habe nicht überprüft, wie sich der neuere Status (z. B. Kernel 6.1.85 oder Debian 6.1.0-20-amd64) verhält. Die Fragen und Antworten des OP deuten darauf hin, dass der 2. Patch, der das nach dem 1. Patch verursachte Verhalten beheben soll, möglicherweise nicht ausreicht und möglicherweise noch ein weiterer Fix bereitgestellt werden muss.
Zusammenfassend sind heute folgende Optionen möglich:
- Behalten Sie einen älteren Kernel, wie Debians 6.1.0-18-amd64, verfügbar unterhttps://snapshot.debian.org/ Dort:
linux-image-6.1.0-18-amd64
- Patchen Sie einen Kernel zwischen 6.1.77 und 6.1.84, indem Sie den ersten in dieser Antwort erwähnten Patch rückgängig machen und neu kompilieren (funktioniert getestet)
- Überprüfen Sie, ob ein Kernel der Version 6.1.85 oder neuer für Sie so funktioniert.
entweder es funktioniert (nichts weiter zu tun)
oder nicht (im Fall des OP)
Machen Sie zumindest den ersten Patch rückgängig und kompilieren Sie neu:
net: usb: ax88179_178a: Vermeiden Sie die Schnittstelle, die immer als zufällige Adresse konfiguriert ist(optional, kann beibehalten statt rückgängig gemacht werden)
net: usb: ax88179_178a: zwei aufeinanderfolgende Geräteresets vermeiden: (dies muss rückgängig gemacht werden)
oder warten Sie, bis ein zukünftiger Patch das Problem behebt:
AKTUALISIEREN: dieser Commit vom 18.04.2024:
net: usb: ax88179_178a: Vermeiden Sie das Schreiben der Mac-Adresse vor dem ersten Lesen
behebt das Problem (ich habe es auf einem 6.8.x-Kernel getestet). Es sollte wahrscheinlich im nächsten 6.1.x-Upstream-Kernel 6.1.88 enthalten sein und wird früher oder später von Debian übernommen. Zusätzlicher Bonus: Der Reset scheint zum Testzeitpunkt und nicht mehr beim UP-Interface durchgeführt zu werden. Die Verzögerung für Übergänge zwischen Down und Up ist jetzt also schneller.