NAT64与DNS64基本原理概述

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的常见应用场景组网如下图所示:

在上图中,、DNS64 Server与NAT64 Router是完全独立的部分。其中64:FF9B::/96为DNS64的知名前缀,DNS64一般默认使用此前缀进行IPv4地址到IPv6地址的合成,同时该前缀也作为NAT64的转换前缀,实现匹配该前缀的流量才做NAT64转换。一般在DNS64与NAT64中该前缀被表示为pref64::/n,该前缀可根据实际网络部署进行配置。在NAT-PT中,转换的前缀只支持固定96位长度,而NAT64中则可使用:32, 40, 48, 56, 64 或96等范围,每种长度的前缀转换规则也不完全相同。
    当IPv6 Only User发起连接访问普通IPv6网站,流量将会匹配IPv6默认路由而直接转发至IPv6 Router处理。而访问的是IPv4单协议栈的服务器时,将经DNS64 Server进行前缀合成,Pref64::/n网段的流量将被路由转发至NAT64 Router上,从而实现IPv6与IPv4地址和协议的转换,访问IPv4 网络中的资源。

3.NAT64与DNS64的报文交互

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

假定的网络地址结构:
IPv6 Only Client: 2001::1234::1234
Pref64::/n :  64:FF9B::/96
NAT64 Public IPv4 Address:22.22.22.22
WWW.IPV6BBS.CN  IPv4 Address:11.11.11.11

4.NAT64与DNS64相关协议标准

NAT64:Stateful NAT64: Network Address and Protocol Translation from IPv6 Clients to IPv4 Servers
draft-ietf-behave-v6v4-xlate-stateful-12:
http://datatracker.ietf.org/doc/ ... 6v4-xlate-stateful/

DNS64: DNS extensions for Network Address Translation from IPv6 Clients to IPv4 Servers
draft-ietf-behave-dns64-11:
http://datatracker.ietf.org/doc/draft-ietf-behave-dns64/

与此相关的文档:
1.RFC 6052:IPv6 Addressing of IPv4/IPv6 Translators
链接地址:http://www.rfc-editor.org/rfc/rfc6052.txt

2.IETF Draft文档:draft-ietf-behave-v6v4-xlate-23
IP/ICMP Translation Algorithm 
链接地址:http://datatracker.ietf.org/doc/draft-ietf-behave-v6v4-xlate/
同时该Draft成为正式RFC后将废除SIIT [RFC 2765]

3.IETF Draft文档:draft-ietf-behave-v6v4-framework-10
Framework for IPv4/IPv6 Translation
链接地址:http://datatracker.ietf.org/doc/draft-ietf-behave-v6v4-framework/

本文档会更新与修改,同时逐步对NAT64及DNS64的相关细节部分进行完善补充!

2010.10.14 :发布NAT64与DNS64基本原理概述V1.0
2010.12.12 :补充NAT64相关的算法及IETF  RFC/Draft文档!

 

NAT64与DNS64基本原理概述V1.0:发布于2010.10.14
本文档会更新与修改,同时逐步对NAT64及DNS64的相关细节部分进行完善补充,V1.0介绍的细节比较少!

 
 
 

技术背景:

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网络的发展壮大,逐步退出历史舞台。

目前互联网大部分内容只对IPv4可用,在互联网内容迁移到IPv6的过渡期,IPv6终端用户也需要访问IPv4内容,NAT64和DNS64技术提供这种服务。

NAT64和DNS64技术被运营商用来为IPv6终端用户提供IPv4内容访问,其它的技术还有DS-Lite等。

益处:

提供IPv6客户端对IPv4内容的访问

无需改造已有IPv4基础设施

运营商 NAT64 和 DNS64 解决方案

NAT64 and DNS64 technical walkthrough

IPv6终端用户发出的DNS请求通过DNS64设备进行域名解析。

如果存在请求域名的IPv6 DNS记录(AAAA记录),解析结果将直接返回给IPv6终端用户,IPv6终端用户使用该地址进行访问。

如果对应域名记录不是基于IPv6而是基于IPv4的DNS记录(A记录),DNS64设备使用其NAT64做前缀将A记录转换为AAAA记录并转发给IPv6终端用户,IPv6终端用户经NAT64设备进行NAT转换访问相应的IPv4服务器。

解决方案

此方案可供IPv6网络用户访问IPv4资源,注意,必须是纯IPv6的网络,或IPv4与IPv6双栈用户 若是IPv4用户通过其它方式接入IPv6,则此方案不可用!

windows xp 无解

在纯IPv6网络的用户如果需要访问IPv4的网络资源时,一般需要通过第三方软件来实现(Veno\六飞\IPV6VPN等),而现在大家可直接通过支 持NAT64/DNS64的服务器,来实现IPv6与IPv4之间的NAT,从而实现在纯IPv6网络访问纯IPv4服务器资源(一般为Web服务或依靠 域名的IPv4服务器),目前应该只支持TCP\UDP\ICMP等协议的NAT转换。

注意:NAT64为单向NAT,只支持IPv6端用户发起连接来访问IPv4网络的资源,不支持IPv4用户访问IPv6资源。

目前Windows Vista与Win 7操作系统的用户,

再打开“本地连接”网卡的属性,双击“Internet协议版本6(TCP/IPv6)”,然后将IPv6 DNS服务器地址手工设定为:2001:778::37,备份2001:df8:0:7::1

同时将ipv4的dns的202.118.80.2 取消掉,让电脑做ipv6解析,这样就可以访问IPv4的网络资源了。

