WLAN-Nummernvergabe

WLAN-Nummernvergabe

Wie bzw. wo ermittelt Linux die Zuordnung eines Netzwerkgerätes? Konkret wlan0bzw. wlan1für kabellose USB-Geräte.

Ich habe vor einiger Zeit ein TP USB-Wireless-Gerät angeschlossen und ihm wurde zugewiesen wlan0. Ich habe es entfernt. Diese Woche habe ich ein Edimax USB-Wireless-Gerät angeschlossen und es wird als angezeigt wlan1. Ich habe es heute entfernt, um ein zweites Edimax USB-Wireless-Gerät auszuprobieren (ich habe zwei gekauft) und jetzt wird es als angezeigt wlan2.

Ich kenne mich gut genug mit Unix/Linux aus, um zu wissen, dass dies irgendwo konfiguriert wird. Wenn ich die unbenutzte Konfigurationsdatei lösche, kann ich das neueste Edimax zu ... machen wlan0. Aber wie/wo?

Antwort1

Udevist die Systemkomponente, die die Namen von Geräten unter Linux bestimmt – hauptsächlich Dateinamen unter /dev, aber auch die Namen von Netzwerkschnittstellen.

Die Versionen von udev von 099 bis 196 enthalten Regeln, um die Namen von Netzwerkschnittstellen aufzuzeichnen und immer dieselbe Nummer für dasselbe Gerät zu verwenden. Ab udev 174 sind diese Regeln standardmäßig deaktiviert, können aber dennoch von Ihrer Distribution aktiviert werden (Ubuntu behält sie beispielsweise bei). Einige Distributionen bieten andere Regelsätze.

Das Skript, das Schnittstellennamen für die zukünftige Verwendung aufzeichnet und reserviert, ist /lib/udev/rules.d/75-persistent-net-generator.rules. Es schreibt Regeln in /etc/udev/rules.d/70-persistent-net.rules. Entfernen Sie also die vorhandenen wlan0und wlan1Einträge aus Ihrem /etc/udev/rules.d/70-persistent-net.rulesund wechseln Sie wlan2zu wlan0. Führen Sie es aus udevadm --trigger --attr-match=vendor='Edimax'(oder den --attr-matchParameter, der auf Ihr Gerät zutrifft), um die Regeln erneut auf das bereits angeschlossene Gerät anzuwenden.

Antwort2

Dieses Problem wurde ab systemdVersion 197 mit der Einführung einer dauerhaften Benennung für Netzwerkgeräte behoben.

Laut dem FreedesktopVorhersagbare NetzwerkschnittstellennamenSeite hat der Kernel einfach Namen basierend auf der Reihenfolge zugewiesen, in der sie von den entsprechenden Treibern geprüft wurden:

Das klassische Benennungsschema für Netzwerkschnittstellen, das vom Kernel angewendet wird, besteht darin, allen Schnittstellen, die von den Treibern geprüft werden, einfach Namen zuzuweisen, die mit „eth0“, „eth1“ usw. beginnen. Da die Treiberprüfung für moderne Technologien im Allgemeinen nicht vorhersehbar ist, bedeutet dies, dass, sobald mehrere Netzwerkschnittstellen verfügbar sind, die Zuweisung der Namen „eth0“, „eth1“ usw. im Allgemeinen nicht mehr festgelegt ist und es durchaus passieren kann, dass „eth0“ bei einem Startvorgang beim nächsten zu „eth1“ wird.

Wenn Ihre Distribution systemd verwendet, können Sie entweder die vorhersehbar zugewiesenen, aber möglicherweise unhandlichen Namen wie verwenden wlp0s11oder eine Regel schreiben, udevum ihnen basierend auf der Mac-Adresse einen für Sie angenehmeren Namen zu geben, beispielsweise wifi1...

Fügen Sie eine Datei mit /etc/udev/rules.d/dem Namen ein 10-network-device.rules:

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="22:bb:cc:33:44:dd", NAME="wifi1"

verwandte Informationen