原文:
//bbsmax.ikafan.com/static/L3Byb3h5L2h0dHBzL2Jsb2cuY3Nkbi5uZXQvemhhbmdqaWUxOTg5L2FydGljbGUvZGV0YWlscy81MTQ2NDI1MQ==.jpg
1.NAT64与 DNS64背景
在 IPv6网络的发展过程中,面临最大的问题应该是 IPv6与 IPv4的不兼容性,因此无法实现二种不兼容网络之间的互访。为了实现 IPv6与IPv4的互访,IETF(互联网工程任务组)在早期设计了 NAT-PT的解决方案:RFC2766,NAT-PT通过 IPv6与 IPv4的网络地址与协议转换,实现了 IPv6网络与 IPv4网络的双向互访。但 NAT-PT在实际网络应用中面临各种缺陷, 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的快速发展、应用场景的需求、IPv6侧网络用户的强烈需求,处于草案阶段的 NAT64与 DNS64已经正式开始在互联网中部署应用了。NAT64也只是 IPv6网络发展初期的一种过渡解决方案,在 IPv6发展前期会被广泛部署应用,而后期则会随着 IPv6网络的发展壮大,逐步退出历史舞台。
本文主要讨论 DNS64与 NAT64的基本原理与应用场景,不涉及 DNS64与 NAT64协议的具体实现、协议规范及数据处理细节,希望深入了解 NAT64及 DNS64的网络技术人员或 IPv6网络开发人员可直接参考本文后面的 IETF草案链接。
2. NAT64与 DNS64的网络部署场景 NAT64与 DNS64的常见应用场景组网如下图所示:
在上图中,、DNS64Server与NAT64Router是完全独立的部分。其中64:FF9B::/96为DNS64的知名前缀,DNS64一般默认使用此前缀进行IPv4地址到IPv6地址的合成,同时该前缀也作为NAT64的转换前缀,实现匹配该前缀的流量才做NAT64转换。一般在DNS64与NAT64中该前缀被表示为pref64::/n,该前缀可根据实际网络部署进行配置。在NAT-PT中,转换的前缀只支持固定96位长度,而NAT64中则可使用:32,40,48,56,64或96等范围,每种长度的前缀转换规则也不完全相同。
当IPv6OnlyUser发起连接访问普通IPv6网站,流量将会匹配IPv6默认路由而直接转发至IPv6Router处理。而访问的是IPv4单协议栈的服务器时,将经DNS64Server进行前缀合成,Pref64::/n网段的流量将被路由转发至NAT64Router上,从而实现IPv6与IPv4地址和协议的转换,访问IPv4网络中的资源。
3.NAT64与DNS64的报文交互
DNS64与NAT64的报文交互过程如下图所示
在上图中,、DNS64Server与NAT64Router是完全独立的部分。其中64:FF9B::/96为DNS64的知名前缀,DNS64一般默认使用此前缀进行IPv4地址到IPv6地址的合成,同时该前缀也作为NAT64的转换前缀,实现匹配该前缀的流量才做NAT64转换。一般在DNS64与NAT64中该前缀被表示为pref64::/n,该前缀可根据实际网络部署进行配置。在NAT-PT中,转换的前缀只支持固定96位长度,而NAT64中则可使用:32,40,48,56,64或96等范围,每种长度的前缀转换规则也不完全相同。
当IPv6OnlyUser发起连接访问普通IPv6网站,流量将会匹配IPv6默认路由而直接转发至IPv6Router处理。而访问的是IPv4单协议栈的服务器时,将经DNS64Server进行前缀合成,Pref64::/n网段的流量将被路由转发至NAT64Router上,从而实现IPv6与IPv4地址和协议的转换,访问IPv4网络中的资源。