重要提醒:切换DNS服务器后,记得在命令提示符下输入:ipconfig /flushdns命令来清空本机的DNS缓存记录。

而且基于ipv4地址的网站或基于ipv4的应用无法使用。但校园网使用ip访问无压力

对于Windows XP的用户,无解

目前互联网上公布的二台DNS服务器地址为:

2001:778::37

2001:df8:0:7::1

NAT64与DNS64基本原理概述的更多相关文章

  1. ipv6转ipv4 NAT64与DNS64基本原理概述

    原文: https://blog.csdn.net/zhangjie1989/article/details/51464251 1.NAT64与 DNS64背景 在 IPv6网络的发展过程中,面临最大 ...

  2. Docker基本原理概述

    Docker基本原理概述 Docker是一个用于开发,交付和运行应用程序的开放平台.Docker能够将应用程序与基础架构分开,从而可以快速交付软件.借助Docker,可以以与管理应用程序相同的方式来管 ...

  3. 【苦读官方文档】2.Android应用程序基本原理概述

    官方文档原文地址 应用程序原理 Android应用程序是通过Java编程语言来写.Android软件开发工具把你的代码和其它数据.资源文件一起编译.打包成一个APK文件,这个文档以.apk为后缀,保存 ...

  4. kafka基本原理概述——patition与replication分配

    kafka一直在大数据中承受着数据的压力也扮演着对数据维护转换的角色,下面重点介绍kafka大致组成及其partition副本的分配原则: 文章参考:http://www.linkedkeeper.c ...

  5. Kafka基本原理概述

    Kafka的基本介绍 Kafka是最初由Linkedin公司开发,是一个分布式.分区的.多副本的.多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/ngi ...

  6. LDPC编译码基本原理

    LDPC编译码基本原理     学习笔记 V1.1 2015/02/18 LDPC编译码基本原理   概述   本文是个人针对LDPC的学习笔记,主要针对LDPC译码算法做了简要的总结.该版本主要致力 ...

  7. IP协议/地址(IPv4&IPv6)概要

    IP协议/地址(IPv4&IPv6)概要 IP协议 什么是IP协议 IP是Internet Protocol(网际互连协议)的缩写,是TCP/IP体系中的网络层协议. [1] 协议的特征 无连 ...

  8. 2016年iOS技术圈回顾

    2016年同2015年一样,在我还没有做好心理准备的时候,一晃神就到了年底.年关将近,不知诸君心情如何,年初的规划实现了多少,来年的计划又是否已有了眉目.年过三十的Peak君感觉年关是越来越难过了,越 ...

  9. iOS ipv6

    这当中最重要的两个概念是DNS64和NAT64. DNS64 DNS64说白了是用来帮助host获取IPv6地址的,传统的DNS服务器可以把域名转换成IPv4地址,但我们的iPhone设备如果处于IP ...

随机推荐

  1. angular学习之angular-phonecat项目的实现

    ---恢复内容开始--- AngularJS官方网站提供了一个用于学习的示例项目:PhoneCat.这是一个Web应用,用户可以浏览一些Android手机,了解它们的详细信息,并进行搜索和排序操作. ...

  2. 时间复杂度 log n

    时间复杂度 O(log n) 意味着什么? 预先知道算法的复杂度是一回事,了解其后的原理是另一件事情. 不管你是计算机科班出身还是想有效解决最优化问题,如果想要用自己的知识解决实际问题,你都必须理解时 ...

  3. ofbiz最新版13.07.01环境搭建、安装(linux环境下)

    一.软件必备: 1.jdk1.7 2.mysql5.6 3.安装tomcat 二.安装: 1.安装 JDK1.7 2.安装mysql数据库 3.下载apache-ofbiz-13.07.01.zip ...

  4. Docker自学纪实(五) 使用Dockerfile构建php网站环境镜像

    一般呢,docker构建镜像容器的方式有两种:一种是pull dockerhub仓库里面的镜像,一种是使用Dockerfile自定义构建镜像. 很多时候,公司要求的镜像并不一定符合dockerhub仓 ...

  5. python--re(匹配字符串)

    \d 匹配任何十进制数:它相当于类 [0-9]. \D 匹配任何非数字字符:它相当于类 [^0-9]. \s 匹配任何空白字符:它相当于类 [ fv]. \S 匹配任何非空白字符:它相当于类 [^ f ...

  6. python中全局变量和局部变量

    例1: a = 100 #定义全局变量a def test1(): print(a) #此处a为全局变量 def test2(a):#此处a为局部变量 print(a)#此处a为局部变量 test1( ...

  7. sql查询平均下单时间

    SQL查询订单平均审核时长 今天在写一个sql,需求是算一个订单在执行状态中的各个节点的时长 比如在订单中,状态0为开始接单,状态3为已经审核,那么现在需要计算每个客服的平均审核时长 像图中所示:这个 ...

  8. Hadoop三大发行版本

    apache 提供基础版本 cloudera 主要是修改Hadoop,提供更加稳定的发行版本,以及可视化的管理服务,主要产品如下: CDH:Cloudera Distributed Hadoop Cl ...

  9. Android+Handler+Thread 那些事儿

    前言,才开始学安卓十几天,不料被线程挡住了前进的步伐,因为之前操作系统课程并没有认真听老师讲课,导致现在理解这些抽象的东西有些小困难.没关系,苦学之路,总会碰到坎坷,这里也给那些迷失在Android之 ...

  10. convlstm学习资料

    https://guanfuchen.github.io/post/markdown_blog_ws/markdown_blog_2017_11/convolutional_lstm_network_ ...