【银河麒麟】virt-manager虚拟机之间网络不通问题
【概述】
在两个银河麒麟V10服务器系统上分别通过virt-manager创建一个V4虚拟机,其网络为桥接模式。问题情况为:虚拟机能ping通宿主机、网关和另一台服务器,但虚拟机之间无法相互ping通;且宿主机在ping其中一台虚拟机的同时,无法ping通另一台。本文通过tcpdump抓包的方式分别对这两种问题现象进行分析,最终定位为两个虚拟机的mac地址冲突导致。
【分析过程】
现象一:虚拟机互 Ping不通
1. 操作步骤
第一步:在虚拟机A(192.168.1.200)上ping 192.168.1.201
ping 192.168.1.201第二步:在虚拟机B(192.168.1.201)上抓包
tcpdump -i enp3s0 icmp or arp -e -nn > /tmp/vm_b_capture.txt2. 抓包日志分析:
- 时间点:
10:52:18.240056附近 - 过程:
- 请求:虚拟机
.200(...39)询问:“谁有 .201?” - 自问自答:由于
.200错误地认为自己就是.201,它立刻回复:“.201 在我这(MAC: ...39)”。 - 死循环:当流量真正发给
.201时,.200收到了包,发现自己既是发送方又是接收方,导致逻辑混乱,无法正确回包。
- 请求:虚拟机
- 现象:直接导致
Destination Host Unreachable报错。 - 结论:虚拟机mac地址冲突
现象二:宿主机在ping其中一台虚拟机的同时,无法ping通另一台
1. 操作步骤
第一步:宿主机(192.168.1.100)同时打开三个终端
第二步:第一个终端负责抓包,抓取 ARP 协议(看谁在应答)和 ICMP 协议(看 Ping 包去了哪里)
tcpdump -i br0 arp or icmp -e -nn > /tmp/host_ping_conflict-1.pcap # -i: 指定网桥接口 ( br0) # -e: 显示链路层头信息(关键!能看到源MAC和目的MAC) # -n: 不解析域名第三步:第二和第三个终端同时分别ping虚拟机A(192.168.1.200)和虚拟机B(192.168.1.201)
