Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

TCP 会话

要通过网络中的 TCP 发送数据,需要遵循三向握手会话建立流程。有一个启动会话的过程,还有一个终止 TCP 会话的过程。本主题可帮助您了解处理 TCP 会话所涉及的过程。

了解每个策略的 TCP 会话检查

默认情况下,TCP SYN 检查和序列检查选项均在所有 TCP 会话上启用。Junos 操作系统 (Junos OS) 在 TCP 会话期间执行以下操作:

  • 检查会话的第一个数据包中的 SYN 标志,并拒绝任何尝试启动会话的带有非 SYN 标志的 TCP 分段。

  • 在有状态检测期间验证 TCP 序列号。

通过按策略的 TCP 会话检查功能,您可以为每个策略配置 SYN 和序列检查。目前,TCP 选项标志 no-sequence-check 和 no-syn-check 可在全局级别使用,以控制服务网关的行为。要支持按策略的 TCP 选项,可以使用以下两个选项:

  • sequence-check-required:sequence-check-required 值覆盖全局值 no-sequence-check。

  • syn-check-required:syn-check-required 值覆盖全局值 no-syn-check。

要配置按策略的 TCP 选项,必须关闭相应的全局选项;否则,提交检查将失败。如果禁用全局 TCP 选项,且 SYN 泛洪保护允许第一个数据包,则按策略的 TCP 选项将控制是否执行 SYN 和/或序列检查。

注意:
  • per-policy syn-check-required 选项不会覆盖 CLI 命令的 set security flow tcp-session no-syn-check-in-tunnel 行为。

  • 禁用全局 SYN 检查会降低设备在防御数据包泛洪方面的效率。

注意:

禁用全局 SYN 检查并在策略搜索后强制执行 SYN 检查将极大地影响路由器可以处理的数据包数量。这反过来又会导致密集的 CPU 操作。禁用全局 SYN 检查并启用按策略实施的 SYN 检查时,应注意此性能影响。

禁用 TCP 数据包安全性检查

在 SRX 系列防火墙上,您可以禁用对 TCP 数据包的安全检查,以确保与 TCP 实施有错误的主机和设备的互操作性。

no-sequence-check 选项禁用 TCP 序列检查。它还提高了吞吐量。

set security flow tcp-session no-sequence-check 命令将禁用默认模式或基于散列模式的所有 TCP 会话的 TCP 序列检查。

示例:按策略配置 TCP 数据包安全性检查

此示例说明如何为设备中的每个策略配置 TCP 数据包安全检查。

要求

开始之前,必须禁用在全局级别配置的 tcp 选项 tcp-syn-checktcp-sequence-check

概述

默认情况下,所有 TCP 会话都会启用 SYN 和序列检查选项。在需要支持大型文件传输或运行非标准应用程序的环境中,可能需要为每个策略配置不同的顺序和同步检查。在此示例中,您将为策略 pol1配置顺序和同步检查。

配置

过程

分步程序

要在策略级别配置 TCP 数据包安全检查:

  1. 在创建会话之前配置对 TCP SYN 位的检查。

  2. 配置在状态检测期间检查 TCP 分段中的序列号。

  3. 如果完成设备配置,请提交配置。

验证

要验证配置是否工作正常,请输入命令 show security policies detail

示例:禁用 SRX 系列服务网关的 TCP 数据包安全性检查

此示例说明如何在设备中禁用 TCP 数据包安全检查。

要求

开始之前,请了解禁用 TCP 数据包安全检查的情况。.

概述

Junos OS 提供了一种禁用 TCP 数据包安全检查的机制,以确保与 TCP 实施有错误的主机和设备的互操作性。在无 SYN 检查期间,Junos OS 不会查找用于创建会话的 TCP SYN 数据包。无序列检查禁用 TCP 序列检查验证。此外,还能提高吞吐量。默认情况下,SYN 检查和顺序检查处于启用状态。set security flow 命令会禁用所有 TCP 会话的 TCP SYN 检查和 TCP 序列检查,从而降低安全性。在有客户(如大传输文件)或无法正确使用标准的应用程序的情况下,可能需要这样做。

配置

过程

分步程序

下面的示例要求您在各个配置层级中进行导航。有关如何执行此操作的说明,请参阅《CLI 用户指南》中的在配置模式下使用 CLI 编辑器

