Citrix ADC

无状态 NAT46

无状态 NAT46 功能可以通过 IPv4 到 IPv6 数据包转换(反之亦然)在 IPv4 和 IPv6 网络之间进行通信,而无需在 Citrix ADC 设备上维护任何会话信息。

对于无状态 NAT46 配置,设备将 IPv4 数据包转换为 IPv6,或将 IPv6 数据包转换为 RFC 6145 和 2765 中定义的 IPv4。

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

  • IPv4-IPv6 INAT 条目。一个 INat 条目,定义 IPv4 地址和 IPv6 地址之间的 1:1 关系。换句话说,设备上的 IPv4 地址将代表 IPv6 服务器侦听连接请求。此 IPv4 地址的 IPv4 请求数据包将转换为 IPv6 数据包,然后将 IPv6 数据包发送到 IPv6 服务器。

    设备将 IPv6 响应数据包转换为 IPv4 响应数据包,其源 IP 地址字段设置为 INat 条目中指定的 IPv4 地址。然后将转换的数据包发送到客户端。

  • NAT46 IPv6 前缀。在设备上配置的长度 96 位(128-32=96)的全局 IPv6 前缀。在 IPv4 数据包到 IPv6 数据包转换期间,设备会将已转换 IPv6 数据包的源 IP 地址设置为 NAT46 IPv6 前缀[96 位]和 IPv4 源地址的连接[32 位]在请求数据包中收到的。

    在 IPv6 数据包到 IPv4 数据包转换期间,设备会将已转换的 IPv4 数据包的目标 IP 地址设置为 IPv6 数据包的目标 IP 地址的最后 32 位。

考虑一个示例,其中企业在服务器 S1 上托管站点 www.example.com,该服务器具有 IPv6 地址。为了启用 IPv4 客户端和 IPv6 服务器 S1 之间的通信,Citrix ADC 设备 NS1 将使用无状态 NAT46 配置进行部署,其中包括服务器 S1 的 IPv4-IPv6 INATT 条目和 NAT46 前缀。INat 条目包括一个 IPv4 地址,设备可以代表 IPv6 服务器 S1 侦听来自 IPv4 客户端的连接请求。

stateless nat46

下表列出了此示例中使用的设置:

实体 名称
客户端的 IP 地址 Client_IPv4(仅供参考) 192.0.2.60
服务器的 IPv6 地址 SEVR_IPv6(仅供参考用途) 2001:DB8:5001::30
IPv6 服务器 S1 的 INat 条目中定义的 IPv4 地址 Map-Sevr-IPv4(仅供参考) 192.0.2.180
NAT 46 转换的 IPv6 前缀 NAT46_Prefix(仅供参考) 2001:DB8:90::

以下是此示例中的流量:

  1. IPv4 客户端 CL1 将请求数据包发送到 Citrix ADC 设备上的 Map-Sevr-IPv4 (192.0.2.180) 地址。
  2. 设备接收请求数据包,并在 NAT46 INATT 条目中搜索映射到映射到 Map-Sevr-IPv4 (192.0.2.180) 地址的 IPv6 地址。它找到了 Sevr-IPv6 (2001:DB8:5001::30) 地址。
  3. 设备创建一个已转换的 IPv6 请求数据包,其中包括:
    • 目标 IP 地址字段 = Sevr-IPv6 = 2001:DB8:5001::30
    • 源 IP 地址字段 = NAT 前缀(前 96 位)和客户端 IPv4(最后 32 位)的连接 = 2001:DB8:90::192.0.2.60
  4. 设备将转换的 IPv6 请求发送到 SEVR-IPv6。
  5. IPv6 服务器 S1 通过向 Citrix ADC 设备发送 IPv6 数据包来响应:
    • 目标 IP 地址字段 = NAT 前缀(前 96 位)和客户端 IPv4(最后 32 位)的连接 = 2001:DB8:90::192.0.2.60
    • 源 IP 地址字段 = Sevr-IPv6 = 2001:DB8:5001::30
  6. 设备接收 IPv6 响应数据包,并验证其目标 IP 地址是否与设备上配置的 NAT46 前缀匹配。由于目标地址与 NAT46 前缀匹配,因此设备将在 NAT46 INAT 条目中搜索与 Sevr-IPv6 地址 (2001:DB8:5001::30) 关联的 IPv4 地址。它找到了 Map-Sevr-IPv4 地址 (192.0.2.180)。
  7. 设备创建 IPv4 响应数据包,其中包含:
    • 目标 IP 地址字段 = 从 IPv6 响应的目标地址剥离 NAT46 前缀 = 客户端 _IPv4 (192.0.2.60)
    • 源 IP 地址字段 = Map-Sevr-IPv4 地址 (192.0.2.180)
  8. 设备将转换的 IPv4 响应发送到客户端 CL1。

无状态 NAT46 的局限性

以下限制适用于无状态 NAT46:

  • 不支持 IPv4 选项的转换。
  • 不支持 IPv6 路由标头的转换。
  • 不支持转换 IPv6 数据包的逐跳扩展标头。
  • 不支持 IPv4 数据包的 ESP 和 EH 标头的转换。
  • 不支持多播数据包的转换。
  • 不支持转换目标选项标头和源路由标头。
  • 不支持转换不包含 UDP 校验和的碎片 IPv4 UDP 数据包。

配置无状态 NAT46

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

  1. 创建启用无状态模式的 IPv4-IPv6 映射 INATT 条目。
  2. 创建 NAT46 IPv6 前缀。

CLI 过程

要使用 CLI 配置 INat 映射条目,请执行以下操作:

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

  • add inat <name> <publicIPv4> <privateIPv6> -mode STATELESS
  • show inat <name>

要使用 CLI 创建 NAT46 前缀,请执行以下操作:

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

  • set inatparam -nat46v6Prefix <ipv6_addr|*>
  • show inatparam

示例:

 > add inat exmpl-com-stls-nat46 192.0.2.180
2001:DB8:5001::30 -mode stateless
Done

> set inatparam -nat46v6Prefix 2001:DB8:90::/96
Done

GUI 程序

要使用 GUI 创建 INATE 映射条目:

  1. 导航到系统 > 网络 > 路由 > INat。

  2. 添加一个新的 INat 条目,或编辑现有的 INat 条目。

  3. 设置以下参数:

    • 姓名*
    • 公有 IP 地址*
    • 私有 IP 地址*(选中 IPv6 复选框并输入 IPv6 格式的地址。)
    • 模式(从下拉列表中选择无状态。)

    * 必填参数

要使用 GUI 创建 NAT46 前缀,请执行以下操作:

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

设置无状态 NAT46 的全局参数

该设备为无状态 NAT46 配置提供了一些可选的全局参数。

使用 CLI 为无状态 NAT46 设置全局参数:

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

  • set inatparam [-nat46IgnoreTOS ( YES NO )] [-nat46ZeroCheckSum ( ENABLED DISABLED )] [-nat46v6Mtu <positive_integer>] [-nat46FragHeader ( ENABLED DISABLED )]
  • show inatparam

示例:

> set inatparam -nat46IgnoreTOS YES -nat46ZeroCheckSum DISABLED -nat46v6Mtu 1400 -nat46FragHeader DISABLED
 Done

使用 GUI 设置无状态 NAT46 的全局参数:

导航到系统 > 网络,在 置”组中,单击配置 INat 参数

无状态 NAT46