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

RCH*_*RCH 4 ubuntu systemd systemd-networkd

我目前正在为 Ubuntu 18.04 服务器构建预配置的磁盘映像。虽然硬件基本相同,但设备之间有一些不同的网络接口(有些是虚拟机而不是裸机)。因此,我不知道事先会出现哪些网络设备或它们将被称为什么(有些有一个称为 ens33 的单一设备,其他有多个称为 eno1、eno2 等)。

systemd-networkd 不会自动打开接口,它们必须在配置文件中明确指定。

我目前正在通过使用 NetworkManager 而不是 networkd 来绕过它,因为它会自动调出它找到的任何接口,但考虑到 Ubuntu 安装程序似乎会自动将它找到的任何接口添加到 netplan 的配置中,我认为必须有一种方法来设置一个服务或在启动时做同样事情的东西。有人知道这样做的方法吗?

Mic*_*ton 7

systemd-networkd 可以使用通配符将配置一次应用于多个接口[Match]

例如:

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

[Network]
DHCP=yes
Run Code Online (Sandbox Code Playgroud)

en这将在名称以 开头的任何接口(即每个有线接口)上启动 DHCP 。


小智 5

这可以使用 netplan 配置中的匹配规则来实现,对于那些希望将所有内容都保存在一个地方的人来说。这是我在我的预配置映像中使用的一个简单的解决方案,用于具有不同设备名称的 USB 接口:

/etc/netplan/01-netcfg.yaml:

network:
  version: 2
  renderer: networkd
  ethernets:
    eth:
      match:
        name: en*
      dhcp4: yes
Run Code Online (Sandbox Code Playgroud)

此处有更多详细信息:Netplan 参考