我需要为虚拟机创建持久网桥 ( libvirt
)
所以这个网桥不需要任何物理端口,连接将被路由到这个网桥。
如果我手动设置它,它会按照我所描述的那样工作。但是我无法让这种情况在重新启动之间持续存在。
我已经在以下位置创建了这座桥/etc/network/interfaces
:
auto vm-bridge
iface vm-bridge inet static
address 10.1.0.1
broadcast 10.1.0.3
netmask 255.255.255.252
gateway 10.1.0.1
但是,当主机重新启动时,不会创建该接口。互联网上的所有参考资料都添加bridge_ports
到了桥中,所以我不确定我错过了什么。
您必须提供一个选项,以便激活
/etc/network/if-pre-up.d/bridge
通过安装包提供的桥接插件bridge-utils
。它提供的主要命令brctl
没有用(被ip link
+取代bridge
),但插件确实很重要。如果没有与桥相关的选项,系统无法了解必须创建桥。因此,如果使用包ifupdown
(而不是ifupdown2
或ifupdown-ng
):那么最简单的选择就是告诉它没有桥接端口。添加这个选项:
现在将激活插件并创建一个桥,并且根据特殊关键字的要求,
none
不会将任何接口作为桥端口附加到它。评论:
同时使用一条默认路由
可能是一个错误:如果系统上已经有其他默认路由(也具有度量值 0),这将使结果失败。当将自己指定为网关时尤其如此。首先将其删除(就像我在下面所做的那样),然后考虑稍后再次添加它。
没有网桥端口的网桥处于操作状态 DOWN
...在运行最新 systemd 的任何最新系统上,例如 Debian 11 或 12。
如本Q/A中所述,原因如我在本 Q/A 中的回答所述。这可能会导致 IPv6 出现一些问题,但通常不会导致 IPv4 出现问题。
配置变为:
假设您使用 Debian Bookworm,
/etc/network/interfaces
默认情况下它不再遵守,因为它使用systemd-networkd
.要创建桥,请将文件添加
vm-bridge.netdev
到/etc/systemd/network/
:现在我们需要为这个网桥配置网络。创建文件
/etc/systemd/network/vm-bridge.network
:然后重启网络:
请参阅文档以获取更多信息。对于具体配置, Arch wiki上有详细的指南。