我在 DC 有 2 台裸机 Linux 服务器,每台都有外部和内部接口。内部接口直接相互链接。假设我在 ServerA 上有 eth1,在 serverB 上有 eth1。如果我直接在 ServerA:eth1 和 serverB:eth1 上分配 IP 地址 - 一切都会顺利运行。但我需要在两台服务器上建立虚拟桥,然后在其上桥接 eth1,因此请执行此配置:ServerA
auto vmbr0
iface vmbr0 inet static
address 172.16.1.1
netmask 24
bridge-ports enp96s0f1
bridge-stp off
bridge-fd 0
postup ip route add 172.16.0.0/16 vmbr0
服务器B
auto vmbr0
iface vmbr0 inet static
address 172.16.2.1
netmask 24
bridge-ports eno2
bridge-stp off
bridge-fd 0
postup ip route add 172.16.0.0/16 vmbr0
这也有效。然后我使用 proxmox ob Server A 创建虚拟机,并通过网络适配桥接 ServerA:vmbr0(eth1),并将其配置为自动 ens18
iface ens18 inet static
address 172.16.1.11/24
post-up ip route add 172.16.1.0/24 dev ens18
所以现在我无法从 VM ping 172.16.1.1,也无法从 serverA ping VM。即使在 ens18(VM)上的 tcpdump 中,我也看不到任何来自网桥的数据包。
ServerA 上的路由:
root@wss01:~# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 5.8.8** 0.0.0.0 UG 0 0 0 vmbr1
localnet 0.0.0.0 255.255.255.248 U 0 0 0 vmbr1
172.16.0.0 0.0.0.0 255.255.0.0 U 0 0 0 vmbr0
目标是从服务器A的VM到达服务器B以及它后面的VM
答案1
显然,主要问题在于错误的路由(我过去是通过“下一跳”语句来编写的,而不是通过接口(如上面的配置所示))我已将路由更改为我在原始帖子中显示的形式,一切似乎都正常