查看: 69677|回复: 31

供电局调度所前置机故障解决说明

[复制链接]
发表于 2007-12-25 11:42:57 | 显示全部楼层 |阅读模式
一 网络环境
1,电力调度系统内有一台电量采集前置机,该前置机操作系统为IBM的AIX,前置机共有5块网卡,已经使用的有四块,名称分别为en1、en2、en3、en4,其IP地址与连接情况如下所示:
网卡名        IP地址        网关        连接说明
En1        198.121.100.103/16        198.122.100.100        连接198.121.0.0/16网段
En2        198.123.100.103/16        198.122.100.100        连接198.123.0.0/16网段
En3        198.120.100.103/16        198.122.100.100        连接198.120.0.0/16网段
En4        198.122.100.103/16        198.122.100.100(防火墙地址)        连接198.122.0.0/16网段和防火墙内部接口
2,防火墙启用了内到外的NAT功能,访问控制策略全部允许。
3,网络连接拓扑图:

二 故障现象
怪异之处:
1,开启一个ping 10.34.216.69的窗口是通的,关掉该窗口后,再开一个ping 10.34.216.69的窗口,此时不通;
2,开启一个ping 10.34.216.69的窗口是通的,再开一个ping 10.34.216.69的窗口,显示不通;



三 分析与测试过程
1,        首先串口登陆防火墙,在防火墙上ping前置机与防火墙直连的地址,一直正常,未出现丢包情况;
++++++++++++++++++++++++++++++++++确认防火墙跟前置机间的物理连接没有问题;
++++++++++++++++++++++++++++++++++

2,        启用防火墙的实时监控功能,发现:当前置机上可以ping通防火墙10.34.216.69地址时,监控列表里可以看见正常的进出数据包,当前置机上无法ping通防火墙10.34.216.69地址时,监控列表里没有任何前置机的进出数据包;
++++++++++++++++++++++++++++++++++
初步断定:前置机在ping不通10.34.216.69地址时,其ping请求包并未发送到防火墙,也就是说此故障现象与防火墙无关,基本上可以定位问题出在前置机本身;
++++++++++++++++++++++++++++++++++

3,        让用户在AIX上使用smit窗口界面查看各个接口IP地址设置情况,显示如网络环境中的描述一样(由于是用户的核心业务系统,加上我对UNIX系统不熟悉,在AIX前置机上的很多操作主要通过用户来完成),未发现明显异常;忽然想起在LINUX/UNIX下,一般都具有tcpdump抓包功能,IBM的AIX也应该具有,那么,我们只要使用tcpdump抓取en4接口的数据包,即可判断ping不通时,数据包有没有从前置机的en4口发出;于是,使用root权限登陆,尝试tcpdump命令,果然可以使用,于是在前置机ping不通10.34.216.69时,使用tcpdump -i en4 host 10.34.216.69 命令抓包,发现前置机ping 10.34.216.69的数据包的确未从en4口发出;

++++++++++++++++++++++++++++++++++
此时,可以确认问题是前置机未发出数据包了;
++++++++++++++++++++++++++++++++++

4,        网口上未抓到数据包,这说明系统在将数据包向网卡转发之前就丢弃了该数据包;一般系统的数据包处理流程如下图所示(各位注意红色筐内的流程):

根据这个处理流程,我们可以发现,系统在向网卡转发数据包之前是需要做路由选择的,那么,是否是由于在做路由选择时出错被系统丢弃了呢?
++++++++++++++++++++++++++++++++++
此时,我们将重点放到前置机的路由上来;
++++++++++++++++++++++++++++++++++
5,        考虑到在图形界面下看到的路由信息是有限的(图形界面下无法看到接口路由、主机路由、直连路由等等),我们在AIX上执行netstat –rn命令(这个命令相当于windows下的route print命令),查看前置机详细的路由表信息,发现:该前置机存在两条缺省路由,一条到防火墙内口地址198.122.120.100,一条到198.122.0.100;
++++++++++++++++++++++++++++++++++
确认前置机路由表异常;
++++++++++++++++++++++++++++++++++

6,        跟用户确认198.122.0.100的路由是否有用,198.122.0.100的地址是什么设备使用的,用户居然不清楚,那么我们先前置机上ping 198.122.0.100,显示不通,tcpdump抓包显示198.122.0.100主机未响应前置机的ARP请求,这说明198.122.0.100这个IP是不存活的;
++++++++++++++++++++++++++++++++++
基本上确认198.122.0.100是一个当前故障网络环境中无效的地址,那么到198.122.0.100的缺省路由也应该是一个无明确作用的路由;
++++++++++++++++++++++++++++++++++

