przypisanie numeru wlan

12

Jak lub gdzie Linux określa przydział urządzenia sieciowego? W szczególności, wlan0czy wlan1do urządzeń bezprzewodowych USB.

Jakiś czas temu podłączyłem bezprzewodowy moduł TP USB i został on przypisany wlan0. Usunąłem to. W tym tygodniu podłączyłem urządzenie bezprzewodowe Edimax USB i wygląda jak wlan1. Usunąłem go dzisiaj, aby wypróbować drugie urządzenie bezprzewodowe Edimax USB (kupiłem dwa), a teraz pojawia się wlan2.

Znam wystarczająco dużo systemów Unix / Linux, aby wiedzieć, że jest to gdzieś konfigurowane, a jeśli usunę nieużywany plik konfiguracyjny, mogę zrobić najnowszą Edimax wlan0. Ale jak / gdzie?

Huntrods
źródło

Odpowiedzi:

15

Udev to składnik systemu, który określa nazwy urządzeń pod Linuksem - głównie nazwy plików pod /dev, ale także nazwy interfejsów sieciowych.

Wersje udev od 099 do 196 mają reguły rejestrowania nazw interfejsów sieciowych i zawsze używają tego samego numeru dla tego samego urządzenia. Reguły te są domyślnie wyłączone, zaczynając od udev 174, ale mimo to mogą być włączone przez twoją dystrybucję (np. Ubuntu je zachowuje). Niektóre dystrybucje zapewniają różne zestawy reguł.

Skrypt rejestrujący i rezerwujący nazwy interfejsów do wykorzystania w przyszłości to /lib/udev/rules.d/75-persistent-net-generator.rules. Zapisuje zasady w /etc/udev/rules.d/70-persistent-net.rules. Więc usuń istniejące wlan0i wlan1wpisy z /etc/udev/rules.d/70-persistent-net.rulesi zmień wlan2na wlan0. Uruchom udevadm --trigger --attr-match=vendor='Edimax'(lub dowolny --attr-matchznaleziony parametr pasujący do urządzenia), aby ponownie zastosować reguły do ​​już podłączonego urządzenia.

Gilles „SO- przestań być zły”
źródło
Dziękuję bardzo. To jest debian na Raspberry Pi (Raspbian), więc trwałe przechowywanie jest trochę inne.
Huntrods,
Plik, w którym przechowywane są określone przypisania wlan w tej (jak sądzę) najnowszej wersji raspbian to: /etc/udev/rules.d/70-persistent-net.rules. Dowiedziałem się tego, używając twoich informacji powyżej, a następnie wpisując „man udev”, aby zobaczyć, dlaczego nie mogłem znaleźć „wlan” w katalogu /lib/udev/rules.d.
Huntrods,
W przypadku raspbian numer wlan jest ustawiany na podstawie adresu mac urządzenia bezprzewodowego (w tym przypadku, w zależności od tego, który z nich jest podłączony do portu USB). Przydziela liczby (wlan0, wlan1 itp.) Na podstawie kolejności, w której po raz pierwszy widzi nowy adres mac, gdy rozpoznaje i konfiguruje urządzenie bezprzewodowe. Edytowanie tego pliku zgodnie z sugestią pozwala ustawić dowolne urządzenie na dowolną sieć wlan poprzez podanie statycznego adresu IP. - dzięki.
Huntrods,
kilka punktów wyjaśnienia do zaoferowania: 1) Gilles jest na miejscu w swojej odpowiedzi, chciałbym zobaczyć przykład przypisywania identyfikatorów przez hwaddr, 2) interfejsy są przypisywane na zamówienie widziane - np. mam dwie karty sieciowe edimax USB, umiejscowienie w czterech dostępnych gniazdach USB ma duże znaczenie dla kolejności ich skanowania. 3) możesz zmienić kolejność interfejsów, odłączając je i ręcznie wstawiając w kolejności, w której chcesz je zidentyfikować.
CJ Steele
4

Ten problem został rozwiązany od wersji systemd197 dzięki wprowadzeniu trwałego nazewnictwa dla urządzeń sieciowych.

Zgodnie ze stroną Freedesktop Predictable Network Interface Names , jądro po prostu przypisywało nazwy na podstawie kolejności, w jakiej sondowały je odpowiednie sterowniki:

Klasycznym schematem nazewnictwa interfejsów sieciowych stosowanym przez jądro jest po prostu przypisywanie nazw zaczynających się od „eth0”, „eth1”, ... do wszystkich interfejsów w miarę ich sondowania przez sterowniki. Ponieważ sondowanie sterowników zasadniczo nie jest przewidywalne dla współczesnej technologii, oznacza to, że jak tylko dostępnych jest wiele interfejsów sieciowych, przypisanie nazw „eth0”, „eth1” itd. Zasadniczo nie jest już ustalone i może się zdarzyć, że „ eth0 ”przy jednym uruchomieniu kończy się na„ eth1 ”przy następnym.

Jeśli twoja dystrybucja używa systemd, możesz albo użyć przewidywalnie przypisanych, ale być może niewygodnych nazw, takich jak wlp0s11lub możesz napisać udevregułę, która da im wygodniejszą nazwę, na przykład wifi1na podstawie adresu mac ...

Dołącz plik o /etc/udev/rules.d/nazwie 10-network-device.rules:

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="22:bb:cc:33:44:dd", NAME="wifi1"
jasonwryan
źródło
1
Tęsknisz tutaj za krokiem. Huntrods najwyraźniej nie ma udev po 197 roku z nowym schematem nazewnictwa, a także najwyraźniej ma trwały schemat nazewnictwa. To ten trwały schemat nazewnictwa, który musi dostosować.
Gilles 'SO - przestań być zły'
Co mogę powiedzieć; Wziąłem
łódkę