
Это новая установка системы Ubuntu server 20.04.04. Я использую networkd и netplan для настройки сети. Я не делал никаких шагов по установке, просто загрузил .iso и установил Ubuntu server через подсказки.
Когда эти машины были отправлены поставщиком, Ubuntu уже была установлена, а сетевые интерфейсы были названы ens1f0
следующим образом ens1f1
:
root@oldHost2:~# sudo lshw -C network |grep "logical name"
logical name: ens1f0
logical name: ens1f1
logical name: bond0
Однако после переустановки ОС (до запуска netplan) я получаю...
root@freshHost1:~# sudo lshw -C network |grep "logical name"
logical name: ens1f0np0
logical name: ens1f1np1
logical name: bond0
На всех моих сайтах мы используем конфигурацию netplan, которая предполагает ens1f0
и ens1f0
. Я бы хотел, чтобы все интерфейсы соответствовали этому.
Я знаю, что вы можете задать имя интерфейса set-name
в netplan (как определено вhttps://ubuntu.com/server/docs/network-configuration) однако вам нужно уже как-то сопоставить интерфейс (используя MAC-адрес и т. д.), что сделает автоматическую инициализацию кошмаром (если не невозможной). Сценарий «курица/яйцо». У меня есть сотни машин для инициализации, и я хотел бы шаблонизировать мою конфигурацию netplan, не зная MAC-адресов.
Я знаю, что можно также сгруппировать интерфейсы в netplan:
ethernets:
eports:
match:
name: ens*
Это может подойти в моем случае, но не все системы имеют простую настройку из двух сетевых карт, поэтому я не уверен, какой курс действий будет лучшим.
Мои вопросы к ServerFault...
- Поскольку это логическое имя задается еще до запуска Netplan, что определяет это имя? Как я могу переопределить его во время установки/подготовки ОС?
- Что означают символы
np0
иnp1
в названиях интерфейсов?
решение1
Это определяется systemd на основе информации об устройстве. На имя могут влиять несколько различных факторов, включая BIOS, другие устройства, которые могут быть установлены, версию Linux и версию драйвера. Смотретьhttps://www.freedesktop.org/software/systemd/man/systemd.net-naming-scheme.htmlо том, как systemd конструирует имена.
Например, номера слотов могут быть связаны со слотами PCIe, а могут и не быть. Я думаю, что это как минимум связано с BIOS/ACPI, но могут быть и другие факторы. На одной из моих машин сетевая карта, установленная в одном слоте, нумеруется как enpN, а та же сетевая карта, перемещенная в другой слот, нумеруется как ensN.
Я слышал о случаях, когда номера шин PCIe назначались по-разному при определенных условиях, например, при наличии устройства Thunderbolt во время загрузки. В конечном счете, это, вероятно, вина BIOS системы, которая не резервировала номера шин PCIe правильно для порта Thunderbolt.
Что касается того, что вы видите с np0 и np1, p0 и p1 — это имена физических портов, взятые из devlink __devlink_port_phys_port_name_get
. Предположительно поддержка devlink была добавлена в драйвер NIC, что и привело к появлению np0/np1. Если вы обновите старую систему до той же версии ядра, то наименование также должно измениться.