要禁用 TCP 数据包安全检查:

  1. 在创建会话之前禁用对 TCP SYN 位的检查。

  2. 在有状态检测期间禁用检查 TCP 分段中的序列号。

  3. 如果完成设备配置,请提交配置。

验证

要验证配置是否工作正常,请输入 show security flow 命令。

示例:为 SRX 系列防火墙设置所有 TCP 会话的最大分段大小

此示例说明如何为 SRX 系列防火墙的所有 TCP 会话设置最大分段大小。

要求

在开始之前,请了解设置最大段大小的情况。

概述

您可以通过更改 TCP 最大分段大小 (TCP-MSS) 来终止所有 TCP 会话。为了降低分段的可能性并防止数据包丢失,可以使用 tcp-mss 指定较低的 TCP MSS 值。这适用于遍历路由器入口接口的所有 TCP SYN 数据包,且这些数据包的 MSS 值高于您指定的数据包。

如果设置了 DF 位,则不会对数据包进行分片,并且 Junos OS 会向应用服务器发送 ICMP 错误类型 3 代码 4 数据包(目标不可达;需要分段和 DF 集)。此 ICMP 错误消息包含应用程序服务器要使用的正确 MTU(如 tcp-mss 中所定义),应用程序服务器应接收此消息并相应地调整数据包大小。这对于 VPN 来说尤其必要,因为 IPsec 增加了数据包开销;因此,必须适当降低 TCP-MSS。

注意:

在数据包模式下运行 SRX 系列防火墙时,可使用 调整 set system internet-options tcp-mss TCP-MSS 值。所有端口都受 TCP-MSS 配置的影响;您无法排除特定端口。在流模式下运行 SRX 系列防火墙时,虽然您可以使用 set system internet-options tcp-mss ,但我们建议仅 set security flow tcp-mss 使用 来调整 TCP-MSS 值。如果配置了这两个语句,则两个值中较低的一个值将生效。

配置

过程

分步程序

要为所有 TCP 会话配置最大分段大小:

  1. 为所有 TCP 会话设置 TCP 最大分段大小。

  2. 如果完成设备配置,请提交配置。

结果

在配置模式下,输入 show security flow 命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的配置说明进行更正。

为简洁起见,此 show 命令输出仅包含与此示例相关的配置。系统上的任何其他配置都已替换为省略号 (...)。

验证

要验证配置是否工作正常,请在操作模式下输入命令 show configuration security flow

TCP 状态外数据包丢弃日志记录概述

在任何分组交换网络中,当需求超过可用容量时,数据包就会排队以保留多余的数据包,直到队列填满,然后丢弃数据包。当 TCP 在这样的网络上运行时,它会采取任何纠正措施来保持无差错的端到端通信。

流模块已支持为基于会话的事件(如会话创建和会话关闭)生成 RTLOG。SRX 系列防火墙现在支持为基于数据包的事件生成 RTLOG,例如在不存在会话的情况下丢包。

SRX 系列防火墙支持记录流模块丢弃的未同步 TCP 状态外数据包。

TCP 状态外数据包丢弃日志记录功能可避免任何数据包丢失,并通过记录不同步数据包来实现数据包恢复,以实现无错误通信,并防止数据库服务器不同步。此功能建立在安全日志 (RTLOG) 工具之上。

TCP 状态外数据包丢弃日志记录支持在以下情况下捕获 TCP 数据包丢弃日志:

  • Session ages out— 当有在长 TCP 会话之上运行的云应用程序,并且这些应用程序在会话老化后未刷新 TCP 会话时,TCP 数据包将被丢弃。此功能支持记录这些丢弃的 TCP 数据包。

  • Unsynchronized first packets due to attacks or asymmetric routes— 当您在两个站点部署SRX 系列防火墙时,路由有时会强制流量非对称,则在一个站点上可以看到同步 (SYN) 数据包,但在另一个站点上看到同步确认 (SYN_ACK) 数据包。

    这意味着 SRX 系列防火墙看到的 TCP 确认数据包没有匹配的状态表条目。发生这种情况的原因可能是连接在一段时间内处于非活动状态或连接表被刷新(例如,由于策略安装或重新启动)。

    在这种情况下,在其他站点看到的SYN_ACK数据包被SRX 系列防火墙拒绝,但未记录。此功能支持记录被拒绝的SYN_ACK数据包。

  • Other out-of-state conditions (like TCP sequence check fail and synchronization packet received in FIN state)— 当 SRX 系列防火墙检测到序列故障时,如果设备处于 TCP 四次闭合状态但收到 SYN 数据包,或者出现三次握手失败,则 SRX 系列防火墙将丢弃 TCP 数据包,并记录这些丢弃的数据包。

