在 Centos 6.5 上我有一座桥网络连接到 eth4 和我的虚拟机(Centos6.5) 在 KVM 上运行也连接到该接口 (vnet0)
bridge name bridge id STP enabled interfaces
network 8000.588d090ee15e no eth4
vnet0
VM 的 IP 地址为 10.99.9.10,主机的 IP 地址为 10.99.9.2eth2
VM 可以与外部通信,并且可以从其他主机访问,但是不是来自主机其运行的地方。
ping 了不同的主机(10.99.9.3)来自虚拟机,并且工作正常,tcpdump 显示
ping 10.99.9.3 -c 3
tcpdump -n icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
02:06:52.701448 IP 10.99.9.10 > 10.99.9.3: ICMP echo request, id 44807, seq 1, length 64
02:06:52.701896 IP 10.99.9.3 > 10.99.9.10: ICMP echo reply, id 44807, seq 1, length 64
02:06:53.701434 IP 10.99.9.10 > 10.99.9.3: ICMP echo request, id 44807, seq 2, length 64
02:06:53.701904 IP 10.99.9.3 > 10.99.9.10: ICMP echo reply, id 44807, seq 2, length 64
02:06:54.701117 IP 10.99.9.10 > 10.99.9.3: ICMP echo request, id 44807, seq 3, length 64
02:06:54.701489 IP 10.99.9.3 > 10.99.9.10: ICMP echo reply, id 44807, seq 3, length 64
但如果我ping 同一主机10.99.9.2
ping 10.99.9.2 -c 3
PING 10.99.9.2 (10.99.9.2) 56(84)字节数据。
来自 10.99.9.10 icmp_seq=1 目标主机无法访问
来自 10.99.9.10 icmp_seq=2 目标主机无法访问
来自 10.99.9.10 icmp_seq=3 目标主机无法访问
--- 10.99.9.2 ping 统计 --- 已发送 3 个数据包,已接收 0 个,+3 个错误,100% 数据包丢失,时间 3001ms 管道 3
对我来说很奇怪 tcpdump -n icmp什么都没显示!!
造成这种行为的原因可能是什么,即使有什么东西阻塞了,为什么 tcpdump 甚至没有在 tcpdump 中显示 ICMP 请求。
我的虚拟机内只有一个接口,并且 tcpdump 仅在可用接口 eth0 上执行
答案1
这是因为你的 ARP 可能没有得到主机的 MAC 地址,因为你在 tcpdump 中只过滤了 ICMP,所以它不会显示 ARP 查找,删除 ICMP 并尝试
tcpdump -n arp
如果你只看到ARP,请求谁有并且没有回复,那么您的网络还有其他问题,请修复它,现在要在 tcpdump 中查看 ICMP,请尝试编辑 arp 缓存,使用
arp -s IP MAC
并验证
arp -a
这不会解决你的网络问题,但它可能会在 tcpdump 中显示 ICMP