Ken*_*eth 4 linux bridge packet dropped
我已经研究这个问题几天了,还没有找到答案。您的帮助将不胜感激!
我在物理服务器上运行了一些 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: WARNING: vnet1: no IPv4 address assigned
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on vnet1, link-type EN10MB (Ethernet), capture size 65535 bytes
07:45:03.858356 02:16:3e:6a:42:57 > 02:16:3e:02:40:82, ethertype IPv4 (0x0800), length 98:
10.8.0.6 > 172.16.0.5: ICMP echo request, id 63242, seq 1046, length 64
07:45:04.858239 02:16:3e:6a:42:57 > 02:16:3e:02:40:82, ethertype IPv4 (0x0800), length 98:
10.8.0.6 > 172.16.0.5: ICMP echo request, id 63242, seq 1047, length 64
^C
2 packets captured
2 packets received by filter
0 packets dropped by kernel
Run Code Online (Sandbox Code Playgroud)
但不会转发到 vnet0 (172.16.0.5):
# tcpdump -leni vnet0 icmp
tcpdump: WARNING: vnet0: no IPv4 address assigned
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on vnet0, link-type EN10MB (Ethernet), capture size 65535 bytes
^C
0 packets captured
0 packets received by filter
0 packets dropped by kernel
Run Code Online (Sandbox Code Playgroud)
我也遵循了这篇文章中的建议并将 0 设置为 /proc/sys/net/bridge/bridge-nf-*,但这似乎没有帮助。
除了刷新iptables过滤器之外,我还在iptables中开启了TRACE,这表明这些数据包从未命中iptables。
Linux网桥不会在端口之间转发数据包的任何其他原因?
| 归档时间: |
|
| 查看次数: |
17698 次 |
| 最近记录: |