同一接口进出的三层转发
同一接口进出的三层转发
本文介绍了 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