小编很久没更新blog了。
今天的这篇文章来写一个小网络问题bug(即一端Ping不通另一端ip)的发现和处理过程。
国庆提前休假,假后来到公司发现有个搭建的虚拟环境有两个linux虚拟机到关联的windows虚拟机出了问题。
< 一
具体表现是windows虚拟机中可以ping通两个linux虚拟机,另两个linux虚拟机能ping通关联的windows虚拟机,但windows虚拟机到两个linux虚拟机ping不通。
怪异现象是,windows虚拟机到两个linux虚拟机的网关是通的。
图1 linux虚拟机1能ping通关联的windows虚拟机
图2 linux虚拟机2能ping通关联的windows虚拟机
图3 windows虚拟机到两个linux虚拟机ping不通
经测试,发现当两个linux虚拟机分别ping下windows虚拟机的实际ip时,windows虚拟机有近一分钟的时间可以ping通两个linux虚拟机,然后又不通了。
和同事沟通了下,我不在公司的时期他们也没有修改过配置。
< 二
遇到这种网络问题,一般我首先会查下两个设备的路由。
经检查,路由也是正常的(默认路由、双方的路由)。
接下来我想是不是交换机配置出了问题。查了下思科3650关于该vlan的配置没问题,为了更保险一点我重新配了下再保存。
重启了下两个虚拟机,问题依然在。
既然这样,我想了下难道是两个linux虚拟机的断电时丢了网络相关的配置文件(国庆期间设备断过电)。
于是重新将网络配置文件重新替换了下,问题依旧。
看起来问题不是想象的那么简单啊。
没关系,我可以试下将其他两个虚拟机的镜像换到不正常的两个虚拟机里作为启动镜像再修改配置。
这样试了下,发现行不通,因为我发现在没法修改虚拟网络的情况下没法进虚拟机里面换配置。
开始有点紧张,毕竟几个小时过去了。
我开始想,虽然很不愿意重装系统和软件,但是解决不了这个问题最终也只有重装了。
但心里还是抱有一丝希望,希望只是那个配置不对改下就好,于是核对了所有的路由配置,并且和正常的两系做了对比,没有异常。
之前做时钟同步的时候发现有的设备需要单独加下路由,于是尝试在两边虚拟机上加直通路由,在windows虚拟机上加完ping了下仍然不通,Linux上报了几次错放弃了。于是实在没办法重新装了下一遍,配置重新配了一遍,心想这会要没折了那就GG了。
实际上配完后,起两个虚拟机,仍然是两个linux虚拟机分别ping下windows虚拟机的实际ip时,windows虚拟机有近一分钟的时间可以ping通两个linux虚拟机,然后又不通了。
心里虽然觉得烦,但是也觉得这个问题最终还是能得到解决。
< 三
经过上面的这些尝试,对这个问题有一些脉络了。
最开始在windows虚拟机的ping两个linux虚拟机不通,初步判断两个linux虚拟机有问题,但是重装之后问题还在。那基本上可以排除两个linux虚拟机有问题,且不太可能出现两个虚拟机全部故障的情况。
网络路径上,通过路由查询也没发现问题。
那么会不是windows虚拟机自身的网络问题呢?
其实之前查过该虚拟机的防火墙,接口的网络发现配置之类的,也没有设置问题。
后来看到虚拟机打开的网络有5个vlan网络,想着试下关掉几个网络试试看。
这一试发现,两个linux虚拟机分别ping和windows虚拟机的实际ip竟然通了。
图4 禁掉两个widows虚拟机的网络
试到这里,有一种拨开云雾见青天的感觉。
原来是虚拟机的网络过载啊。
之前也遇到多个网络的虚拟机出现网络过载,部分网络无法连通的情况。没想到只有5个网络的虚拟机同样会有这种问题存在。好在试出来了。
后来通过打开任务管理器,发现,打开vlan302、vlan303两个网络,Networking上的几个网络会出现跳动的情况,禁掉他们立刻正常了。
图5 禁掉网络以及Task Manager上的显示