1.NAT64和DNS64背景
在IPv6网络的发展中,最大的问题应该是IPv6与IPv4的不兼容,因此,两种不兼容网络之间的互访是无法实现的。 为了实现IPv6和IPv4的互访,互联网工程任务组(IETF )提前设计了NAT-PT的解决方案。 RFC2766、NAT-PT通过IPv6和IPv4的网络地址和协议转换,实现了IPv6网络和IPv4网络的双向互访。 但是,由于NAT-PT在实际的网络APP应用中面临着各种缺陷,建议不要使用IETF,因此被RFC4966废除了。
为了解决NAT-PT的各种缺陷,实现IPv6和IPv4之间的网络地址和协议转换技术,互联网互联任务组(IETF )重新设计了NAT64和DNS64技术这一新的解决方案
NAT64是一种有状态的网络地址和协议转换技术,通常仅支持IPv6网络端用户启动连接以访问IPv4端网络资源。 但是,NAT64通过手动配置静态映射关系,还支持IPv4网络主动发起和访问IPv6网络。 NAT64通过TCP、UDP和ICMP协议实现IPv6和IPv4的网络地址和协议转换。
DNS64主要与NAT64协同工作,主要将DNS查询信息中的a记录(IPv4地址)合成为AAAA记录(IPv6地址),并将合成的AAAA记录用户返回给IPv6端用户。 DNS64也解决了NAT-PT的DNS-ALG的缺陷。
NAT64通常与DNS64配合使用,不需要在IPv6客户端或IPv4服务器端进行更改。 NAT64解决了NAT-PT的大部分缺陷,同时协助DNS64协同工作,不需要NAT-PT的DNS-ALG等。
目前,NAT64和DNS64处于IETF草案阶段,尚未制定正式的RFC文档。 但是,由于IPv6的快速发展、APP应用场景的需求以及IPv6端网民的强烈需求,处于草拟阶段的NAT64和DNS64开始在互联网上部署APP应用。 NAT64也是IPv6网络发展初期的迁移解决方案,在IPv6发展前期广泛部署,后期随着IPv6网络的发展,逐渐退出历史舞台。
本文主要讨论DNS64和NAT64的基本原理和应用场景,与DNS64和NAT64协议的具体实现、协议规范和数据处理细节无关,希望深入了解NAT64和DNS64的网络技术人员或IPv6网络开发人员在本文之后
2. NAT64和DNS64网络部署场景NAT64和DNS64典型APP应用程序场景的网络配置图如下:
在上图中,DNS64Server和NAT64Router是完全独立的部分。 其中,64:FF9B:/96是DNS64的著名前缀,DNS64通常使用该前缀来执行从IPv4地址到IPv6地址的合成,同时该前缀也用作NAT64的转换前缀通常,在DNS64和NAT64中,前缀表示为pref64:/n,该前缀可以根据实际网络部署进行配置。 NAT-PT只支持固定的96位长度的转换前缀,而NAT64可以使用32、40、48、56、64或96个范围,每个长度的前缀转换规则也不完全相同。
当IPv6OnlyUser启动连接并访问常规IPv6站点时,流量与IPv6的默认路由匹配,并直接转发到IPv6Router处理。 相反,如果访问IPv4单协议栈服务器,将在DNS 64服务器上进行前缀合并,并将Pref64:/n网段上的业务路由转发到NAT64Router
3.NAT64和DNS64消息交换
DNS64和NAT64的消息交换过程如下图所示
在上图中,DNS64Server和NAT64Router是完全独立的部分。 其中,64:FF9B:/96是DNS64的著名前缀,DNS64通常使用该前缀来执行从IPv4地址到IPv6地址的合成,同时该前缀也用作NAT64的转换前缀通常,在DNS64和NAT64中,前缀表示为pref64:/n,该前缀可以根据实际的网络部署进行配置。 NAT-PT只支持固定的96位长度的转换前缀,而NAT64可以使用32、40、48、56、64或96个范围,每个长度的前缀转换规则也不完全相同。
当IPv6OnlyUser启动连接并访问常规IPv6站点时,流量与IPv6的默认路由匹配,并直接转发到IPv6Router处理。 相反,如果访问IPv4单协议栈服务器,将在DNS 64服务器上进行前缀合并,并将Pref64:/n网段上的业务路由转发到NAT64Router