远程无法访问syn服务器,ping回显请求超时time out故障处理过程

        一天,同事反馈,北京同事反馈无法访问西安这边的syn服务器,ping的结果time out。让协助定位解决。  

       已知北京的和西安见通过vpn对接,西安是192.168.192.0/19网段,北京是172.16.0.0/16网段,

        syn服务器的地址192.168.193.75/24,网关是192.168.193.1,北京的ip是172.16.123.221。北京那边的网管跟踪结果,已经到达核心三层交换机,如下:

        而且北京的能ping通192.168.193.1,据此判断是syn服务器192.168.193.75的问题,同事说本地访问正常,让她联系syn负责人检查是否有回程路由?怀疑没有没有北京172.16.0.0/16的回程路由导致ping不回reply包。

 ping出现time out的可能性原因:

1、目的设备防火墙拦截的ping的request消息,导致高层无法收到,所以不回ping的reply消息。

 2、跨网段环境中存在ip冲突或一设备多网卡,接在同一交换机下,回答了访问其他网卡ip的arp请求,把错误的mac给了源主机,导致网关把ping的request消息发给其他mac地址。

3、也与目的主机的路由相关,没有回程路由,如设备ip和源ip是同网段,但掩码配置错误,而且没有配置网关ip的话。

4、回程路由指向其他ip地址,没有实现mac层的源mac地址进,源mac地址回去,导致源ip没有收到ping的reply消息。

5、ping消息的入接口和回程出接口不是设备的同一接口,设备开启方向路由检测导致,入和出不在同一个接口上,舍弃进入的包,不发reply回包。就是没有实现lp层的源进源出。
6、环境中传输有问题,误码过高或者带宽被占用,导致节点压包,丢包。

 一般情况下供大家内部访问linux服务器,防火墙一般不会打开,所以让他优先检查回程路由信息。

         过了几天,同事又找来,说syn服务器负责人说回程路由没问题,syn服务器能ping通北京的服务器172.16.123.221,服务器的负责人建议检查节点路由?

        怎么可能是节点问题?询问syn服务器的操作系统,得到是linux,要了用户名和密码,ssh登录上去看看:

        首先:ping一下看看

     

       的确能ping通,这就属于单向能ping通的问题,排除可能性中的情况2,与这边的路由相关,或者防火墙有关,先检查这边的ip和路由?


发现两个网卡,192.168.193.75配置在eth1上。

       发现缺省路由在eth0上,这样ping的request来包和回包就不在同一个网卡上,符合情况5,若linux打开了反向路由检测的话,检测到入出不在一个接口上,就不会发回程包。

   让北京长ping这边验证一下?ping的request消息是否从eth1进入服务器?

首先tcpdump  -i eth1  -nne  icmp回车,看如下结果:

      查看上图源mac对应的ip地址:

       确定是从eth1进来,而且是网关转发的,前向没有问题。

       再抓所有的网卡,看是否一致?

       tcpdump  -i  any   -nne   icmp回车。

tcpdump的-any看不到mac层的目的mac地址,只能看到源mac地址。

确定是服务器的问题,服务器没有回包。

查看反向路由检测是否打开

root@mgmt ~]# cat  /proc/sys/net/ipv4/conf/all/rp_filter
1
[root@mgmt ~]# cat  /proc/sys/net/ipv4/conf/eth0/rp_filter
1
[root@mgmt ~]# cat  /proc/sys/net/ipv4/conf/eth1/rp_filter
1
发现都打开了,确定是这个原因造成。

询问得知,路由表中的0.0.0.0/0的gw172.160.100.1是一个内部测试的路由器的lan口地址,wan口配置能和北京通信的192.168.205.45的ip地址,所以ping出去能够ping通。

有下面两种解决方法:

一种做法,添加具体的回程路由,让目的ip172.16.123.0/24从eth1回去。

   另一种,就是关闭网卡的反向路由检测。

 echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter  关闭所有的网卡的反向路由检测

 echo 0 > /proc/sys/net/ipv4/conf/eth0/rp_filter   关闭eth0的检测
echo 0 > /proc/sys/net/ipv4/conf/eth2/rp_filter   关闭eth2的检测

决定采用前一种,添加回程路由,让走eth1回去。

[root@mgmt ~]# route  add  -net 172.16.123.0/24  gw  192.168.193.1

查看路由表:

再次tcpdump有如下打印:

显然,这个入包的源mac是核心交换机192.168.193.1的mac,而out的源mac是服务器eth1的mac地址,实现一个 网卡进,同一个网卡出。

问题解决。

    这种time out,一般与防火墙和回程路由有关,处理思路就是源设备长ping,在目的设备抓包,看看是否有ping的request是,是否会ping的reply?收到request而没有reply回,一般都是防火墙拦截导致应用层收不到ping的requet消息或者回程路由没有,或者不对(包含反向路由检测)。若有request,也有reply,但源主机还是time out,就得根据reply的目的mac判断是否回程路由指向错误了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值