Linux 中通过多个虚拟网桥传输 IP

Linux 中通过多个虚拟网桥传输 IP

我在 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

显然,主要问题在于错误的路由(我过去是通过“下一跳”语句来编写的,而不是通过接口(如上面的配置所示))我已将路由更改为我在原始帖子中显示的形式,一切似乎都正常

相关内容