有状态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翻译示例设置.
本例中的交通流如下:
IPv6客户端CL1向Map-Sevr-IPv6 (2001:DB8:300::192.0.2.60)地址发送请求报文。
Citrix ADC设备接收请求数据包。如果请求报文命中NAT64规则中定义的ACL6,并且报文的目的IP地址与NAT64 IPv6前缀匹配,则Citrix ADC考虑转换IPv6报文。
设备创建一个转换后的IPv4请求包:
- 目的IP地址字段,包含从IPv6请求的目的地址剥离的NAT64前缀(Sevr_IPv4 = 192.0.2.60)
- 源IP地址字段,包含一个绑定到Netprofile-1的IPv4地址(在本例中为192.0.2.100)
Citrix ADC设备为这个流创建一个NAT64会话,并将转换后的IPv4请求发送到服务器S1。
IPv64服务器S1通过向Citrix ADC设备发送IPv4数据包来响应:
- 目的IP地址字段包含192.0.2.100
- 包含sevr_ipv4地址的源IP地址字段(192.0.2.60)
设备接收IPv4响应报文,搜索所有会话条目,发现IPv6响应报文与步骤4中创建的NAT64会话条目匹配。设备考虑IPv4数据包进行转换。
设备创建一个转换后的IPv6响应包:
- 目的IP地址字段=Client_IPv6=2001:DB8:5001::30
- 源IP地址字段= NAT64前缀(前96位)和Sevr_IPv4(后32位)的拼接=2001:DB8:300::192.0.2.60
设备将转换后的IPv6响应发送到客户机CL1。
有状态NAT64的局限性
以下限制适用于有状态NAT64:
- 不支持转换IPv4选项。
- 不支持IPv6路由头转换。
- 不支持IPv6报文的逐跳扩展头转换。
- 不支持IPv6报文的ESP和EH报头转换。
- 不支持组播报文的转换。
- SCTP (Stream Control Transmission Protocol)、DCCP (Datagram拥塞控制协议)和IPSec的报文不进行转换。
配置有状态NAT64
在Citrix ADC设备上创建有状态NAT64配置所需的实体包括以下步骤:
- 添加一条动作为ALLOW的ACL6规则。
- 添加ipset,用于绑定多个IP地址。
- 添加netprofile,并绑定ipset。如果只绑定一个IP地址,则不需要创建ipset实体。此时,可以直接将IP地址与netprofile绑定。
- 添加NAT64规则,包括将ACl6规则和netprofile绑定到NAT64规则。
- 添加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”参数。