IPsec 协议的应用层网关

如果两个网络设备(例如,客户端和服务器)之间的通信使用 IPsec 协议,IKE 通信(通过 UDP)使用端口字段,但封装安全有效负载 (ESP) 通信不使用端口字段。如果路径上的 NAT 设备将相同的 NAT IP 地址(但不同的端口)分配给同一目标的两个或多个客户端,则 NAT 设备无法区分和正确路由返回的 ESP 流量不包含端口信息。因此,在 NAT 设备上 IPsec ESP 通信失败。

支持 NAT 遍历 (NAT-T) 的 IPsec 端点检测 IKE 阶段 1 期间是否存在中间 NAT 设备,并切换到 UDP 端口 4500,用于所有后续 IKE 和 ESP 流量(在 UDP 中封装 ESP)。如果没有对等 IPsec 端点上的 NAT-T 支持,IPsec 受保护的 ESP 流量在不进行任何 UDP 封装的情况下进行传输。因此,在 NAT 设备上 IPsec ESP 通信失败。

Citrix ADC 设备支持用于大型 NAT 配置的 IPsec 应用程序层 Gateway (ALG) 功能。IPsec ALG 处理 IPsec ESP 流量并维护会话信息,以便当 IPsec 端点不支持 NAT-T(ESP 流量的 UDP 封装)时,流量不会失败。

IPsec ALG 的工作原理

IPsec ALG 监视客户端和服务器之间的 IKE 流量,并且在任何给定时间只允许客户端和服务器之间进行一次 IKE 第 2 阶段消息交换。

一旦收到特定流的双向 ESP 数据包,IPsec ALG 会为此特定流创建 NAT 会话,以便后续 ESP 流量能够顺利流动。ESP 流量由安全参数索引 (SPI) 标识,这些索引对于流和每个方向都是唯一的。IPsec ALG 使用 ESP SPI 代替源端口和目标端口来执行大规模 NAT。

如果一个门没有接到任何交通,它会超时。两个门超时后,允许进行另一个 IKE 第 2 阶段交换。

IPsec ALG 超时

Citrix ADC 设备上的 IPsec ALG 具有三个超时参数:

  • ESP 门超时。如果客户端与服务器之间没有交换双向 ESP 通信,Citrix ADC 设备在给定服务器的特定 NAT IP 地址上阻止特定客户端的 IPsec ALG 门的最长时间。
  • IKE 会话超时。如果该会话没有 IKE 流量,Citrix ADC 设备在删除 IKE 会话信息之前保留该会话信息的最长时间。
  • ESP 会话超时。如果该会话没有 ESP 流量,Citrix ADC 设备在删除 ESP 会话信息之前保留 ESP 会话信息的最长时间。

配置 IPsec ALG 之前需要考虑的事项

在开始配置 IPsec ALG 之前,请考虑以下几点:

  • 您必须了解 IPsec 协议的不同组件。
  • DS-Lite 和大型 NAT64 配置不支持 IPsec ALG。
  • 发夹 LSN 流不支持 IPsec ALG。
  • IPsec ALG 不适用于 RNAT 配置。
  • Citrix ADC 群集不支持 IPsec ALG。

配置步骤

在 Citrix ADC 设备上为大型 NAT44 配置 IPsec ALG 包含以下任务:

  • 创建 LSN 应用程序配置文件并将其绑定到 LSN 配置。配置应用程序配置文件时设置以下参数:
    • 协议 = UDP
    • IP 池 = 已配对
    • Port=500

