有没有办法自动将网络接口添加到 systemd-networkd 和/或 netplan?

有没有办法自动将网络接口添加到 systemd-networkd 和/或 netplan?

我目前正在为 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 参考

相关内容