如何让飞塔防火墙允许一个数据包从这个接口收到,又从这个接口转发出去

请教一个问题:

附件实验图中两台路由器用ospf连接,可以相互连接192.168.0.0 和192.168.2.0 ,C1,C2为192.168.0.0/24的两台PC机!

如果我将默认网关设成eatern-router的内网IP:192.168.0.5,那这两台就可以和C5 (192.168.2.100)通信,但如果我将默认网关设成一台防火墙或是路由器的内网IP(192.168.0.150),并且在150中设置了一条静态路由route inside 192.168.2.0 255.255.255.0 192.168.0.5,后,防火墙本身可以与192.168.2.0通信,但C1,C2就不可以, 除非我在C1,C2中主机中手工增加route add 192.168.2.0 mask 255.255.255.0 192.168.0.5 就可以与192.168.2.0通信了。

我们有ASA和飞塔F1000C两种防火墙,如果是ASA,默认情况下它也不行,但查看官方文档说是因为 “是因为防火墙自身会拒绝一个数据包从这个接口收到,又从这个接口转发出去”,所以在ASA中加了一条same-security-traffic permit intra-interface命令后解决!

我想飞塔应该也是这个原因,请问飞塔中要如何操作?

network.JPG

已邀请:

胡丹丹

赞同来自: fanzhengang admin bigpig kmliu

FortiGate 默认就接受这样的流量从接口转发出去,但是如果在system global 中更改了allow-traffic-redirect 参数,那么防火墙不会转发该流量。
config sys global
set allow-traffic-redirect disable (默认为enable)
end


具体可以参考附件拓扑及以下说明
FortiGate A,B in the same subnet,FortGate A set a defalut route to FortiGate B. Gate B set a default route to the internet.

when Gate A and its internal network try to access internet via FortiGateB,FortiGate B interface would accept any traffic from FortiGate A and check the own route list ,then forward them all out with same interface.

fanzhengang - IDC运维管理

赞同来自: bigpig

您说的是对的,我仔细查了一下配置,出现这个原因应该是我在策略路由中加一条192.168.0.0/24到一个公网的策略,应该是策略路由高于静态路由,所以导致它到150后走公网了,因为出公网的策略路由实际需要,不能删除,我另加了一个策略路由允许192.168.0.0/24访问192.168.2.0/24并把它放在原来的策略路由之上,再做一条允许的防火墙策略后就可以了!

fanzhengang - IDC运维管理

赞同来自:

我按您的提示查看了一下set allow-traffic-redirect 是enable的,我用192.168.0.200去tracert 192.168.2.1,发现它到192.168.0.150后,下一跳为公网出口的网关,并没用丢给192.168.0.5,我在飞塔中的路由--静态路由中已加了一条去192.168.2.0/24的静态路由,并在飞塔中execute ping 192.168.2.1 也是通的,是否还要加其它什么策略之类的呢?

kmliu - Fortinet-TAC

赞同来自:

此处转发的应该涉及到ICMP重定向。
 
FGT---------------E-Router---------------C5
             |
             C2 
C2的网关指向FGT,FGT写静态路由到C5,当C2去访问C5的时候,FGT会发送icmp-redirect,告诉C2,去往C5应该走E-Router。这样C2访问C5就直接走E-Router了,并且业务的来回路径一致。这样访问的业务就不会有问题。
 
但是,如果业务有问题,可以去判断,icmp-redirect没有开启,或者没有生效。
1.如果icmp-redirect没有开启,如果是tcp的访问,C2的SYN发送到FGT上,而C5回来的SYN+ACK直接从E-Router发送到C2,然后C2的ACK再发送给FGT的时候,由于TCP三次握手检查,将会将此ACK报文丢弃,TCP访问将会不通。
C2到C5的ICMP的访问应该无此影响,但是反过来C5到C2的TCP和ICMP都将会有影响。
FGT5HD3915801780 # config system interface 
FGT5HD3915801780 (interface) # edit port1 
FGT5HD3915801780 (port1) # get | grep icmp
icmp-redirect      : enable (默认为enable)
如果此时为disable,可以开启enable解决。或者通过修改asymroute enable开启非对称路由的方式解决。
FGT5HD3915801780 (settings) # show 
config system settings
    set asymroute enable(默认为disable)
2.如果FGT开启了icmp-redirect anable,那么有两种可能,FGT的icmp-redirect不生效,或者PC不接受icmp-redirect的报文,或者中间的SW丢弃了icmp-redirect的报文,从而导致icmp-redirect不生效。
 
可以在电脑抓包看是否可以抓到FGT发送过来的icmp-redirect报文。再逐一进行确认。按照以上思路应该就可以彻查清楚的,就是稍微麻烦一点。
icmp-redirect需要多台设备之间的配合,包括电脑的配合,所以大部分时候这样的组网很容易出现问题,特别有安全设备存在的情况下,更加容易出问题,不建议此类的组网部署方式。建议将icmp-redirect彻底关闭,配置对称的路由,避免非对称的流量。免得排错太繁琐。

要回复问题请先登录注册