我已经研究这个问题几天了,还没有找到答案。您的帮助将不胜感激!
我在物理服务器上运行了一些 VM(虚拟机)。服务器使用 Linux 网桥 (br100) 将这些 VM 连接在一起:
# brctl show
bridge name bridge id STP enabled interfaces
br100 8000.984be15fe7e3 no eth1.1729
vnet0
vnet1
Run Code Online (Sandbox Code Playgroud)
vnet0 和 vnet1 是 VM 的虚拟 NIC。
br100(物理服务器)分配给 IP 172.16.0.11。连接到 vnet1 的 VM 分配到 172.16.0.3,连接到 vnet0 的 VM 是 172.16.0.5。
到现在为止还挺好。172.16.0.3 可以 ping 172.16.0.5 没有问题。
现在我正在尝试将 172.16.0.3 设置为连接到子网 10.8.0.0/16 的路由器(如果这很重要,则为 openvpn 服务器)。
我的问题来了:10.8.0.0/16(在本例中为 10.8.0.6)中的机器可以 ping 172.16.0.3,但无法 ping 172.16.0.5。
(我认为)我已经排除了所有明显的原因:ip_forward 开启、iptables 刷新等。现在我将原因缩小到:br100 没有按照它应该的方式转发数据包!
当我从 10.8.0.6 ping 172.16.0.5 时,数据包被传送到物理服务器上的 vnet1(VM 172.16.0.3):
# tcpdump -leni vnet1 icmp
tcpdump: …Run Code Online (Sandbox Code Playgroud)