7,        此时,我们可以推测出:当前置机ping不通防火墙外口地址时,其ping包在前置机系统内部的处理过程为:
⑴前置机将10.34.216.69的地址匹配了198.122.0.100的缺省路由;
⑵前置机向198.122.0.100发送ARP请求报文;
⑶由于198.122.0.100不存在,前置机不会收到198.122.0.100的ARP响应包;
⑷多次请求,无响应,超时;
⑸丢弃到10.34.216.69的数据包;
++++++++++++++++++++++++++++++++++
如果推测正确,那么上述现象是否说明,在AIX系统中,当存在两台缺省路由时,AIX系统对数据包路由的选择会在两条缺省路由间轮流?
++++++++++++++++++++++++++++++++++

8,        在前置机上逐步开启多个ping 10.34.216.69的窗口,我们发现:ping通的窗口与ping不通的窗口数量基本上是一致;
++++++++++++++++++++++++++++++++++
这个测试充分证明了第7步提出的假设,确认在AIX系统中,当存在两台缺省路由时,AIX系统对数据包路由的选择会在两条缺省路由间轮流
++++++++++++++++++++++++++++++++++
四 故障解决
找到问题的根源,将前置机中那条指向198.122.0.100的缺省路由删除,测试,一切正常,故障解决。
五 总结
1,在故障解决过程中,好的工具可以大大提高故障解决的效率(这个故障解决中,我们用到了天融信防火墙的实时监控功能、AIX的TCPDUMP抓包功能);
2,熟悉故障环境中的所有设备,可以快速定位故障(该故障解决过程中,由于我对UNIX系统不熟悉,导致查找UNIX命令、验证UNIX处理机制花费的较多的时间);
六 引申技术问题探讨
1,当Windows系统中存在两条缺省路由时,系统对数据包的处理是否是按照次序轮流选择的?
经验证:
⑴windows系统中存在两条缺省路由时,系统默认按照先添加的缺省路由转发数据包;且无论先添加的缺省网关是否正常,系统均不会将从后添加的缺省路由转发数据包;
⑵系统默认情况下,不会在两条缺省路由间负载均衡。
2,如果前置机是windows操作系统,该故障现象是否会发生?
我的理解:不会发生。原因分析如下:
首先,如果问题1中的疑问是否定的,那么WINDOWS系统肯定不会发生这种故障了;
其次,如果问题1的疑问是肯定的,我觉得也不会发生这种故障,原因如下:
⑴任何系统(主机系统、路由、防火墙等)对网络数据包的处理和转发都是需要建立连接表(五元组组成)的,否则是无法区分不同的连接的,对于ICMP协议也是一样的;
⑵在一些UNIX/LINUX实现中就是利用ICMP协议的code+type和id来作为五元组中的端口号来设置连接表项的;
⑶而windowsOS和LinuxOS的ping程序在实现上是有区别的,在windows中,无论开多少的ping进程,其ID是不变的,为0x0300,所以在windows上发起无论多少个ping,在系统的连接表中也是一个连接;在linux中则不同,每一个ping进程用的id是不同,比如在linux起两个ping,那么应该会在系统上记录为两条连接;
⑷系统在两条缺省路由间负载均衡数据流,应该会按照某种算法的,而这种算法的最小处理单元应该就是系统中的每个连接表项;

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?CSNA会员注册

×
回复

使用道具 举报

发表于 2007-12-25 11:58:59 | 显示全部楼层
YC?
回复

使用道具 举报

 楼主| 发表于 2007-12-25 12:14:51 | 显示全部楼层
原帖由 菜鸟人飞 于 2007-12-25 11:58 发表
YC?

YC?是指原创吗?
是我自己写的哦
回复

使用道具 举报

发表于 2007-12-25 15:28:23 | 显示全部楼层
孤独兄厉害。
YC=原创。
加为精华
回复

使用道具 举报

发表于 2007-12-26 17:25:15 | 显示全部楼层
精华难出,要多鼓励哦,支持!
回复

使用道具 举报

发表于 2007-12-26 22:57:57 | 显示全部楼层
好帖。孤独兄厉害,对WINDOWS和LINUX都很了解哦!收藏了!

PS:好姑娘都让菜版先泡了。好帖也让菜版先看了
回复

使用道具 举报

发表于 2007-12-27 10:42:31 | 显示全部楼层
好帖!
以前碰到过这样的情况,hp的服务器,两块网卡,接eth0时ping网关,但却从eth1出去,结果也是用netstat -rn 和route del解决的问题。
回复

使用道具 举报

发表于 2007-12-27 10:47:31 | 显示全部楼层
厉害啊。。。楼主。。。
回复

使用道具 举报

