NAT64与DNS64背景

在IPv6演进过程中,网络侧的IPv6 Ready程度较高,但是业务侧IPv6化还不乐观,因此解决IPv6网络与IPv4网络的互访,已经成为目前网络建设者关注的重点,特别是IPv6用户访问IPv4服务器的场景。

随着IPv4地址池的耗尽,企业和蜂窝网络提供商正越来越多的部署IPv6 DNS64和NAT64网络。

为了解决 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草案链接。

NAT64与 DNS64的网络部署场景 NAT64与 DNS64的常见应用场景组网如下图所示
image.jpeg
在上图中,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网络中的资源。

注:简单的说就是通过一个路由器和一个DNS服务器来代理用户的IPV6流量,DNS服务器就是用于返回标识域名,哪些IP的流量是需要转换的,通过IP前缀来给流量打标记

NAT64与DNS64的报文交互

DNS64与NAT64的报文交互过程如下图所示: :::info WCYTIP:如下的流程中:

  1. 先请求了IPV6域名
  2. 没有返回
  3. 再请求IPV4域名
  4. 有结果返回
  5. 将IPV4的结果转换为IPV6的结果返回,通过添加了特殊的 64:FF9B::/96 NAT64前缀标识
  6. 然后给PC返回了IPV6的解析结果,PC访问IPV6地址
  7. NAT64路由器识别相应的NAT64前缀,做NAT64代理,代理访问IPV4网站
  8. 这样对内的话就保持了全IPV6,对外实际还是IPV4 ::: image.jpeg

  9. PC请求域名

  10. 域名对应的IPV6没有
  11. 域名对应的IPV4有,DNS64则拼装成一个特殊的IPV6地址返回
  12. 特殊的IPV6能被NAT64的路由器识别,就又可以转换成对应的IPV4
  13. 这样便有NAT64来实现IPV6地址到IPV4地址的映射转换了

image.jpeg
image.jpeg