问题现象:
创建两个虚拟机1,2

虚拟机名称

IP

MAC

Tap

1

192.168.0.13

Fa:16:3e:88:d4:44

tapcab815a8-ca

2

192.168.0.5

Fa:16:3e:2a:9f:86

tap81b52628-66

修改1的IP为192.168.0.100,在2上ping 192.168.0.100,结果如下:不通!

openstack中手动修改虚拟机IP后不能通信

定位过程:

在1上抓包,如下:主机1可以收到arp请求,并且响应了arp reply

openstack中手动修改虚拟机IP后不能通信

云主机1所在的宿主机上抓取,通过tapcab815a8-ca 的arp和icmp报文:内容与主机1网卡上抓到的报文一致。如下:

openstack中手动修改虚拟机IP后不能通信

宿主机上抓取经过虚拟机2网卡对应的tap设备,如下图。由此可见,tap1(虚拟机1对应的tap设备)没有将arp响应转发到tap2

openstack中手动修改虚拟机IP后不能通信


在2上增加静态arp,同时在1上抓包

openstack中手动修改虚拟机IP后不能通信

icmp request到达了1上,但是1没有2的arp,所以不能回复icmpreplay


在1上增加2的静态arp,再次ping

openstack中手动修改虚拟机IP后不能通信

虚拟机1上回复了icmp reply.


实验结论:

修改1的IP地址后,2 ping 1,在1上可以抓到arp request,也回应arp reply。

但是2上不能收到arp reply,因此1对应的tap丢弃了arp。

openstack中手动修改虚拟机IP后不能通信