Назад | Перейти на главную страницу

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

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

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

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

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