有状态的 NAT64 转换

有状态 NAT64 功能可以通过 IPv6 到 IPv4 数据包转换(反之亦然)在 IPv6 客户端和 IPv4 服务器之间进行通信,同时在 Citrix ADC 设备上维护会话信息。

Citrix ADC 设备上的有状态 NAT64 配置具有以下组件:

  • NAT64 规则— 由 ACL6 规则和网络配置文件组成的条目,其中包括 Citrix ADC 拥有的 SNIP 地址池。
  • NAT64 IPv6 前缀— 在设备上配置的长度 96 位(128-32=96)的全局 IPv6 前缀。 注意:目前 Citrix ADC 设备仅支持一个前缀,通常用于所有 NAT 64 规则。

满足以下所有条件时,Citrix ADC 设备会考虑 NAT64 转换的传入 IPv6 数据包:

  • 传入 IPv6 数据包与绑定到 NAT64 规则的 ACL6 规则相匹配。
  • IPv6 数据包的目标 IP 地址与 NAT64 IPv6 前缀匹配。

如果 Citrix ADC 设备收到的 IPv6 请求数据包与 NAT64 规则中定义的 ACL6 匹配,且数据包的目标 IP 与 NAT64 IPv6 前缀匹配,Citrix ADC 设备将考虑要转换的 IPv6 数据包。

设备将此 IPv6 数据包转换为 IPv4 数据包,其源 IP 地址与绑定到 NAT64 规则中定义的网络配置文件的 IP 地址之一匹配,目标 IP 地址由 IPv6 请求数据包的最后 32 位组成。Citrix ADC 设备为此特定流创建 NAT64 会话,并将数据包转发到 IPv4 服务器。来自 IPv4 服务器的后续响应以及来自 IPv6 客户端的请求由设备根据特定 NAT64 会话中的信息进行相应转换。

考虑一个示例,其中企业在服务器 S1 上托管站点 www.example.com,该服务器具有 IPv4 地址。为了启用 IPv6 客户端与 IPv4 服务器 S1 之间的通信,Citrix ADC 设备 NS1 将使用包含 NAT64 规则和 NAT64 前缀的有状态 NAT64 配置进行部署。通过将 NAT64 IPv6 前缀[96 位]和 IPv4 源地址连接起来形成服务器 S1 的映射 IPv6 地址[32 位]。然后在 DNS 服务器中手动配置此映射的 IPv6 地址。IPv6 客户端从 DNS 服务器获取映射的 IPv6 地址,以便与 IPv4 服务器 S1 进行通信。

nat64

下表列出了此示例中使用的设置:有状态的 NAT64 转移示例设置

以下是此示例中的流量:

  1. IPv6 客户端 CL1 将请求数据包发送到 Map-Sevr-IPv6 (2001:DB8:300::192.0.2.60) 地址。

  2. Citrix ADC 设备接收请求数据包。如果请求数据包与 NAT64 规则中定义的 ACL6 匹配,并且数据包的目标 IP 地址与 NAT64 IPv6 前缀匹配,Citrix ADC 将考虑要转换的 IPv6 数据包。

  3. 设备创建一个已转换的 IPv4 请求数据包,其中包括:

    • 从 IPv6 请求的目标地址中剥离包含 NAT64 前缀的目标 IP 地址字段 (SEVR_IPv4 = 192.0.2.60)
    • 源 IP 地址字段包含绑定到网络配置文件 1 的 IPv4 地址之一(在本例中为 192.0.2.100)
  4. Citrix ADC 设备为此流创建 NAT64 会话,并将转换的 IPv4 请求发送到服务器 S1。

  5. IPv64 服务器 S1 通过向 Citrix ADC 设备发送 IPv4 数据包来响应:

    • 包含 192.0.2.100 的目标 IP 地址字段
    • 源 IP 地址字段,其中包含 Sevr_IPv4 的 IP 地址 (192.0.2.60)
  6. 设备接收 IPv4 响应数据包,搜索所有会话条目,并发现 IPv6 响应数据包与在步骤 4 中创建的 NAT64 会话条目相匹配。设备会考虑要转换的 IPv4 数据包。

  7. 设备创建一个已转换的 IPv6 响应数据包,其中包括:

    • 目标 IP 地址字段 = Client_IPv6=2001:DB8:5001::30
    • 源 IP 地址字段 = 连接 NAT64 前缀(前 96 位)和 Sevr_IPv4(最后 32 位)= 2001:DB8:300::192.0.2.60
  8. 设备将转换的 IPv6 响应发送到客户端 CL1。

有状态的 NAT64 的局限性

以下限制适用于有状态的 NAT64:

  • 不支持 IPv4 选项的转换。
  • 不支持 IPv6 路由标头的转换。
  • 不支持转换 IPv6 数据包的逐跳扩展标头。
  • 不支持 IPv6 数据包的 ESP 和 EH 标头的转换。
  • 不支持多播数据包的转换。
  • 不会转换流控制传输协议 (SCTP)、数据报拥塞控制协议 (DCCP) 和 IPsec 的数据包。

配置有状态 NAT64

在 Citrix ADC 设备上创建有状态 NAT64 配置所需的实体涉及以下过程:

  1. 添加具有操作允许的 ACL6 规则。
  2. 添加绑定多个 IP 地址的 ipset。
  3. 添加一个网络配置文件并将 ipset 绑定到它。如果您只想绑定一个 IP 地址,则不需要创建 ipset 实体。在这种情况下,将 IP 地址直接绑定到网络配置文件。
  4. 添加 NAT64 规则,其中包括将 ACL6 规则和网络配置文件绑定到 NAT 64 规则。
  5. 添加 NAT64 IPv6 前缀。

CLI 过程

要使用 CLI 添加 ACL6 规则,请执行以下操作:

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

  • add ns acl6 <acl6name> <acl6action> …

要使用 CLI 添加 IPSet 并将多个 IP 绑定到它:

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

  • add ipset <name>
  • bind ipset <name> <IPaddress …>

要使用 CLI 添加网络配置文件,请执行以下操作:

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

  • add netprofile <name> -srcIP <IPaddress or IPset>

要使用 CLI 添加 NAT64 规则,请执行以下操作:

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

  • add nat64 <name> <acl6name> -netProfile <string>

要使用 CLI 添加 NAT64 前缀,请执行以下操作:

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

  • set ipv6 -natprefix <ipv6_addr|*>

示例:

 > add acl6 ACL6-1 ALLOW -srcIPv6 2001:DB8:5001::30
 Done

> apply acls6
 Done

> add ip 192.0.2.100 255.255.255.0 –type SNIP
 Done

> add ip 192.0.2.102 255.255.255.0  –type SNIP
 Done

> add ipset IPset-1
 Done

> bind ipset IPset-1 192.0.2.100 192.0.2.102
IPAddress "192.0.2.100" bound
IPAddress "192.0.2.102" bound
 Done

> add netprofile Netprofile-1 -srcIP IPset-1
 Done

> add nat64 NAT64-1 ACL6-1 -netprofile Netprofile-1
 Done

> set ipv6 -natprefix 2001:DB8:300::/96
 Done

GUI 程序

要使用 GUI 添加 NAT64 规则,请执行以下操作:

导航到“系统”>“网络”>“路由”>“NAT64”和新的 NAT64 规则,或者编辑现有规则。

要使用 GUI 添加 NAT64 前缀,请执行以下操作:

导航到“系统”>“网络”,在“设 置”组中,单击“配置 INat 参数”,然后设置 前缀 参数。

有状态的 NAT64 转换