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)?
Доступны две разные схемы: 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?». Да, я понимаю, что это имеет несколько ограниченную ценность, но это может дать вам возможность для дальнейшего исследования.