ADC

有状态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设备考虑一个传入的IPv6数据包进行NAT64转换:

  • 入方向的IPv6报文命中NAT64绑定的ACL6规则。
  • IPv6报文的目的地址匹配NAT64的IPv6前缀。

当Citrix ADC设备接收到的IPv6请求数据包与NAT64规则中定义的ACL6匹配且数据包的目的IP与NAT64 IPv6前缀匹配时,Citrix ADC设备将考虑IPv6数据包进行转换。

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

考虑这样一个例子,一个企业在服务器S1上托管站点www.example.com,该服务器有一个IPv4地址。为了实现IPv6客户端和IPv4服务器S1之间的通信,Citrix ADC设备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. Citrix ADC设备接收请求数据包。如果请求报文命中NAT64规则中定义的ACL6,并且报文的目的IP地址与NAT64 IPv6前缀匹配,则Citrix ADC考虑转换IPv6报文。

  3. 设备创建一个转换后的IPv4请求包:

    • 目的IP地址字段,包含从IPv6请求的目的地址剥离的NAT64前缀(Sevr_IPv4 = 192.0.2.60)
    • 源IP地址字段,包含一个绑定到Netprofile-1的IPv4地址(在本例中为192.0.2.100)
  4. Citrix ADC设备为这个流创建一个NAT64会话,并将转换后的IPv4请求发送到服务器S1。

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

    • 目的IP地址字段包含192.0.2.100
    • 包含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 (Stream Control Transmission Protocol)、DCCP (Datagram拥塞控制协议)和IPSec的报文不进行转换。

配置有状态NAT64

在Citrix ADC设备上创建有状态NAT64配置所需的实体包括以下步骤:

  1. 添加一条动作为ALLOW的ACL6规则。
  2. 添加ipset,用于绑定多个IP地址。
  3. 添加netprofile,并绑定ipset。如果只绑定一个IP地址,则不需要创建ipset实体。此时,可以直接将IP地址与netprofile绑定。
  4. 添加NAT64规则,包括将ACl6规则和netprofile绑定到NAT64规则。
  5. 添加NAT64 IPv6前缀。

CLI程序

使用实例通过CLI添加ACL6规则。

在命令提示符下,输入:

  • Add ns acl6

使用实例通过CLI添加IPset并绑定多个ip。

在命令提示符下,输入:

  • 添加ipset
  • 绑定ipset

使用实例通过CLI添加netprofile。

在命令提示符下,输入:

  • add netprofile -srcIP . add netprofile

使用实例通过CLI添加NAT64规则。

在命令提示符下,输入:

  • add nat64 -netProfile

使用实例通过CLI添加NAT64字冠。

在命令提示符下,输入:

  • 设置ipv6 -natprefix * >

例子:

> 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 ipset ipset -1 Done > bind ipset 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 > set ipv6 -natprefix 2001:DB8:300::/96 Done 

GUI程序

使用GUI添加NAT64规则:

进入“System > Network > Routes > NAT64”和一条新的NAT64规则,或编辑已有规则。

使用GUI添加NAT64前缀:

进入“System > Network”,在“Settings”区域框中单击“Configure INAT Parameters”,设置“Prefix”参数。

有状态NAT64翻译