没有拓扑都是耍流氓,先上组网图。
某公司:外联区为合作单位的网络,通过专线接入到我们系统,并且中间流量为ipsec加密封装。由于特殊原因,外联区合作单位某网络需要用到我们的互联网出口,全网跑的都是我的ID(静态路由)。所以业务流流向为,外联区通过ipsecvpn到内网防火墙,然后通过核心交换机,最后通过互联区出口防火墙AF接入互联网。
这套系统集团分公司自己维护,他们排查一阵没有发现原因,于是请求我方支援。昨天接到这个消息的时候,我还在社区Q群里聊得正嗨呢。
开始干活: 客户这边访问很明确,外联区的172.16.X.X访问公网103.X.X.X的443端口,现在客户那边直接telnet端口不通。首先我想到的是先查配置,但是分公司的IT说配置肯定没问题。配置没问题那怎么会不通呢?那这样吧,我先不看配置,抓包看下吧。 我分别在三个地方抓包了,外联区路由器,核心交换区核心交换机的下联口,以及上联口。 抓包的时候,让客户从172.16.X.X访问公网103.X.X.X,分析数据走向。 外联区路由器抓包如下: 收到SYN了,说明已经收到外联区客户的发包了,但是没有回复SYN,ACK,继续往下抓包。
核心交换区下联口抓包如下: 同样的,收到SYN,说明数据包已经到到核心交换机下联口,但是没有回复SYN,ACK,继续往下抓包。
核心交换机上联口如下: 这里发现线索了,在上联口这里,收到SYN,ACK了,但是就差最后的ack就能握手成功了。简单的理解,建立握手,数据包需要交换三次,也就是说172.X.X.X先要到103.X.X.X,然后回来172,最后在到103。结合三次抓包,可以分析出,数据包卡在了核心交换机这里,数据包是有去无回。 那么是什么原因导致有去无回的呢?第一反应是不是没有加172.X.X.X的回程路由呢?话音刚落,分公司的小伙伴就说:“奥,对了,我核心交换机的回程172.X.X.X的路由忘记加了,上面的几个防火墙我都加了,平时核心动得少,一不小心都遗忘掉了。” 配上回程路由后,果然问题解决。 工作久了,往往会遗忘掉最简单的操作,需要细心。抓包可以看现象背后的真相,是个好工具,希望大家都能多多分享自己的debug案例。 |