Назад | Перейти на главную страницу

предсказуемые имена сетевых интерфейсов в systemd

В последних версиях Ubuntu и Debian (stretch) появилась новая схема именования сетевых интерфейсов.

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

Как я могу это сделать? Есть ли волшебный вызов "systemd", который я могу использовать для редактирования / etc / network / interface перед загрузкой (и, как следствие, потерей сетевого подключения)?

Доступны две разные схемы: biosdevname и предсказуемое имя сетевого интерфейса.

biosdevname

Похоже, что Biosdevname используется в Ubuntu по умолчанию. Активируется путем установки пакета biosdevname.

Имя biosdev интерфейса можно найти с помощью:

biosdevname -i eth0

Предсказуемые имена сетевых интерфейсов

Я считаю, что это значение по умолчанию в Debian stretch, но его нужно явно включить при обновлении с предыдущих выпусков.

Предсказуемое имя для eth0 можно найти с помощью:

udevadm test-builtin net_id /sys/class/net/eth0 | grep '^ID_NET_NAME_'

Я не уверен, что это все еще так с обновленными версиями, но в моих старых системах мне удалось создать пустой файл в /etc/udev/rules.d/80-net-name-slot.rules и это отключило бы функцию «предсказуемого» именования. Вы также можете создать собственное правило и назвать интерфейсы самостоятельно на основе MAC-адреса или подключений PCI / USB.

Новая схема, по-видимому, называется «предсказуемыми именами сетевых интерфейсов», но я не нахожу много документации о том, как фактически предсказать имя. Все, что я нашел об этом в основном указывает на этот исходный код комментарий (который сам указывает на первую ссылку). Из комментария вообще непонятно, как узнать, какую схему адресации udev собирается использовать для имени сетевого устройства.

По первой ссылке вы можете отключить ее и использовать традиционные имена, добавив net.ifnames=0 в командной строке ядра в Grub. В соответствии с этот комментарий это может быть необходимо, если вы планируете создать интерфейс с тегами VLAN, поскольку добавленное расширение сделает имя интерфейса слишком длинным.

В противном случае было бы лучше задать вопрос еще раз, чтобы объяснить, что вы пытаетесь сделать с именем (например, настроить интерфейс через ansible или что-то подобное)

Эта документация может немного помочь. См. Раздел «Что именно изменилось в версии 197?». Да, я понимаю, что это имеет несколько ограниченную ценность, но это может дать вам возможность для дальнейших исследований.