一同事找来,说一个浙江移动的网管项目有一个远程ip的web页面无法访问,112.17.28.95:8090,前一段时间正常,突然不能用了。对方防火墙已经放行我们的出口固定ip61.185.217.203,让协助解决。
告知,这个ip走公司的固定ip出去,数据已经制作,让tracert看看结果:
看这样结果,确定是从公司的固定ip61185.217.203出去了,因为公司的组网:
有两个出口设备,一个固定ip的ros路由器,一个pppoe拨号防火墙设备,需要固定ip访问的一些流量走ros路由器,普通上网走防火墙的pppoe线路。办公网络接入设备挂在三层交换机下。
告知,我们ros送出没问题,让在目的方查看是否到达对方,到达对方,检查是否对方防火墙拦截了,没有到达对方,可能丢在经过的节点上了?这个不好确定在那个节点丢了,不好查找原因。
反馈和对方沟通,对方让检查本地路由器是否有防火墙拦截?
根据对方反馈,在ros上镜像抓包,发现已经到ros的nat前面了,ros路由器上没有任何限制。
对方回复:
为确定包已经发给了对方,同事找了一个linux环境,利用traceroute的-p端口跟踪功能,进行测试:
发送udp的8090消息,确定已经到对方接口ip地址。
告知同事:我ros抓包已经在postrouting那一步,这个是在wan口发出的snat前面,ros的防火墙拦截是在foward那个表里,若有拦截,不会到postrouting这里,如下图:
对方反馈:
对方没有跟踪到对应61.185.217.203的包,并有如下反馈:
同事反馈:那个ip的8090不能用,但8091和8092的tcp端口是可用的。
来来回回扯皮,没有确定问题,对方说访问tcp8090的包他们的防火墙没有抓到包,让确定8090的包是否出去携带61.185.217.203的ip地址?
没办法,觉得用本地pppoe的ip作为目的ip试一下,抓包看一下携带的ip地址?组网如下:
计划这么搞一下,但防火墙的dnat有点问题,就在防火墙上抓pppoe接口的包看看? 三层交换机做pppoe线路的ip219.145.1.88指向1992.168.212.1,让走固定ip61.185.217.203出去,去tcping219.145.1.88这个地址的8090端口,看看结果?
发现没有tcp是8090的包过来,只有8089和8091端口的包,根据tracert的结果,初步判断为本地问题,联系运营商,运营商反馈他们没有做限制,让浙江目的方定位。
看上图,tracert的3,4都是运营商电信的设备,没有经过其他节点,直接到219.145.1.88,而没有收到tcp 8090的包过来,应该是电信运营商这里问题。
扯皮半天,没办法,建议同事和远程方联系,能否更换端口?
远程方反馈,平台好多厂家在用,没法更换端口。
为了确定电信的设备造成丢包, 决定在光猫上试一下,光猫有两个接口,可用三个ip,决定如图试一下:
光猫的两个口是在同一交换芯片下,二层是互通,61.185.217.203和61.185.217.205通信是不通过运营商的的网关设备,这个能通信,证明经过运营商的网关,直接到下一跳的pppoe拨号设备,就出现了tcp8090无法发包的问题,确定运营商网关哪里有问题?
证据面前,运营商给查了一下,反馈他们一条路由指向错误,修正后解决。
几次折腾后,最后在本地pppoe线路进行测试发现,这次有包过来。
询问原因?
再次测试目的tcping 112.17.28.98 8090,如下:
同事 访问对应网管成功:
总结:
1、远程解决问题,扯皮太多,历时一个礼拜,开始远程那边说的对着,应该用携带端口的测试包进行trace跟踪,看看那个节点给回了ttl exceed消息,确定tcp包能到达那里?在哪里丢了?
2、 经过节点太多,很难确定那个节点造成原因,幸运的是这个是本地设备,否则很难查找原因。
3、下载几个tracert的工具软件,如countrytraceroute工具,和tracetcp这样的工具方便查询结果。通过抓包可以看到携带端口的tcp消息是否到达对应的节点,单纯的tracert仅仅是icmp协议,有时icmp协议导通,但对于的tcp端口消息却不通,会导致问题的出现。
4、tcp的跟踪可以用linux下的traceroute命令如跟踪tcp的dns查询消息traceroute -T -n 114.114.114.114 -p 53,-T表示tcp协议,-p表示端口