最近遇到一个路由来回路径不一致导致网络不通的问题,搜了一些资料,也和前辈讨教了一下,当个case记录下来。

1、如果链路上存在安全设备,由于来回路径不一致,流量可能会被安全设备认为是半连接,进行阻断。防火墙状态检测一般会挡住来不路径不一致的包。如果网络结构中有防火墙,路由来回路径不一致可能直接导致网络不连通。
2、出现问题时,给问题排查带来困难。
3、如果不同链路的带宽不一致,可能会导致单向拥塞。

非对称路由是指发送和接收数据包时,分别使用了主机和目的地设备之间两条不同的路径。

经过多个实战经验终于可以明确:防火墙来回路径不一致结果是不能正常通信的。

如下图:

img

局域网10网段要访问文件服务器路途为

去:主服务器→防火墙→中间路由器→文件路由器→文件服务器

回:文件服务器→文件路由器→中间路由器→主服务器

可以看出数据包在选择路由时是可以正常到达的(实战中ping与telnet+端口也是正常的),但主服务器(10网段)要访问文件服务器(172网段)中的应用程序时,就出现异常了,压根就无法访问。这是怎么回事呢?

网上高手解释:

路由没有问题,有来有回。。。
路由可达。。

但安全设备上,过不去。。许多的安全设备会进行检查。。。
TCP三次握手。。缺一不可。。
比如你的数据出去的时候从A走。。回来的时候,从B机或备机回来,就可能会被拦截。

DOS攻击,就是只发起建立,而不理会回报,不会进行确认。。
如果只有确认报,而没有发起来。基于上下文的检测,会认为这是有问题的报文,不能转发,会当攻击、异常,直接丢弃。

防火墙在默认情况下是把状态检测打开的,当回包到达防火墙的时候,防火墙仅仅是收到了一个回复的数据包,这个时候防火墙会直接丢弃
有些防火墙是有这样的功能 选项,可以进行关闭

比如华为USG墙

在防火墙的全局模式下关闭链路的会话检测功能,即:
undo firewall session link-state check

还有些墙支持会话同步功能的,就没有问题。。

起初第一次碰到这种情况以为是设备版本问题,但之后陆续也出现这种情况,所以不得不认真排查了一翻。通过以下排查可以确定,防火墙来回路径不一致结果是不能正常通信的。

第一种认证方法:将主服务器网关改成10.45.99.199,最后访问文件服务器所有功能正常。

第二种认证方法:将防火墙换成路由器其他不变,最后访问文件服务器所有功能正常。

因此网络上的高手的解释是正确的。

来回路径不一致还会引起另个问题,目前有些防火墙(比如,神州数码)可以把trust到trust允许后就可以实现从主服务器正常ping及访问文件服务器,但还是引起了另外的一个问题,就是文件服务器无法ping及访问主服务器。

所以要想让双向网络都能正常访问那么在以后的网络规划中如果使用到防火墙时,必须杜绝这种来回路径不一致的路由。