【仿真——非对称路由(往返路径不一致)导致防火墙丢弃流量】——更多精彩内容请参考我订阅的KE——《企业网络工作者最实用的动手实验KE》
PC到服务器时,直接通过路由器到达,返回的数据包被路由器利用策略路由特性强制交给防火墙。防火墙会把它交给192.168.1.1的路由指向10.1.1的路由器,形成一个路径不一致的环境,策略可以放遍。这时,你会发现访问流量仍然无法通过防火墙。因为路由器可以看到客户端发起的SYN建立和服务器响应的SYN+ACK,但是防火墙只接收SYN+ACK,导致路由不对称,数据无法通过防火墙。
数据包传输过程:
(1)Client1发起第一个TCP包的SYN建立,并发送给路由器处理。
(2)路由器查询路由表,直接扔给Server1。
(3)服务器1响应SYN+ACK。路由器返回时,因为对接服务器的接口调用了策略路由,所以会强制将这个数据包交给10.1.2.2处理。此时防火墙收到后发现会话表中没有该数据包的匹配信息,且该数据包不是TCP的第一个SYN包,直接丢弃。
【原因】
这种丢弃的原因:上面我们深刻的了解到,防火墙与TCP建立会话的前提条件是接收到的数据包必须是第一个SYN的数据包,而这里防火墙接收到的是第一个SYN+ACK,所以防火墙会直接丢弃,不做处理。
[解决方案]
所以在实践中,防火墙可以处理这样的情况。由于状态检测机制的存在,它会检测各种协议的特性和规范。我们可以关闭这个功能,防火墙不会分析连接状态,相当于包过滤策略。只要安全策略允许,后续消息将直接通过。
【USG600V1】撤销防火墙会话链路状态检查:关机非常简单。一个命令就搞定了。当状态检测功能关闭后,防火墙就失去了魅力。除非在某些特殊情况下,不建议关闭该功能。
[最佳解决方案]
在实践中,如果在特殊环境下确实需要关闭状态检测,关闭状态检测的防火墙会回归传统的包过滤功能。防火墙提供了一个非常好的功能,就是可以指定一部分流量关闭状态检测,其余的保持不变。
如果这种情况发生在一个特定的会话中,将它与ACL匹配,您可以使用exclude关闭状态检测。在这种情况下,如果没有为相应的ACL启用状态检测,其余的仍将启用。
#
acl编号3000
规则5允许ip源192.168.2.1 0目标192.168.1.1 0
#
防火墙会话链接状态排除acl 3000
#
防火墙会话链接状态检查