反向路由解决防火墙映射不通的问题

2021/08 09 14:08

注:反向路由又叫逆向路由

最近做项目的时候遇到一个奇怪的问题,一台防火墙接入了同一个运营商的两条专线(鬼也不知道他为什么要这么买专线),而且是同一个光收发出来的光纤分别接到了两个光猫上。

(随便找的图,拓扑差不多)

当一切配置完毕之后,神奇的事情发生了,防火墙备是可以远程管理,甚至VPN也可以接入,内网用户也可以正常上网,但是端口的映射却怎么也不通。(其实还遇到了NAT回流的问题,这里就不写了)
我们是又是远程又是抓包,忙活了一个多小时,最终这个问题由开启“反向路由”后而告终,感觉也算是个小经验吧!

通常情况下,访问数据包和应答数据包都是根据路由表进行选路的。反向路由是指路由设备记录访问数据包的方向,当需要转发应答数据包时,不再查询路由表,而是查找到反向流,从访问数据包的接口回复。

然后分析一下这个现象的数据通信过程:

  • 当使用tcping工具测试端口连同性的时候,首先电脑会向远程防火墙发起针对特定端口的TCP的握手包;
  • 数据包经过公网转发到防火墙,由于防火墙做了DNAT,防火墙会根据该数据包的目的IP和端口号经过转换后转发给内网里的服务器;
  • 服务器收到TCP握手请求后会回复该请求(DNAT情况下,服务器收到的请求包的源地址是不变的)
  • 数据包在核心交换机经过查询缺省路由后到达防火墙
  • 此时防火墙是问题的关键,由于它本身有两条缺省路由,两路由的优先级相同,但是主的开销要小于备的,于是数据经由主线路转发
  • (太多细节就不写了,比如数据包里的字段是什么值,包怎么封装,这里分析不到这么细)

    问题就出在这里,数据包由防火墙的1口接收,由2号口转发,造成单边流量的现象,也就是平时所说的来回路径不一致,防火墙在没有开启状态检测和反向路由的情况下就会造成丢包。

    解决办法就是开启反向路由

    测试业务端口正常!

    发表回复

    欢迎回来 (打开)

    (必填)