В настоящее время я создаю предварительно настроенные образы дисков для серверов 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