назначение номера wlan

назначение номера wlan

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

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

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

решение1

Удев— системный компонент, который определяет имена устройств в 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параметр, который, как вы найдете, соответствует вашему устройству), чтобы повторно применить правила к уже подключенному устройству.

решение2

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

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

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

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

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

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

Связанный контент