一次Linux服务器双网卡网络问题的排查过程回溯
图片来自视觉中国
昨晚9点在回家的地铁上接到一个故障
电话+QQ上沟通了解到的信息推断出来的拓扑如下,Linux服务器(下面我统一用“平台”两字来代替)
调试PC 172.16.2.249 连接的校园无线WiFi,是可以ping通平台的网卡eth0地址192.168.8.200 但区域同事电话/QQ报了一个故障,出现一个很奇怪的现象:
1、 平台重启后调试PC就ping不通平台192.168.8.200地址了,ping192.168.8.X段的其他IP(除了平台192.168.8.200)也是可以ping通的
2、 将192.168.8.200这个IP配到调试PC上,将接平台eth0的网线接到调试PC上,接入校园无线的其他PC也可以ping通192.168.8.200调试PC
由于当时我这边无法远程,QQ上要区域同事使用ifdown eth0,然后ifup eth0,这样重启网卡,发现调试PC又可以ping通平台192.168.8.200了
但是区域重启平台后发现问题复现了 这中间有要区域同事排查是否存在与192.168.8.200 IP地址冲突的情况,以及ARP表等操作,问题未解决
在地铁上区域同事说平台有映射到公网,我用手机fing工具扫描端口都通的
到家后通过SecureCRT连接平台公网IP,登录后台,同时Teamviewer远程到现场内网环境
远程过去由于当时发现调试PC只连了校园无线,未插内网网线到有线网卡
调试PC是可以上外网 ping ,以为平台也是通过192.168.8.200这张网卡上的外网,排查的思路就觉是内网这块核心交换机出了问题
Telnet到核心交换机上查看配置 show run ,show ip int brief , show ip route,一顿操作猛如虎
交换上ping192.168.8.200正常
各种调试都未找到问题原因,开始慢慢查
1、在交换机上查看192.168.8.200的arp表项找到192.168.8.200这个地址的MAC地址
2、通过mac地址去找这个地址的MAC地址是从哪个接口获取的
3、 发现是从S8506E核心的G1/5接口学习到的mac表项后,LLDP协议去发现有没有邻居交换机
可以发现核心S8506E连的是一台S5750C汇聚交换机的G0/6接口
这台交换机的管理地址是172.31.10.200
SecureCRT Telnet 172.31.10.200到这台汇聚交换机上,查mac地址表,可以查到平台192.168.8.200接的这台交换机的G0/5接口
G0/5接口划到VLAN 50里了,然后shutdown接口,立马ping不通192.168.8.200了,就能确定平台是接的这个G0/5接口
同样的方式去找调试PC所接的交换机,发现调试PC上面是一台无线控制器WS6008
后来区域同事说平台的eth1网口Eth1 10.11.211.4才是默认网卡,是通过这个网卡映射到公网的,这时大概知道排查方向错了
根据上面的诊断与排查,以及交换机上的配置,绘制出平台大致的拓扑架构如下
这时查看平台的网卡配置
看到这两个红框后,立马知道原因了,重启平台服务器后,默认网卡一直在调换,所以平台的默认路由0.0.0.0是走eth0 (192.168.8.200)这张网卡时,调试PC 172.16.2.249就可以ping通192.168.8.200
而当平台的默认路由0.0.0.0是走eth1 (10.11.211.4)这张网卡时,调试PC172.16.2.249就ping不通192.168.8.200,因为平台默认路由走的eth1网卡,没有指定去往172.16.X.X段走eth0这张网卡
解决办法和步骤
1、 vi /etc/sysconfig/network-scripts/ifcfg-eth0
删除eth0网卡配置中的DEFROUTE=yes字段,保证eth1是默认网卡
2、 添加一条静态路由去往172.16.X.X段走eth0这张网卡
route add -net 172.16.0.0netmask 255.255.248.0 gw 192.168.8.1
并加到启动脚本中,保证开机能自启动
3、 reboot重启验证问题是否解决
4、 查看路由表就知道问题OK了 ping一下7段的地址172.16.7.254验证
其实问题很简单,Linux服务加一条静态路由就解决了,可能自己一开始通过同事给出的信息形成了思维定式,绘制出拓扑后,立马就清晰,问题接着就迎刃而解了