将应用程序配置文件绑定到 LSN 配置的 LSN 组。有关创建 LSN 配置的说明,请参阅LSN 的配置步骤

  • 创建 IPsec ALG 配置文件。IPsec 配置文件包括各种 IPsec 超时,例如 IKE 会话超时、ESP 会话超时和 ESP 门超时。将 IPsec ALG 配置文件绑定到 LSN 组。IPsec ALG 配置文件具有以下默认设置:
    • IKE 会话超时 = 60 分钟
    • ESP 会话超时 = 60 分钟
    • ESP 门超时 = 30 秒
  • IPsec ALG 配置文件绑定到 LSN 配置。当您将 IPsec ALG 配置文件绑定到 LSN 配置时,为 LSN 配置启用 IPsec ALG。通过将 IPsec ALG 配置文件设置为 LSN 组中创建的配置文件的名称,将 IPsec ALG 配置文件绑定到 LSN 配置。IPsec ALG 配置文件可以绑定到多个 LSN 组,但一个 LSN 组只能有一个 IPsec ALG 配置文件。

使用命令行界面创建 LSN 应用程序配置文件

在命令提示窗口中,键入:

add lsn appsprofile <appsprofilename> UDP -ippooling PAIRED

show lsn appsprofile

使用命令行界面将目标端口绑定到 LSN 应用程序配置文件

在命令提示窗口中,键入:

bind lsn appsprofile <appsprofilename> <lsnport>

show lsn appsprofile

使用命令行界面将 LSN 应用程序配置文件绑定到 LSN 组

在命令提示窗口中,键入:

bind lsn group <groupname> -appsprofilename <string>

show lsn group

使用 CLI 创建 IPsec ALG 配置文件

在命令提示窗口中,键入:

add ipsecalg profile <name> [-ikeSessionTimeout <positive_integer>] [-espSessionTimeout <positive_integer>] [-espGateTimeout <positive_integer>] [-connfailover ( ENABLED | DISABLED)

show ipsecalg profile <name>

使用 CLI 将 IPsec ALG 配置文件绑定到 LSN 配置文件

在命令提示窗口中,键入:

bind lsn group <groupname> -poolname <string> - ipsecAlgProfile <string>

show lsn group <name>

使用 GUI 创建 LSN 应用程序配置文件并将其绑定到 LSN 配置

导航到“系统”>“大规模 NAT”>“配置 件”,单击“应用程序”选项卡,添加 LSN 应用程序配置文件并将其绑定到 LSN 组。

使用 GUI**创建 IPsec ALG 配置文件

导航到“系统”>“大规模 NAT”>“ 置文件”,单击“IPSEC ALG”选项卡,然后添加 IPsec ALG 配置文件。

使用 GUI**将 IPsec ALG 配置文件绑定到 LSN 配置文件

  1. 导航到 系统 > 大规模 NAT > LSN 组 ,打开 LSN 组。
  2. 高级设置中,单击 + IPsec ALG 配置文件将创建的 IPsec ALG 配置文件绑定到 LSN 组。

示例配置

在以下示例大型 NAT44 配置中,为 192.0.2.0/24 网络中的订阅者启用 IPsec ALG。IPsec ALG 配置文件 IPSEALGProfile-1 具有各种 IPsec 超时设置,并绑定到 LSN 组 LSN-1。

示例配置:

add lsn client LSN-CLIENT-1

Done

bind lsn client LSN-CLIENT-1 -network 192.0.2.0 -netmask 255.255.255.0

Done

add lsn pool LSN-POOL-1

Done

bind lsn pool LSN-POOL-1 203.0.113.3-203.0.113.9

Done

add lsn appsprofile LSN-APPSPROFILE-1 UDP -ippooling PAIRED

Done

bind lsn appsprofile LSN-APPSPROFILE-1 500

Done

add ipsecalg profile  IPSECALGPROFILE-1 -ikeSessionTimeout 45 –espSessionTimeout 40 –espGateTimeout 20 -connfailover ENABLED

Done

bind lsn group LSN-GROUP-1 -appsprofilename LSN-APPSPROFILE-1

Done

bind lsn group LSN-GROUP-1 -poolname LSN-POOL-1

Done

bind lsn group LSN-GROUP-1 - ipsecAlgProfile IPSECALGPROFILE-1

Done