在 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 桥。任何帮助,将不胜感激。