Есть ли способ автоматического добавления сетевых интерфейсов в systemd-networkd и / или netplan?

В настоящее время я создаю предварительно настроенные образы дисков для серверов Ubuntu 18.04. Хотя аппаратное обеспечение в основном одинаковое, между устройствами имеется несколько различных сетевых интерфейсов (и некоторые из них являются виртуальными машинами, а не "голыми железными"). Из-за этого я не знаю точно, какие сетевые устройства будут присутствовать заранее или как они будут называться (у некоторых есть одно, называемое ens33, у других есть кратные, называемые eno1, eno2 и т. Д.)

systemd-network d не вызывает автоматически интерфейсы, они должны быть явно указаны в файлах конфигурации.

В настоящее время я обхожу это с помощью NetworkManager вместо network d, поскольку он автоматически вызывает все интерфейсы, которые находит, но, учитывая, что установщик Ubuntu, кажется, автоматически добавляет любые интерфейсы, которые он находит, в конфигурацию netplan, я полагаю, что должен быть способ настроить служба или что-то, что делает то же самое при запуске. Кто-нибудь знает способ сделать это?

1 ответ

Решение

systemd-networkd может применить конфигурацию к нескольким интерфейсам одновременно, используя подстановочный знак [Match],

Например:

# cat /etc/systemd/network/99-wildcard.network
[Match]
Name=en*

[Network]
DHCP=yes

Это вызовет DHCP на любом интерфейсе, имя которого начинается с en (который является любым проводным интерфейсом).

Это возможно, используя правило соответствия в конфигурации netplan, для тех, кто предпочитает хранить все это в одном месте. Вот простое решение, которое я использовал в своих предварительно настроенных образах для интерфейсов USB с разными именами устройств:

/etc/netplan/01-netcfg.yaml:

network:
  version: 2
  renderer: networkd
  ethernets:
    eth:
      match:
        name: en*
      dhcp4: yes

Более подробная информация здесь: ссылка на Netplan

Другие вопросы по тегам