使用 systemd-networkd 的无上行链路桥

使用 systemd-networkd 的无上行链路桥

我正在尝试配置多个 Linux 网桥,所有这些网桥都没有物理上行链路,以用作具有 KVM/QEMU 的隔离虚拟网络。我正在运行 Archlinux,它使用 systemd-networkd 来配置网络接口。我正在使用 Cloud-Init 部署机器。除了 Cloud-Init 未生成正确文件的问题(更多信息请参见另一个问题)之外,我发现 systemd-networkd 可能不会使桥接接口联机,除非配置了某种形式的上行链路端口。

如果我只有两个文件,即 netdev 文件和网络文件,则会创建桥接接口,但不会配置 IP 地址并使其联机:

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

[NetDev]
Name=br0
Kind=bridge



</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

这两个文件的最终结果是很长的启动延迟以及:

#> ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 00:16:3e:00:e7:1d brd ff:ff:ff:ff:ff:ff
    altname enp0s2
    altname ens2
3: br0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 9a:02:bb:df:fc:5a brd ff:ff:ff:ff:ff:ff

如果我创建一个分配物理上行链路的附加文件:

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

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

[Network]
Bridge=br0

世界上一切都好:

#> ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
    link/ether 00:16:3e:00:e7:1d brd ff:ff:ff:ff:ff:ff
    altname enp0s2
    altname ens2
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 9a:02:bb:df:fc:5a brd ff:ff:ff:ff:ff:ff
    inet 192.168.231.29/23 brd 192.168.231.255 scope global br0
       valid_lft forever preferred_lft forever
    inet6 fe80::9802:bbff:fedf:fc5a/64 scope link 
       valid_lft forever preferred_lft forever

在 Debain 上,它使用 IfUpDown 来配置接口,我必须为网桥的交换机端口指定 NONE(我认为),以便网桥上线。我似乎找不到任何关于 systemd.networkd 的文档来定义如何配置没有上行链路的网桥。任何援助将不胜感激。

答案1

您必须添加ConfigureWithoutCarrier=yes桥接网络文件的 [Network] 部分。 (参见网络部分选项

没有从设备的网桥默认处于未配置NO-CARRIER状态,并systemd-networkd保留处于NO-CARRIER未配置状态的接口。

相关内容