predictable network interface names in systemd

Recent version of Ubuntu and Debian (stretch) bring a new network interface naming scheme.

Now, when updating from a system that's using old style names like "eth0", I'd like to know prior to booting what the new name will be.

How can I do this? Is there a magic invocation of "systemd" I can use to edit /etc/network/interface befor booting (and subsequently losing network connectivity)?

15
задан 20 June 2017 в 18:01
4 ответа

Доступны две разные схемы: 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_'
7
ответ дан 2 December 2019 в 20:54

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

2
ответ дан 2 December 2019 в 20:54

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

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

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

2
ответ дан 2 December 2019 в 20:54

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

0
ответ дан 2 December 2019 в 20:54

Теги

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