ADC

有状态 NAT64 转换

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

NetScaler 设备上的有状态 NAT64 配置包含以下组件:

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

当满足以下所有条件时,NetScaler 设备会考虑将传入的 IPv6 数据包进行 NAT64 转换:

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

当 NetScaler 设备收到的 IPv6 请求数据包与 NAT64 规则中定义的 ACL6 匹配并且该数据包的目标 IP 与 NAT64 IPv6 前缀相匹配时,NetScaler 设备会考虑 IPv6 数据包进行转换。

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

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

nat64

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

以下是此示例中的流量:

  1. IPv6 客户端 CL1 向 map-sevr-IPv6 (2001:DB8:300::192.0.2.60) 地址发送请求数据包。

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

  3. 设备使用以下内容创建转换后的 IPv4 请求数据包:

    • 包含从 IPv6 请求的目标地址中删除的 NAT64 前缀的目标 IP 地址字段 (sevr_IPv4 = 192.0.2.60)
    • 源 IP 地址字段包含绑定到 Netprofile-1 的 IPv4 地址之一(在本例中为 192.0.2.100)
  4. NetScaler 设备为此流程创建 NAT64 会话,并将转换后的 IPv4 请求发送到服务器 S1。

  5. IPv64 服务器 S1 的响应是向 NetScaler 设备发送 IPv4 数据包,内容为:

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

  7. 设备使用以下内容创建转换后的 IPv6 响应数据包:

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

Statelful NAT64 的局限性

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

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

配置 Stateful NAT64

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

  1. 添加操作为“允许”的 ACL6 规则。
  2. 添加绑定多个 IP 地址的 ipset。
  3. 添加网络配置文件并将 ipset 绑定到它。如果您只想绑定一个 IP 地址,则无需创建 ipset 实体。在这种情况下,将 IP 地址直接绑定到 netprofile。
  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
<!--NeedCopy-->

GUI 程序

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

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

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

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

有状态 NAT64 转换