我正尝试在桌面上使用libvirt虚拟机来设置Openstack教程演示,但是我在主机桌面上遇到了一些虚拟桥接问题。
在debugging时,我注意到网桥(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地址,使其高于或低于每个托pipe的虚拟网卡,但这没有任何区别。 另外,即使ping成功,每个数据包也是重复的 – 为什么会这样呢?
我最终通过将桥接口networking掩码更改为255.255.0.0而不是255.255.255.0来解决此问题
关于tcpdump的额外的一点 – 我看到相同的数据包不止一次,因为-i any交换机显示相同的数据包击中不同的接口。