出现这种情况一般是由于虚拟机内部配置了防火墙,或者虚拟机的vnet口配置的安全组将报文屏蔽导致的。另外还有可能就是虚拟机网卡配置了绑定ip和绑定mac,绑定mac和虚拟机网卡的mac地址不一致。
此处以虚拟机vm1去ping同子网同主机内的虚拟机vm2不通为例。
虚拟机vm1去ping虚拟机vm2的ip,在虚拟机vm1连接ovs的vnet口上使用tcpdump命令抓包,查看是否能抓到虚拟机vm1发出的ARP报文,抓包命令如下:# tcpdump –lni <vnet_name> -Q in。
如果抓不到vm1发出的ARP报文,说明报文没有进入ovs,就需要排查是否是虚拟机vm1开启了防火墙或者其它原因,导致报文发不出来。
如果能抓到vm1发出的ARP报文,进入第二步。
抓包查看虚拟机vm2连接ovs的vnet口是否收到vm1发过来的ARP报文,抓包命令如下:# tcpdump –lni <vnet_name> -Q out。
如果抓不到vm1发过来的ARP报文,前台分别查看vm1连接ovs的vnet口和vm2连接ovs的vnet口的安全组配置,绑定ip和绑定mac配置,看是因为配置什么安全策略导致报文被ovs drop。
如果能抓到vm1发出的ARP报文,进入第三步。
在虚拟机vm2内部使用抓包命令或者wireshark抓包(windows虚拟机),看是否能抓到vm1发出的arp报文。
如果不能抓到vm1发出来的ARP报文,那么很可能就是虚拟机开启防火墙或者安装了其它安全软件将报文禁掉。