背景介绍
最近某企业近期网络改造,需要将部门对专网和公网的访问权限隔离开来,即“研发部通过某C防火墙上研发专网,办公区可以上互联网,但要保证两者均能互访”。拓扑简化如下:
- 研发部-VLAN10:网关为192.168.10.2即专网防护墙,可访问研发专网
- 办公区VLAN20:网关为192.168.10.1即核心交换机,可访问互联网
- 防火墙配置静态路由,目的VLAN20下一跳交给核心
按照上述方式部署以后,IT人员发现只有研发部VLAN10能访问到办公区VLAN20而反之则不行,一通排查下来发现原因是访问路径不对等,防火墙将包给丢掉了!
问题分析
最玩过防火墙(后文简称FW)的朋友或多或少都听说过FW会因为路径不对等而丢包,其原理是什么呢?我们基于这个拓扑来看一下。
首先看VLAN10—>VLAN20成功,路径如下:
可以看到VLAN10去往VLAN20的路径是(PC2-FW-核心SW-PC1),即①②③④,PC2发出的ICMP Request经过FW后会生成Session(会话)同时将包转发出去。
VLAN20回包路径是(PC2-核心SW-PC1),即⑤⑥。这个ICMP Reply不经过防火墙直接到研发部,来回是成功的。
然后看VLAN20—>VLAN10失败,路径如下:
VLAN20访问VLAN10的路径是①②,ICMP Request能被研发部设备收到没问题。但是VLAN20的回包路径是③④,此时当FW收到ICMP Reply后会检查Session状态是否存在,答案是没有的!因为没收到过Request。
会话检查后FW就把ICMP Reply丢掉了。这就是FW组网场景对路径不对等的报文丢弃的原理,TCP三次握手也是一样,我这里就不细说了。那么如何解决呢?
解决方案
通过上述分析可知防火墙基于会话状态检测机制丢包,即默认的“严格模式”。华三防火墙可通过配置会话状态机为“宽松模式”来实现类似宽松的效果,相关命令如下:
<H3C> system-view
[H3C] session state-machine mode loose
需注意:开启"宽松模式"可能会带来一定的安全风险,建议根据具体的网络环境和安全需求谨慎配置,并结合其他安全措施保障网络安全。