注意:

未同步的 TCP 状态外数据包丢弃日志是基于数据包的日志,而非基于会话的日志。

TCP 状态外数据包丢弃日志记录设计有节流机制,可保护 CPU 免受攻击,在每个节流间隔内可能会丢弃某些日志。

仅记录流模块丢弃的 TCP 状态外数据包。TCP 代理和 IDP 丢弃的 TCP 数据包不会被记录。

了解 TCP 状态外数据包丢弃日志记录

要了解 TCP 状态外数据包丢弃日志记录的实施情况,请考虑您在两个站点部署了 SRX 系列 防火墙,并且路由有时会强制使用非对称流量,其中在一个站点可以看到 SYN 数据包,但在另一个站点看到SYN_ACK数据包。在这种情况下,SYN_ACK数据包将被拒绝,但不会被记录。TCP 状态外数据包丢弃日志记录功能提供对这些不同步数据包丢弃情况的可见性。

考虑这样一个场景:数据中心内的数据库保持其 TCP 套接字保持打开状态,而不发送任何激活状态。如果未传输数据,SRX 系列防火墙将使会话超时。虽然数据库会通过该 TCP 套接字发送一些数据,但当流量到达 SRX 系列防火墙时,会话将不再存在,数据包将被丢弃,但不会记录。这些被丢弃的状态外 TCP 数据包现在由 SRX 系列防火墙记录。

支持的 TCP 状态外日志记录功能

TCP 状态外日志记录支持以下功能:

  • 用于过滤目标流量的数据包过滤器组件。

  • 用于保护 CPU 免受日志消息过载的限制组件。

  • 灵活更改日志生成速率。

数据包过滤器组件

日志记录过滤器利用当前流量跟踪过滤器。它提供了不同的流量过滤方法。您必须配置过滤器以生成数据包日志,否则将不会触发日志。

此筛选器功能可避免意外启用日志。支持的最大过滤器为 64。

使用该 set security flow packet-log packet-filter <filter-name> 命令启用所需的相关过滤器组件。

油门组件

记录每个 TCP 状态外数据包可能会在流量较大或发生攻击时使设备过载。如果 CPU 处于空闲状态,并且您希望记录尽可能多的消息,则可能会导致 CPU 过载。

使用节流机制,您可以从 CLI 配置节流间隔,这样您就可以保护 CPU 免于过载。

引入了一个哈希表来映射您的日志数据。散列密钥由源 IP 地址、目标 IP 地址、源端口和目标端口生成。

在每个限制间隔内,只有有限数量(多个)消息会发送到 RTLOG。其余日志消息将受到限制。

默认油门间隔为 1 秒。油门间隔(毫秒级别)需要配置为 2 的幂或零(0、1、2、4、8、16 ...2^N)。

当油门间隔配置为 0 时,将不涉及油门机制。这适用于流量非常轻且想要记录所有丢包日志的场景。

将节流间隔配置为 2^N 使节流机制无锁并提供良好的日志捕获性能。

灵活更改日志生成速率

根据设置的节流间隔,可以修改和管理日志生成速率。

这意味着在每个 32 毫秒 (ms) 间隔内,可能会生成有限数量的日志,其余日志可能会被丢弃。建议将间隔配置为 (0、1、2、4、8、16、32 ...2^N)。

如果输入值未与 2^N 对齐,则在流处理过程中将自动与 2^N 对齐。例如,如果配置 10 毫秒的间隔,它将自动与 8 毫秒的间隔对齐。

了解保留传入分段特性如何提高吞吐量

本主题介绍使用 SRX 系列防火墙保留传入数据包分段特征的好处。

当数据从一台主机发送到另一台主机时,它作为一系列数据包进行传输。当最大大小的数据包可以在从源节点到目标节点的路径中传输而不在数据路径中的任何链路发生分段时,性能就会提高并节省网络资源。如果数据包大于为该链路建立的最大传输单元 (MTU) 的大,因此必须将数据包分片成更小的数据包才能在路径中传输链路,则除了有效负载或数据之外,每个生成的分片还必须包含数据包标头信息。增加的开销会降低吞吐量并降低网络性能。此外,数据包片段必须在目标节点上重组,这会消耗额外的网络资源。

