Cloud-Init systemd-networkd 桥配置不完整/不正确

Cloud-Init systemd-networkd 桥配置不完整/不正确

在 ArchLinux 上使用 Cloud-Init(使用 systemd-networkd 配置网络接口)时,对于桥接接口,生成的配置文件不完整/不正确。经过很长的启动延迟后,桥接接口无法上线。我必须修改生成的文件,甚至创建新文件才能获得工作的桥接口。

从 Cloud-Init 文档开始:

https://cloudinit.readthedocs.io/en/latest/reference/network-config-format-v2.html#bridges

我想出了以下网络 YAML 文件:

version: 2
ethernets:
  switchports:
    match:
      macaddress: '00:16:3e:00:e7:1d'
bridges:
  br0:
    interfaces: [switchports]
    addresses:
      - 192.168.231.29/23
    routes:
      - to: 0.0.0.0/0
        via: 192.168.230.4
    nameservers:
      addresses: [192.168.230.5]

经过长时间的启动延迟后(可能是由于网络失败),我得到了由 Cloud-Init 生成的以下网络配置文件:

</etc/systemd/network/10-cloud-init-br0.network>

[Address]
Address=192.168.231.29/23

[Match]
Name=br0

[Network]
DHCP=no
DNS=192.168.230.5

[Route]
Destination=0.0.0.0/0

Gateway=192.168.230.4



</etc/systemd/network/10-cloud-init-eth0.network>

[Match]
MACAddress=00:16:3e:00:e7:1d
Name=eth0

[Network]
DHCP=no



</etc/systemd/network/10-cloud-init-switchports.network>

[Match]
Name=switchports

[Network]
DHCP=no

根据 systemd 文档:

https://www.freedesktop.org/software/systemd/man/systemd.network.html

这是丢失的 netdev 文件。 switchport 文件甚至没有关闭。我必须创建一个新的 netdev 文件并修改其他两个文件,使其看起来像:

</etc/systemd/network/10-cloud-init-br0.netdev> #New File

[NetDev]
Name=br0
Kind=bridge

</etc/systemd/network/10-cloud-init-eth0.network> #Modify this file
[Match]
MACAddress=00:16:3e:00:e7:1d
Name=eth0
    
[Network]
DHCP=no
Bridge=br0 <- new line


</etc/systemd/network/10-cloud-init-switchports.network> #delete this file outright

无需编辑主 br0 配置文件。运行后

systemctl 重新启动 systemd-networkd.service

br0接口上线。我试图弄清楚我是否在 cloud-init 网络 YAML 配置上做错了什么。至少,根本没有生成 netdev 文件。如果确实需要,我可以删除该 mac 地址匹配,但我希望网络配置 V2 比这更灵活。

无论如何,Cloud-Init 都没有在 ArchLinux 上正确配置 systemd-networkd 桥。任何帮助,将不胜感激。

相关内容