assegnazione numero wlan


12

Come o dove Linux determina l'assegnazione di un dispositivo di rete? In particolare, wlan0o wlan1per dispositivi USB wireless.

Qualche tempo fa ho collegato un TP USB wireless e mi è stato assegnato wlan0. L'ho rimosso. Questa settimana ho collegato un dispositivo wireless USB Edimax e si presenta come wlan1. L'ho rimosso oggi per provare un secondo dispositivo wireless USB Edimax (ne ho acquistati due) e ora viene fuori wlan2.

Conosco abbastanza Unix / Linux da sapere che questo è configurato da qualche parte, e se cancello il file di configurazione inutilizzato posso fare diventare l'ultimo Edimax wlan0. Ma come / dove?

Risposte:


15

Udev è il componente di sistema che determina i nomi dei dispositivi su Linux, principalmente i nomi dei file /dev, ma anche i nomi delle interfacce di rete.

Le versioni di udev da 099 a 196 includono regole per registrare i nomi delle interfacce di rete e utilizzare sempre lo stesso numero per lo stesso dispositivo. Queste regole sono disabilitate di default a partire da udev 174, ma possono comunque essere abilitate dalla tua distribuzione (es. Ubuntu le mantiene). Alcune distribuzioni forniscono diversi set di regole.

Lo script che registra e riserva i nomi delle interfacce per un uso futuro è /lib/udev/rules.d/75-persistent-net-generator.rules. Scrive le regole /etc/udev/rules.d/70-persistent-net.rules. Quindi rimuovere le voci esistenti wlan0e wlan1dal tuo /etc/udev/rules.d/70-persistent-net.rulese passare wlan2a wlan0. Esegui udevadm --trigger --attr-match=vendor='Edimax'(o qualsiasi --attr-matchparametro che trovi corrisponda al tuo dispositivo) per riapplicare le regole al dispositivo già collegato.


Grazie mille. Questo è debian su raspberry pi (raspbian) quindi l'archiviazione persistente è solo un po 'diversa.
Huntrods,

Il file in cui sono archiviate specifiche assegnazioni wlan su questa (ultima, credo) versione di raspbian è: /etc/udev/rules.d/70-persistent-net.rules. L'ho scoperto usando le tue informazioni sopra e poi digitando "man udev" per capire perché non sono riuscito a trovare 'wlan' nella directory /lib/udev/rules.d.
Huntrods,

Per raspbian, il numero wlan è impostato in base all'indirizzo mac del dispositivo wireless (in questo caso, qualunque sia collegato alla porta USB). Alloca numeri (wlan0, wlan1, ecc.) In base all'ordine in cui vede per la prima volta un nuovo indirizzo mac quando riconosce e configura il dispositivo wireless. La modifica di questo file come suggerito consente di impostare qualsiasi dispositivo su qualsiasi wlan # tramite il suo IP statico. - Grazie.
Huntrods

un paio di punti di chiarimento da offrire: 1) Gilles è perfetto nella sua risposta, mi piacerebbe vedere un esempio di assegnazione di ID tramite hwaddr, 2) le interfacce sono assegnate su ordine visto - ad esempio ho due NIC USB edimax, posizionamento nei quattro slot USB disponibili è molto rilevante per l'ordine di scansione. 3) è possibile riordinare le interfacce scollegandole e inserendole manualmente nell'ordine in cui si desidera che vengano identificate.
CJ Steele,

4

Questo problema è stato risolto dalla systemdv197 con l'introduzione della denominazione persistente per i dispositivi di rete.

Secondo la pagina Nomi interfaccia di rete prevedibili freedesktop , il kernel ha semplicemente assegnato i nomi in base all'ordine in cui sono stati sondati dai driver pertinenti:

Il classico schema di denominazione per le interfacce di rete applicate dal kernel consiste semplicemente nell'assegnare nomi che iniziano con "eth0", "eth1", ... a tutte le interfacce man mano che vengono esaminati dai driver. Poiché il sondaggio del driver non è generalmente prevedibile per la tecnologia moderna, ciò significa che non appena sono disponibili più interfacce di rete, l'assegnazione dei nomi "eth0", "eth1" e così via non è più fissata e potrebbe accadere che " eth0 "su uno stivale finisce per essere" eth1 "sul successivo.

Se la tua distribuzione usa systemd, puoi usare i nomi assegnati in modo prevedibile ma forse ingombranti wlp0s11o puoi scrivere una udevregola per dare loro un nome con cui ti senti più a tuo agio, come wifi1, in base all'indirizzo mac ...

Includi un file in /etc/udev/rules.d/chiamato 10-network-device.rules:

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

1
Ti stai perdendo un passo qui. Evidentemente Huntrods non ha un udev post-197 con il nuovo schema di denominazione, e evidentemente ha anche uno schema di denominazione persistente. È questo schema di denominazione persistente che deve modificare.
Gilles 'SO- smetti di essere malvagio' il

Cosa posso dire; Ho preso un
calcio
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.