我在一台 ubuntu 机器上安装了单节点 openstack。由于某些我无法弄清楚的原因,linuxbridge 正在从此 VM 丢弃数据包。我的 iptables 似乎没问题(至少据我所知),并且没有配置 ebtables 链规则。
我刷新了我的 iptables 并尝试了相同的测试,但数据包仍然被丢弃。
在尝试调试 linuxbridge 时,我发现以下令我困惑的事情:
port no mac addr is local? ageing timer
2 52:54:00:88:a3:cd no 51.68
2 52:54:00:95:96:8d no 51.92
2 52:54:00:b0:01:97 no 51.85
2 52:54:00:dc:48:fe no 43.01
2 52:54:00:e5:fd:45 no 0.95
2 52:54:00:e9:47:79 no 51.74
2 52:54:00:f5:a4:d7 no 52.11
2 54:26:96:33:20:5d no 9.22
2 60:c5:47:0a:2d:64 no 0.00
2 64:70:02:c8:dc:fc no 2.16
2 6c:88:14:86:7e:38 no 47.86
1 6e:0e:09:98:eb:c8 yes 0.00
2 70:56:81:b1:d7:01 no 51.61
2 7a:1c:08:d5:79:29 no 51.44
2 84:38:35:5b:47:42 no 177.32
2 88:1f:a1:13:72:4a no 50.90
2 90:27:e4:f1:e0:49 no 2.87
2 94:de:80:20:3d:44 no 6.41
2 94:de:80:20:3d:72 no 51.78
2 94:de:80:bc:75:e7 no 52.06
2 96:80:a0:ee:9c:c4 no 51.70
2 96:d3:69:64:0d:36 no 51.35
2 98:fe:94:46:b1:2c no 229.38
2 9c:4e:36:99:5d:e0 no 0.64
2 aa:cd:61:6e:d3:fc no 51.82
2 ae:e6:a5:b0:c9:c9 no 51.58
2 b2:1a:3a:25:b9:49 no 51.68
2 b8:e8:56:45:7a:8a no 51.76
2 c6:db:db:8e:79:73 no 52.20
2 ca:fe:ba:be:e3:01 no 10.11
2 cc:3a:61:1e:e8:41 no 33.62
2 de:ad:00:01:00:00 no 49.29
2 de:ad:00:01:00:05 no 51.29
2 de:ad:00:01:00:06 no 49.08
2 e6:f6:a1:89:ff:96 no 51.46
2 f4:f9:51:dd:3c:e1 no 22.08
2 f6:6e:18:81:e7:c5 no 52.17
2 f6:76:41:dc:97:88 no 52.09
3 **fa:16:3e:1a:20:37** no 51.29
1 fa:16:3e:39:83:aa no 2.16
3 **fe:16:3e:1a:20:37** yes 0.00
最后一个条目和倒数第二个 mac 相同,一个是本地的,另一个不是本地的。
此 Mac 对应于我的其中一台虚拟机的 eth0 mac 地址:
我通过登录控制台并执行“ip a”来验证这一点
这个mac地址也恰好是主机上创建的tap接口的MAC:
ifconfig tap3869edb5-6e
tap3869edb5-6e Link encap:Ethernet HWaddr fe:16:3e:1a:20:37
inet6 addr: fe80::fc16:3eff:fe1a:2037/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:95102 errors:0 dropped:0 overruns:0 frame:0
TX packets:3216620 errors:0 dropped:198 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:6852603 (6.8 MB) TX bytes:352453624 (352.4 MB)
这是应该的样子吗?
关于如何调试 linuxbridge 上丢失的数据包,有什么想法吗?
我正在从虚拟机内部 ping 桥接接口的 IP。我已将虚拟机的 tap 接口直接添加到同一个桥接器(使用 brctl add/delif)。
我看到了 tap 接口上的数据包(使用 tcpdump),但它们从未到达桥接接口。
我已将 /proc/sys/net/bridge/bridge-nf* 全部设为零,但没有任何效果。
谢谢!
答案1
不是。mac 可以通过 Libvirt domxml 或 qemu 命令行进行设置。