我目前正在为 Ubuntu 18.04 服务器构建预配置的磁盘映像。虽然硬件基本相同,但设备之间有一些不同的网络接口(有些是虚拟机而不是裸机)。因此,我事先并不知道具体会存在哪些网络设备,也不知道它们叫什么(有些只有一个名为 ens33 的网络设备,而有些有多个名为 eno1、eno2 等的网络设备)。
systemd-networkd 不会自动启动接口,必须在配置文件中明确指定。
我目前通过使用 NetworkManager 而不是 networkd 来绕过这个问题,因为它会自动调出它找到的任何接口,但考虑到 Ubuntu 安装程序似乎会自动将它找到的任何接口添加到 netplan 的配置中,我想一定有一种方法可以设置服务或在启动时执行相同操作的东西。有人知道怎么做吗?
答案1
systemd-networkd 可以使用通配符一次将配置应用于多个接口[Match]
。
例如:
# cat /etc/systemd/network/99-wildcard.network
[Match]
Name=en*
[Network]
DHCP=yes
这将在名称以 开头的任何接口上启动 DHCP en
(即每个有线接口)。
答案2
对于那些希望将所有内容保存在一个地方的人来说,可以使用 netplan 配置中的匹配规则来实现这一点。这是我在预配置的具有不同设备名称的 USB 接口映像中使用的简单解决方案:
/etc/netplan/01-netcfg.yaml:
network:
version: 2
renderer: networkd
ethernets:
eth:
match:
name: en*
dhcp4: yes
更多详情请参见:Netplan 参考