NAT64前缀是长度为32、40、48、56、64或96位的IPv6地址前缀,用于在NAT46/NAT64转换过程中构造IPv4节点在IPv6网络中的地址,实现IPv4网络与IPv6网络之间的通信。IPv4侧发起访问时,设备可利用NAT64前缀将报文的源IPv4地址转换为IPv6地址;IPv6侧发起访问时,设备可根据NAT64前缀从报文的目的IPv6地址中提取出转换后的IPv4地址。
图1-1 不同NAT64前缀长度对应的IPv6地址格式
说明
PL(Prefix Length)表示前缀长度。
以IPv4地址为192.168.1.10,NAT前缀为3001::/64为例,该IPv4地址对应的IPv6地址为3001:0000:0000:0000:00C0:A801:0A00:0000,即3001::C0:A801:A00:0。
NAT-PT通过IPv6与IPv4的网络地址与协议转换,实现了IPv6网络与IPv4网络的互联互通。但NAT-PT在实际的网络应用中存在较大局限性,如不能转换IPv4报文头的可选项部分、缺少端到端的安全性等。为了解决NAT-PT中的各种缺陷,同时实现IPv6与IPv4之间的网络地址与协议转换技术,IETF设计了新的解决方案:NAT64与DNS64技术。
NAT64分为动态和静态两种方式:
l 动态NAT64
动态NAT64只适用于IPv6网络主动发起连接访问IPv4网络(如IPv6用户访问IPv4服务器)的场景。
图1-2 动态NAT64转换工作过程举例
以IPv6用户访问IPv4服务器为例,动态NAT64转换的业务流程如下:
(1) IPv6用户向DNS64服务器发起AAAA请求(www.examplev4.com),希望获取IPv4服务器域名对应的IPv6地址。
(2) DNS64收到请求报文后,对AAAA请求进行解析。通过解析发现此服务地址为IPv4地址,根据配置的NAT64前缀(64:ff9b::/96),合成NAT64地址(64:ff9b::0101:0101),然后发给IPv6用户,完成地址解析。
(3) IPv6用户收到DNS64的回复报文后,以解析的地址作为目的地址向IPv4服务器发起访问。
(4) NAT64设备收到用户发出的IPv6报文后,根据NAT64前缀提取出IPv6报文中的IPv4地址(1.1.1.1),作为IPv4报文的目的地址;然后根据NAT64策略配置的映射关系,从NAT地址池中取出一个地址(2.1.1.2)作为IPv4报文的源地址,将IPv6报文转换为IPv4报文。
(5) 完成IPv6报文到IPv4报文的转换后,NAT64设备按照正常的转发流程将报文发送给IPv4网络中的服务器;同时,生成会话表,将IPv6地址与IPv4地址的映射关系保存在设备中。
(6) IPv4服务器收到报文后,将回复响应报文。NAT64设备接收到IPv4服务器的响应报文后,根据会话表所记录的映射关系将IPv4报文转换为IPv6报文,发送给IPv6用户。
l 静态NAT64
静态NAT64转换通过静态配置IPv6和IPv4地址之间的映射关系,使IPv6到IPv4、IPv4到IPv6的流量都能够触发创建会话表,所以除IPv6网络主动访问IPv4网络的场景外,静态NAT64转换方式也常被用于实现IPv4网络主动访问IPv6网络场景下的NAT46转换。
图1-3 静态NAT64转换工作过程举例
以IPv4用户访问IPv6服务器为例,静态NAT64转换的业务流程如下:
(1) IPv4用户向DNS服务器发起A请求(www.examplev6.com),获取IPv6服务器域名对应的IPv4地址2.1.1.2(域名与地址关系通常已提前在DNS服务器上设定好);然后以该地址为目的地址,向IPv6服务器发起访问。
(2) NAT64设备收到用户发出的IPv4报文后,根据地址转换策略中事先设置好的静态映射关系,把报文的目的IPv4地址转换成对应的IPv6地址,以此IPv6地址作为IPv6报文的目的地址;并将源IPv4地址与设置好的NAT64前缀合成IPv6报文中的源地址(3003:0000:0000:0000:0001:0101:0100:0000),完成IPv4报文到IPv6报文的转换。
(3) 完成IPv4报文到IPv6报文的转换后,NAT64设备按照正常的转发流程将报文发送给IPv6网络中的服务器;同时,生成会话表,将IPv4地址与IPv6地址的映射关系保存在设备中。
(4) IPv6服务器收到报文后,将回复响应报文。NAT64设备接收到IPv6服务器的响应报文后,根据会话表所记录的映射关系将IPv6报文转换为IPv4报文,然后发送给IPv4用户。