присвоение номера WLAN

12

Как или где Linux определяет назначение сетевого устройства? Специально wlan0или wlan1для беспроводных USB-устройств.

Я подключил беспроводной USB TP некоторое время назад, и он был назначен wlan0. Я удалил это. На этой неделе я подключил беспроводное USB-устройство Edimax wlan1. Я снял его сегодня, чтобы попробовать второе беспроводное USB-устройство Edimax (я купил два), и теперь оно подходит wlan2.

Я достаточно знаю Unix / Linux, чтобы знать, что это где-то настраивается, и если я удаляю неиспользуемый конфигурационный файл, я могу сделать последнюю версию Edimax wlan0. Но как / где?

Huntrods
источник

Ответы:

15

Udev - это системный компонент, который определяет имена устройств в Linux - в основном имена файлов под /dev, а также имена сетевых интерфейсов.

Версии udev от 099 до 196 поставляются с правилами записи имен сетевых интерфейсов и всегда используют один и тот же номер для одного и того же устройства. Эти правила по умолчанию отключены, начиная с udev 174, но, тем не менее, могут быть включены вашим дистрибутивом (например, Ubuntu сохраняет их). Некоторые дистрибутивы предоставляют разные наборы правил.

Сценарий, который записывает и резервирует имена интерфейсов для будущего использования /lib/udev/rules.d/75-persistent-net-generator.rules. Это пишет правила в /etc/udev/rules.d/70-persistent-net.rules. Поэтому удалите существующие wlan0и wlan1записи из вашего /etc/udev/rules.d/70-persistent-net.rules, и измените wlan2на wlan0. Запустите udevadm --trigger --attr-match=vendor='Edimax'(или любой другой найденный --attr-matchпараметр, соответствующий вашему устройству), чтобы повторно применить правила к уже подключенному устройству.

Жиль "ТАК - перестань быть злым"
источник
Огромное спасибо. Это debian для raspberry pi (raspbian), поэтому постоянное хранилище немного отличается.
Huntrods
Файл, в котором хранятся конкретные wlan-назначения в этой (последней, я думаю) версии raspbian: /etc/udev/rules.d/70-persistent-net.rules. Я выяснил это, используя вашу информацию выше, а затем набрал "man udev", чтобы понять, почему я не смог найти 'wlan' в каталоге /lib/udev/rules.d.
Huntrods
Для raspbian номер WLAN устанавливается на основе MAC-адреса беспроводного устройства (в этом случае, какое бы устройство не было подключено к USB-порту). Он распределяет номера (wlan0, wlan1 и т. Д.) В соответствии с порядком, в котором он впервые видит новый mac-адрес, когда распознает и настраивает беспроводное устройство. Редактирование этого файла, как вы предлагаете, позволяет установить любое устройство на любой WLAN # по его статическому IP. - Благодарность.
Huntrods
пара разъяснений, которые следует предложить: 1) Жиль в своем ответе замечателен, хотел бы увидеть пример назначения идентификаторов с помощью hwaddr, 2) интерфейсы назначаются по порядку - например, у меня есть два сетевых адаптера edimax USB, размещение В четырех доступных USB-слотах очень важен порядок их сканирования. 3) вы можете изменить порядок интерфейсов, отключив их и вставив вручную в том порядке, в котором вы хотите их идентифицировать.
CJ Стил
4

Эта проблема была решена systemdначиная с v197 с введением постоянного именования для сетевых устройств.

Согласно странице « Предсказуемые имена сетевых интерфейсов freedesktop» , ядро ​​просто назначало имена в порядке, в котором они были проверены соответствующими драйверами:

Классическая схема именования сетевых интерфейсов, применяемая ядром, заключается в простом присвоении имен, начинающихся с «eth0», «eth1», ..., всем интерфейсам, когда они проверяются драйверами. Поскольку исследование драйвера, как правило, не предсказуемо для современных технологий, это означает, что, как только будет доступно несколько сетевых интерфейсов, присвоение имен «eth0», «eth1» и т. Д., Как правило, больше не фиксируется, и вполне может случиться, что » eth0 "на одной загрузке заканчивается как" eth1 "на следующей.

Если ваш дистрибутив использует systemd, вы можете использовать предсказуемо назначенные, но, возможно, громоздкие имена, например, wlp0s11или вы можете написать udevправило, чтобы дать им имя, которое вам более удобно, например wifi1, на основе MAC-адреса ...

Включите файл в /etc/udev/rules.d/Android 10-network-device.rules:

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="22:bb:cc:33:44:dd", NAME="wifi1"
jasonwryan
источник
1
Вы пропустите шаг здесь. У Huntrods очевидно нет udev после 1979 года с новой схемой именования, а также, очевидно, есть постоянная схема именования. Именно эту постоянную схему именования он должен настроить.
Жиль "ТАК - перестань быть злым"
Что я могу сказать; Я взял
понт