同一接口进出的三层转发
同一接口进出的三层转发
本文介绍了FortiGate在数据包进出为同一逻辑接口(三层转发)时的处理机制。
默认行为
在默认配置下,数据包在穿越FortiGate做三层转发时,如果FortiGate查找路由表后确定从同一接口in的数据包也应通过同一接口out(不更改VLAN tag、不做NAT、不进行IPSec封装/解封装),数据包就会直接从同一出接口发出,不需要相应防火墙策略放通,也不会产生会话和流量日志。
该默认行为可以通过如下CLI命令修改(默认为enable)。修改为disable后,必须配置明确的防火墙策略放通,流量才会被转发。
重要
- 对于公有云FortiGate-VM的单臂(one-arm)流量,始终建议将
allow-traffic-redirect状态设置为disable。 - 对于需要做NAT、日志审计的流量,建议将
allow-traffic-redirect状态设置为disable。
config system global
set allow-traffic-redirect [enable | disable]
set ipv6-allow-traffic-redirect [enable | disable]
end不同流量场景的效果
对于不同类型的流量/版本组合,allow-traffic-redirect的开启和关闭可能导致不同的效果。
源IP与转发接口在同一网段
网络拓扑

- FortiGate的port2和port3组成一个交换接口LAN。
- PC源IP
10.10.1.2与FortiGate的转发接口LAN的IP10.10.1.1在同一网段。PC的网关为FortiGate的LAN接口IP,Server的网关为SW 10.10.2.1。 - PC访问Server,流量从FortiGate的LAN接口进,查路由表从LAN接口出(三层转发),下一跳为SW的地址10.10.1.3。
转发行为
set allow-traffic-redirect enable(默认配置):数据包就会按照路由(或策略路由)转发,直接从同一出接口发出,不需要相应防火墙策略放通,流量穿过FortiGate时,不会创建会话,也不会产生流量日志。set allow-traffic-redirect disable: 必须有相应的防火墙策略放通。如果没有策略放通,流量将匹配隐式拒绝策略被丢弃。流量穿过FortiGate时,**会创建会话,可以产生流量日志,可以根据策略配置做NAT。**以上图拓扑为例,需要配置的放通策略如下所示。重要
对于TCP流量,必须在策略中关闭
anti-replay,这样TCP流量就不会作为重放流量被丢弃。config firewall policy edit 0 set srcintf "LAN" set dstintf "LAN" set action accept set srcaddr "10.10.1.2/32" set dstaddr "10.10.2.2/32" set schedule "always" set service "ALL" set anti-replay disable //针对TCP流量必须关闭// next end
源IP与转发接口在不同网段
网络拓扑

- FortiGate的port2和port3组成一个交换接口LAN。
- PC源IP
10.10.1.2与FortiGate的转发接口LAN的IP10.10.2.1不在同一网段。PC的网关为SW 10.10.1.1,Server的网关为FortiGate的LAN接口10.10.2.1。 - PC访问Server,流量从FortiGate的LAN接口进,查路由表从LAN接口出(三层转发),下一跳为SW的地址10.10.1.3。
转发行为
**FortiOS版本 < 7.0.16/7.2.11/7.4.4:**无论
allow-traffic-redirect启用还是禁用,流量都必须与防火墙策略进行匹配。会创建会话,也可以产生流量日志。FortiOS版本 ≥ 7.0.16/7.2.11/7.4.4:
set allow-traffic-redirect enable(默认配置):数据包就会按照路由(或策略路由)转发,直接从同一出接口发出,不需要相应防火墙策略放通,流量穿过FortiGate时,不会创建会话,也不会产生流量日志。set allow-traffic-redirect disable: 必须有相应的防火墙策略放通。如果没有策略放通,流量将匹配隐式拒绝策略被丢弃。流量穿过FortiGate时,**会创建会话,可以产生流量日志,可以根据策略配置做NAT。**以上图拓扑为例,需要配置的放通策略如下所示。重要
对于TCP流量,必须在策略中关闭
anti-replay,这样TCP流量就不会作为重放流量被丢弃。config firewall policy edit 0 set srcintf "LAN" set dstintf "LAN" set action accept set srcaddr "10.10.1.2/32" set dstaddr "10.10.2.2/32" set schedule "always" set service "ALL" set anti-replay disable //针对TCP流量必须关闭// next end