WLAN-Nummernvergabe

12

Wie oder wo bestimmt Linux die Zuordnung eines Netzwerkgeräts? Speziell wlan0oder wlan1für drahtlose USB-Geräte.

Ich habe vor einiger Zeit ein TP-USB-Kabel angeschlossen und es wurde zugewiesen wlan0. Ich habe es entfernt. Diese Woche habe ich ein Edimax USB-WLAN-Gerät angeschlossen und es erscheint als wlan1. Ich habe es heute entfernt, um ein zweites kabelloses Edimax-USB-Gerät zu testen (ich habe zwei gekauft), und jetzt kommt es wlan2.

Ich kenne genug Unix / Linux, um zu wissen, dass dies irgendwo konfiguriert wird, und wenn ich die nicht verwendete Konfigurationsdatei lösche, kann ich den neuesten Edimax erstellen wlan0. Aber wie / wo?

Huntrods
quelle

Antworten:

15

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

Udev-Versionen von 099 bis 196 enthalten Regeln zum Aufzeichnen der Namen von Netzwerkschnittstellen und verwenden immer dieselbe Nummer für dasselbe Gerät. Diese Regeln sind ab udev 174 standardmäßig deaktiviert, können jedoch von Ihrer Distribution aktiviert werden (z. B. werden sie von Ubuntu beibehalten). Einige Distributionen bieten unterschiedliche Regelsätze.

Das Skript, das Schnittstellennamen für die zukünftige Verwendung aufzeichnet und reserviert, lautet /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 von Ihrem /etc/udev/rules.d/70-persistent-net.rulesund ändern Sie wlan2zu wlan0. Führen Sie aus udevadm --trigger --attr-match=vendor='Edimax'(oder welcher --attr-matchParameter auch immer Ihrem Gerät entspricht), um die Regeln auf das bereits angeschlossene Gerät anzuwenden.

Gilles 'SO - hör auf böse zu sein'
quelle
Vielen Dank. Dies ist Debian auf dem Himbeer-Pi (Raspbian), so dass der persistente Speicher nur ein bisschen anders ist.
Huntrods
Die Datei, in der bestimmte WLAN-Zuweisungen in dieser (meiner Meinung nach neuesten) Version von Raspbian gespeichert sind, lautet: /etc/udev/rules.d/70-persistent-net.rules. Ich fand dies heraus, indem ich Ihre Informationen oben verwendete und dann "man udev" eintippte, um zu sehen, warum ich "wlan" im Verzeichnis /lib/udev/rules.d nicht finden konnte.
Huntrods
Für Raspbian wird die WLAN-Nummer basierend auf der Mac-Adresse des drahtlosen Geräts festgelegt (in diesem Fall, je nachdem, welches Gerät an den USB-Anschluss angeschlossen ist). Die Nummern (wlan0, wlan1 usw.) werden in der Reihenfolge zugewiesen, in der beim Erkennen und Konfigurieren des drahtlosen Geräts zuerst eine neue Mac-Adresse angezeigt wird. Wenn Sie diese Datei nach Ihren Vorstellungen bearbeiten, können Sie jedes Gerät anhand seiner statischen IP-Adresse auf eine beliebige WLAN-Nummer einstellen. - Vielen Dank.
Huntrods
Ein paar Punkte zur Klarstellung zu bieten: 1) Gilles ist in seiner Antwort genau richtig, würde gerne ein Beispiel für die Zuweisung von IDs durch hwaddr sehen, 2) Schnittstellen werden auf Bestellung zugewiesen, gesehen - z in den vier verfügbaren USB-Steckplätzen ist für die Reihenfolge, in der sie gescannt werden, von hoher Relevanz. 3) Sie können die Schnittstellen neu anordnen, indem Sie sie abziehen und manuell in der Reihenfolge einfügen, in der sie identifiziert werden sollen.
CJ Steele
4

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

Auf der Seite " Vorhersagbare Netzwerkschnittstellennamen" von freedesktop wurden dem Kernel einfach Namen in der Reihenfolge zugewiesen, in der sie von den entsprechenden Treibern überprüft wurden:

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

Wenn Ihre Distribution Anwendungen systemd, können Sie entweder die vorhersagbar zugewiesen , aber vielleicht sperrigen Namen wie wlp0s11oder Sie können einen schreiben udevRegel ihnen einen Namen , den Sie sich wohler mit geben, wie wifi1auf der Grundlage der MAC - Adresse ...

Binden Sie eine Datei in /etc/udev/rules.d/aufgerufene ein 10-network-device.rules:

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="22:bb:cc:33:44:dd", NAME="wifi1"
jasonwryan
quelle
1
Ihnen fehlt hier ein Schritt. Huntrods hat offenbar kein udev nach 197 mit dem neuen Benennungsschema und offenbar auch ein beständiges Benennungsschema. Es ist dieses dauerhafte Benennungsschema, das er anpassen muss.
Gilles 'SO- hör auf böse zu sein'
Was kann ich sagen; Ich nahm einen
Kahn