另一方面,当主机发送的数据包远小于路径 MTU(路径最大传输单元)时,网络资源就会被浪费,从而导致吞吐量不理想。路径 MTU 发现过程用于发现将数据路径从源节点传输到会话目标节点的片段的最佳 MTU 大小。因此,最佳数据包大小是路径 MTU 的数据包大小。当数据包大小超过路径 MTU 时,就会发生分片。

如果在 SRX 系列防火墙上配置了应用层服务,则必须先重组入口接口上的数据包片段,然后才能应用服务并检查内容。在数据通过出口接口传输之前,必须再次分解这些重新组合的数据包片段。通常,出口接口的 MTU 大小决定了从 SRX 系列防火墙传输到下一个链路的分片大小。SRX 系列防火墙上的出口 MTU 大小可能大于路径 MTU,同样,这将导致数据路径中的数据包分段,从而降低性能或导致数据包丢弃。数据包分片必须足够小,以便通过从源到目标路径中的每个链路。

默认情况下,SRX 系列防火墙使用为出口接口配置的 MTU 大小来确定其传输的数据包分片的大小。但是,如果启用保留传入分片特征的功能,则 SRX 系列防火墙将检测并节省传入数据包分片的大小。

为了降低数据路径中数据包分段的可能性,SRX 系列防火墙会跟踪并调整该流的出口 MTU。它标识所有传入片段的最大大小。它将该信息与出口接口的现有 MTU 结合使用,以确定从出口接口发送的分段数据包的正确 MTU 大小。SRX 系列防火墙会对这两个数字进行比较。它采用较小的数字,并将其用于出口接口 MTU 大小。

使用命令 set security flow preserve-incoming-frag-size 配置设备,以启用考虑传入数据包分段大小的功能。

表 1 总结了如何确定 SRX 系列出口 MTU 大小。

表 1:如何确定退出 SRX 系列防火墙的分片的最终出口 MTU 大小

传入片段大小

现有出口 MTU 大小

最终出口 MTU 大小

如果最大的片段是

现有出口 MTU 大小

使用最大的传入片段大小。

如果最大的片段是

大于现有出口 MTU 大小

使用现有出口接口 MTU。

注意:

SRX 系列防火墙支持此功能。它支持直通流量和离开隧道的流量。它同时适用于 IPv4 和 IPv6 流量。

以下两个注意事项会影响片段大小:

  • 对于基于流的应用,如内容安全性和 ALG,即使未收到分片,应用本身也可以更改或重组数据包。在这种情况下,将使用现有出口接口 MTU。

  • 将路径 MTU 发现数据包传送到会话时,该会话的路径 MTU 将重置为路径 MTU 数据包建立的值。

TCP 代理短路

默认情况下,设备上会启用 TCP 代理短路。当没有用户(L7 策略实施插件/高级应用服务)对会话使用 TCP 代理感兴趣时,它会自动触发。成功建立 TCP 会话并实施策略后,设备会将会话转换为短路状态,从而允许后续数据包直接在客户端和服务器之间流动。

在初始握手阶段,设备保持完整的 TCP 代理行为,独立管理连接双方的 TCP 状态、序列号和确认。一旦会话被验证为合法且稳定,设备就不再代理序列号或重新传输数据流量。相反,它直接转发数据包,同时继续监控会话是否存在策略合规性和违反安全规定。

TCP 代理短路适用于需要强大 TCP 安全性和验证的部署,而没有完整 TCP 代理的长期性能开销。这在数据中心、服务提供商边缘和大型企业网络等高吞吐量环境中尤其有效。

TCP 代理短路的好处

  • 平衡的安全性与性能

  • 减少数据流量的处理开销和延迟。

  • 即使在连接短路后,也可以通过保持安全策略检查、会话跟踪和监控来保留策略实施。

变更历史表

是否支持某项功能取决于您使用的平台和版本。使用 功能资源管理器 确定您的平台是否支持某个功能。

发布
描述
15.1X49-D100
使用命令 set security flow preserve-incoming-frag-size 配置设备,以启用考虑传入数据包分段大小的功能。