发表于 2007-12-28 10:33:05 | 显示全部楼层
原帖由 只是一个神话 于 2007-12-26 22:57 发表
好帖。孤独兄厉害,对WINDOWS和LINUX都很了解哦!收藏了!

PS:好姑娘都让菜版先泡了。好帖也让菜版先看了

哈哈,来四川吧,美女如云!
回复

使用道具 举报

发表于 2008-1-9 08:50:44 | 显示全部楼层

思路严谨

楼主太厉害了,不但精于Linux,报告也写的这么好,是我所不即也.
回复

使用道具 举报

发表于 2008-2-16 16:54:49 | 显示全部楼层
非常好啊。。要仔细看看。。。。
回复

使用道具 举报

发表于 2008-3-4 09:25:34 | 显示全部楼层
楼主厉害,佩服佩服
回复

使用道具 举报

发表于 2008-4-10 14:17:43 | 显示全部楼层
很好很强大
回复

使用道具 举报

发表于 2008-4-16 23:37:17 | 显示全部楼层
好厉害,分析的如此透彻
回复

使用道具 举报

发表于 2008-7-29 14:35:22 | 显示全部楼层
下载下来研究下了,谢谢分享``
回复

使用道具 举报

发表于 2008-9-3 16:55:18 | 显示全部楼层
分析思路比这实际分析内容更宝贵!
回复

使用道具 举报

发表于 2008-9-4 11:42:23 | 显示全部楼层
的确是,有时候去了解故障现象以后,有解决问题的思路,比想当然的胡乱尝试要有效地多。
回复

使用道具 举报

发表于 2008-9-14 11:47:07 | 显示全部楼层
牛人,厉害,学习哦
回复

使用道具 举报

发表于 2008-9-17 10:12:48 | 显示全部楼层
首先表示感谢,写的很不错,但有一点疑问,我发现windows下每一个ping程序也会有一个进程ID(PID),我使用的系统是windows XP SP3.相同的五元组构成一条连接,即源MAC地址、目的MAC地址、源IP地址、目的IP地址和协议号组成。按照楼主说的在一些UNIX/LINUX实现中就是利用ICMP协议的code+type和id来作为五元组中的端口号来设置连接表项的话,就可以实现负载分担,那么windows系统虽已可产生对个PID,但设置对个网关,还是只会走正确的网关,这说明目前windows系统还不能实现多网关下的负载分担,如果要实现网关备份还是需要由交换机来运行VRRP或是HSRP协议来实现。目前网络设备实现负载分担有两种方式,逐流和逐包。
回复

使用道具 举报

发表于 2009-1-5 16:22:46 | 显示全部楼层
楼主各方面功力都很强!!收藏先!
回复

使用道具 举报

发表于 2009-2-26 16:04:41 | 显示全部楼层

大牛

樓主的一凡闊論與國外大牛有的一比唷....
回复

使用道具 举报

发表于 2009-3-27 12:45:37 | 显示全部楼层
佩服佩服下来研究下了,谢谢分享
回复

使用道具 举报

发表于 2009-7-7 21:27:40 | 显示全部楼层
拜读,甚好,复习了一下linux下的网络管理和调试命令
ping
traceroute
netstat
route
没玩过aix,不知道和linux命令是否相同;楼主没探究一下这个198.122.0.100无效网关是如何进来的!
btw:tcpdump很强大,TCP-IP详解卷1统统是用这个来抓包的;
     喜欢用linuxt和unix,命令行用起来真舒服;网络功能强大,更易于学习细节!
回复

使用道具 举报

发表于 2009-7-24 15:59:14 | 显示全部楼层
谢谢分享
回复

使用道具 举报

发表于 2009-10-12 22:13:26 | 显示全部楼层
好贴,一定要顶!!!!!!!!!
回复

使用道具 举报

发表于 2009-10-15 00:03:37 | 显示全部楼层
楼主的分析真是让我茅塞顿开啊,佩服。。
回复

使用道具 举报

发表于 2010-1-19 22:07:03 | 显示全部楼层
YC..厉害。忽忽。。。。。
回复

使用道具 举报

发表于 2010-2-1 16:53:11 | 显示全部楼层
网络设备中最容易出现的就是路由表错误,尤其是以静态路由为主的网络,考虑路由表的关系的时候更复杂。
回复

使用道具 举报

发表于 2010-9-28 10:03:30 | 显示全部楼层
楼主太厉害了,不但精于Linux,报告也写的这么好,是我所不即也.
回复

使用道具 举报

发表于 2010-10-11 09:53:51 | 显示全部楼层
弱弱的问一句...
  这个调度路由器是什么?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | CSNA会员注册

本版积分规则

快速回复 返回顶部 返回列表