Ubuntu 17.04: как переименовать сетевой интерфейс USB на основе Пути? (НЕ на основе MAC)

Нет, это не дубликат того, Почему мой адаптер Wi-Fi не обнаруживается как wlan0 в 16,04?, поскольку это объясняет, как восстановить eth0 именование, но не, как индивидуально назвать определенный интерфейс.

Я не хочу присваиваться на основе соответствия MAC. Все, в чем я нуждаюсь, должно присвоить имя на основе пути USB.

Когда я включаю сетевой адаптер USB, на Ubuntu 17.04 ему присваивают название сетевого интерфейса на основе его MAC, такой как encx000000000000. Теперь я хотел бы переименовать его к чему-то больше сообщения, на основе его ID_PATH =pci-000:02:03.0-usb-0:1:1.0. В частности, я не хочу соответствовать на основе MAC-адреса. Объяснение - то, что после интерфейсной замены все сломались бы, но если кто-то просто заменит аппаратные средства сетевого интерфейса так, чтобы новые аппаратные средства были в том же месте как старое, система подвернет на, не нуждаясь в IT и поддержке реконфигурирования.

Таким образом, я создал файл /etc/systemd/network/50-my-island.link:

[Match]
Path=pci-000:02:03.0-usb-0:1:1.0
[Link]
Name=island0

К сожалению, имя никогда не присваивается. Используя udevadm info Я вижу, что существует ID_NET_NAME=island0 набор, но это не применяется. Попытка NamePolicy= или NamePolicy=name под [Link] раздел не помогает также.

Я заблудился! Как я могу присвоить свое имя в .link файле к моему сетевому адаптеру USB? Действительно ли это возможно вообще, не обращаясь к некоторому правилу udev? Почему, затем имея .link файлы вообще, когда они, кажется, не работают в моем случае? Где я совершал ошибку?

8
задан 20 August 2017 в 01:25

2 ответа

Итак, я наконец-то понял, что происходит на самом деле.

Увы, я вижу проблему в том, что переименование сетевых интерфейсов на основе USB не работает, на самом деле вызвано правилом udev /lib/udev/rules.d/73-usb-net-by-mac.rules в Ubuntu / Debian (и, следовательно, также в Raspbian). Виновник здесь:

ACTION=="add", SUBSYSTEM=="net", SUBSYSTEMS=="usb", NAME=="", \
  ATTR{address}=="?[014589cd]:*", \
  TEST!="/etc/udev/rules.d/80-net-setup-link.rules", \
  TEST!="/etc/systemd/network/99-default.link", \
    IMPORT{builtin}="net_id", NAME="$env{ID_NET_NAME_MAC}"

Обратите внимание, как это конкретное правило проверяет наличие / etc /udev/rules.d/80-net-setup-link.rules ; если это не так, то для NAME будет задано имя на основе MAC48 и более позднее правило установки по умолчанию / lib /udev/rules.d/80-net-setup-link .rules никогда не получит возможность назначить ИМЯ . Вот это печально. Опять же.

Чтобы разрешить возможность назначать пользовательские имена сетевым интерфейсам USB , нам необходимо иметь / etc /udev/rules.d/80-net -setup-link.rules , так как это набор правил 73-usb-net-by-mac.rules , который проверяется перед назначением ИМЯ .

Это означает это просто ссылка с /etc/udev/rules.d/80-net-setup-link.rules на /lib/udev/rules.d/80-net-setup-link.rules необходимо, чтобы имена сетевых интерфейсов, назначенные пользователем, больше не игнорировались.

sudo ln -s /lib/udev/rules.d/80-net-setup-link.rules /etc/udev/rules.d/80-net-setup-link.rules

Перезагрузка. Готово.

Обратите внимание, что побочный эффект способа настройки 73-usb-net-by-mac.rules приводит к тому, что все сетевые интерфейсы на основе USB принимают «старое» именование eth0 и так далее, если это явно не указано в файле .link .

Я не знаю, почему правила были написаны такими, какие они есть, так как было бы хорошо имеют имена на основе MAC для всех сетевых адаптеров USB, которые не указаны явно. Если подумать ... нет , использование имен на основе MAC48 не имеет никакого смысла,если вы случайно не пометили все свои сетевые USB-ключи и постоянно меняете их местами; но, возможно, имена на основе MAC используются с док-станциями, где это действительно имеет смысл ...?

13
ответ дан 23 November 2019 в 07:23

согласно этому потоку. и особенно этот пункт:

Наименование пользовательского сетевого интерфейса ... Имя файла правил должно имеют префикс меньше "80", так что он работает до того. /lib/udev/rules.d/80-net-setup-link.rules, и должны иметь префикс больше, чем "75", так что он работает после 75-сетевого описания.правил и Таким образом, вы можете использовать совпадения по ID_VENDOR и аналогичным свойствам. ...

Я создал этот файл : /etc/udev/rules.d/76-netnames.rules

с этим содержимым

# USB device by path
# get ID_PATH if not present yet
ENV{ID_PATH}=="", IMPORT{builtin}="path_id"
SUBSYSTEM=="net", ACTION=="add", ENV{ID_PATH}=="*-usb-0:1.*", NAME="eth%n"

он работает нормально, без обходного пути, который вы предоставили.

Я создал этот файл в файле debian preseed.cfg, чтобы установить мою целевую сетевую конфигурацию в полностью автоматизированной установке Debian.
. Делая это на Intel NUC, моя внутренняя сетевая карта теперь называется eno1 в Debian 9.5 (stretch)

3
ответ дан 23 November 2019 в 07:23

Другие вопросы по тегам:

Похожие вопросы: