我正在尝试设置Openstack教程演示在我的桌面上使用 libvirt VM,但是在主机桌面上的虚拟桥接器上遇到了一些问题。
在调试此问题时,我注意到网桥 (IP 10.0.0.1) 对于失败的 ping 不再透明,并且 ping 响应数据包返回到网桥而不是源 VM。以下是主机上的 tcpdump,其中从 VM1 到 VM2 的 ping
sudo tcpdump -nnvXSs 0 -i any icmp
tcpdump: listening on any, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes
21:06:41.928040 IP (tos 0x0, ttl 64, id 24879, offset 0, flags [DF], proto ICMP (1), length 84)
10.0.0.31 > 10.0.1.21: ICMP echo request, id 1194, seq 1, length 64
0x0000: 4500 0054 612f 4000 4001 c446 0a00 001f E..Ta/@[email protected]....
0x0010: 0a00 0115 0800 276d 04aa 0001 d1d0 e753 ......'m.......S
0x0020: 0000 0000 49f0 0a00 0000 0000 1011 1213 ....I...........
0x0030: 1415 1617 1819 1a1b 1c1d 1e1f 2021 2223 .............!"#
0x0040: 2425 2627 2829 2a2b 2c2d 2e2f 3031 3233 $%&'()*+,-./0123
0x0050: 3435 3637 4567
21:06:41.928075 IP (tos 0x0, ttl 64, id 24879, offset 0, flags [DF], proto ICMP (1), length 84)
10.0.0.1 > 10.0.1.21: ICMP echo request, id 1194, seq 1, length 64
0x0000: 4500 0054 612f 4000 4001 c464 0a00 0001 E..Ta/@[email protected]....
0x0010: 0a00 0115 0800 276d 04aa 0001 d1d0 e753 ......'m.......S
0x0020: 0000 0000 49f0 0a00 0000 0000 1011 1213 ....I...........
0x0030: 1415 1617 1819 1a1b 1c1d 1e1f 2021 2223 .............!"#
0x0040: 2425 2627 2829 2a2b 2c2d 2e2f 3031 3233 $%&'()*+,-./0123
0x0050: 3435 3637 4567
21:06:41.928205 IP (tos 0x0, ttl 64, id 11556, offset 0, flags [none], proto ICMP (1), length 84)
10.0.1.21 > 10.0.0.1: ICMP echo reply, id 1194, seq 1, length 64
0x0000: 4500 0054 2d24 0000 4001 3870 0a00 0115 [email protected]....
0x0010: 0a00 0001 0000 2f6d 04aa 0001 d1d0 e753 ....../m.......S
0x0020: 0000 0000 49f0 0a00 0000 0000 1011 1213 ....I...........
0x0030: 1415 1617 1819 1a1b 1c1d 1e1f 2021 2223 .............!"#
0x0040: 2425 2627 2829 2a2b 2c2d 2e2f 3031 3233 $%&'()*+,-./0123
0x0050: 3435 3637 4567
对于成功的 ping,桥接 IP 不会出现在 tcpdump 输出中:
sudo tcpdump -nnvXSs 0 -i any icmp
tcpdump: listening on any, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes
21:08:08.036689 IP (tos 0x0, ttl 64, id 64179, offset 0, flags [DF], proto ICMP (1), length 84)
10.0.0.31 > 10.0.0.21: ICMP echo request, id 1195, seq 1, length 64
0x0000: 4500 0054 fab3 4000 4001 2bc2 0a00 001f E..T..@.@.+.....
0x0010: 0a00 0015 0800 0cc3 04ab 0001 27d1 e753 ............'..S
0x0020: 0000 0000 0c99 0c00 0000 0000 1011 1213 ................
0x0030: 1415 1617 1819 1a1b 1c1d 1e1f 2021 2223 .............!"#
0x0040: 2425 2627 2829 2a2b 2c2d 2e2f 3031 3233 $%&'()*+,-./0123
0x0050: 3435 3637 4567
21:08:08.036714 IP (tos 0x0, ttl 64, id 64179, offset 0, flags [DF], proto ICMP (1), length 84)
10.0.0.31 > 10.0.0.21: ICMP echo request, id 1195, seq 1, length 64
0x0000: 4500 0054 fab3 4000 4001 2bc2 0a00 001f E..T..@.@.+.....
0x0010: 0a00 0015 0800 0cc3 04ab 0001 27d1 e753 ............'..S
0x0020: 0000 0000 0c99 0c00 0000 0000 1011 1213 ................
0x0030: 1415 1617 1819 1a1b 1c1d 1e1f 2021 2223 .............!"#
0x0040: 2425 2627 2829 2a2b 2c2d 2e2f 3031 3233 $%&'()*+,-./0123
0x0050: 3435 3637 4567
21:08:08.036855 IP (tos 0x0, ttl 64, id 13850, offset 0, flags [none], proto ICMP (1), length 84)
10.0.0.21 > 10.0.0.31: ICMP echo reply, id 1195, seq 1, length 64
0x0000: 4500 0054 361a 0000 4001 305c 0a00 0015 [email protected]\....
0x0010: 0a00 001f 0000 14c3 04ab 0001 27d1 e753 ............'..S
0x0020: 0000 0000 0c99 0c00 0000 0000 1011 1213 ................
0x0030: 1415 1617 1819 1a1b 1c1d 1e1f 2021 2223 .............!"#
0x0040: 2425 2627 2829 2a2b 2c2d 2e2f 3031 3233 $%&'()*+,-./0123
0x0050: 3435 3637 4567
21:08:08.036873 IP (tos 0x0, ttl 64, id 13850, offset 0, flags [none], proto ICMP (1), length 84)
10.0.0.21 > 10.0.0.31: ICMP echo reply, id 1195, seq 1, length 64
0x0000: 4500 0054 361a 0000 4001 305c 0a00 0015 [email protected]\....
0x0010: 0a00 001f 0000 14c3 04ab 0001 27d1 e753 ............'..S
0x0020: 0000 0000 0c99 0c00 0000 0000 1011 1213 ................
0x0030: 1415 1617 1819 1a1b 1c1d 1e1f 2021 2223 .............!"#
0x0040: 2425 2627 2829 2a2b 2c2d 2e2f 3031 3233 $%&'()*+,-./0123
0x0050: 3435 3637 4567
为什么网桥的 IP 会这样显示在 tcpdump 中?我尝试将网桥的 mac 地址更改为高于或低于每个托管虚拟网卡的 mac 地址,但这没有任何区别。此外,即使 ping 成功,每个数据包也会被复制 - 为什么会这样?
答案1
我最终通过将桥接接口网络掩码更改为 255.255.0.0 而不是 255.255.255.0 解决了这个问题
关于 tcpdump 的补充一点 - 我多次看到相同的数据包,因为交换机-i any
显示相同的数据包到达不同的接口。