it-roy-ru.com

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

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

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

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

15
Ralf Hildebrandt

Доступны две разные схемы: 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
GnP

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

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

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

2
DerfK

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

2
user143311

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

0
Charles Burge