如何理解瞻博网络 SRX 流创建?

网络工程 杜松-srx 瞻博网络
2021-07-08 18:26:15

我有一个Juniper SRX240H2 (JUNOS 12.1X44-D20.3) 防火墙集群,处于流模式,接口reth2.1面向 Internet,接口reth1.1面向 LAN。我有一个特定的源和目标 IP 对的问题。源通过 Internet 将 TCP SYN 数据包发送到位于 NAT 后面的目的地,NAT 转换正常,局域网中的目的地将到达该数据包。但是,reply(TCP SYN+ACK) 将在防火墙中被丢弃,因为没有找到以前的流:

Apr  8 15:08:04 15:08:07.821685:CID-1:RT:  reth1.1:10.70.50.201/515->104.236.80.115/1021, tcp, flag 12 syn ack
Apr  8 15:08:04 15:08:07.821685:CID-1:RT: find flow: table 0x5115c900, hash 880(0xffff), sa 10.70.50.201, da 104.236.80.115, sp 515, dp 1021, proto 6, tok 9
Apr  8 15:08:04 15:08:07.821685:CID-1:RT:  no session found, start first path. in_tunnel - 0x0, from_cp_flag - 0
Apr  8 15:08:04 15:08:07.821685:CID-1:RT:  packet dropped, first pak not sync
Apr  8 15:08:04 15:08:07.821685:CID-1:RT:  flow find session returns error.
Apr  8 15:08:04 15:08:07.821685:CID-1:RT: ----- flow_process_pkt rc 0x7 (fp rc -1)

LAN 中防火墙和目标之间的延迟约为 20 毫秒,因此不应是因为流超时。TCP SYN 检查在 SRX 中如何工作?它是否期望 TCP SYN+ACK 使用与初始 TCP SYN 来自的相同出口接口?

1个回答

SRX 上的 TCP 握手超时默认为 20 秒,您不能手动将其设置为低于 4 秒,因此这绝对不是问题。

您是否在另一个方向进行了安全流跟踪?很高兴看到会话启动(SRX 处理初始 TCP SYN)以查看初始会话的实际情况。这可能会说明为什么返回流量与会话不匹配。

不过,为了回答您的问题,在检查会话是否已建立时,SRX 将查看六个匹配条件:

为了确定数据包是否属于现有流,设备会尝试根据以下六个匹配标准将数据包的信息与现有会话的信息进行匹配:

• 源地址

• 目的地地址

• 源端口

• 目的端口

• 协议

• 来自给定区域和虚拟路由器的唯一令牌

资料来源:

http://www.juniper.net/techpubs/en_US/junos12.1x47/information-products/pathway-pages/security/security-processing-flow-based.pdf

http://www.juniper.net/techpubs/en_US/junos12.1/information-products/topic-collections/security/software-all/security/junos-security-swconfig-security.pdf

特定的入口/出口接口不必与初始会话创建相同,只要它们与用于建立会话的接口位于相同的安全区域中即可。

来源:

https://kb.juniper.net/InfoCenter/index?page=content&id=KB21983

*见注释,就在目的之上。

此外 - 如果接口/区域是一个问题,您通常会基于此获得特定输出。根据我的经验,我看到安全流跟踪下降的原因是出口接口(在返回方向)与建立会话的初始入口流量不在同一个安全区域。在大多数情况下,它非常冗长。

即使使用机箱集群,就“会话”匹配而言,也不会有太大区别,尽管在某些情况下会发生一些额外的事情。

如果您正在运行一个主动/主动集群,其中转发冗余组在不同节点上是主要/主动的,那么您最终可能会遇到 z-mode 流量。因此,如果入口在节点 0 上,出口在节点 1 上,则活动会话将在节点 1(初始同步的出口)上维护,备份会话将在节点 0 上维护。

通过 Z 模式处理,会话的第一个数据包在一个集群节点(入口节点)上接收。当流确定出口接口位于第二个节点上时,数据包通过结构链路转发,并在入口节点上建立转发会话。然后,该数据包由安装了活动会话的第二个节点处理,并且该数据包从出口链路转发出去。最后,在初始入口节点中为活动会话创建一个备份会话。

来源:

http://kb.juniper.net/library/CUSTOMERSERVICE/GLOBAL_JTAC/NT260/SRX_HA_Deployment_Guide.pdf

除非您使用非对称路由执行此操作并且返回流量在节点 1 上离开接口并在节点 0 上返回(反之亦然),否则我们不必进一步探讨这一点 - 尽管我相信备份会话可以使用,如果区域匹配并且流量仍然应该通过。如果是这样的话,我将不得不更多地探索它。