找回密码
 注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 39059|回复: 15

NAT64与DNS64基本原理概述

[复制链接]
满天星 发表于 2010-10-14 22:43:38 | 显示全部楼层 |阅读模式
NAT64与DNS64基本原理概述

关键词:NAT64、DNS64、IPv6、网络地址与协议转换、IPv6与IPv4互访

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的报文交互

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


假定的网络地址结构:
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文档!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
yuyong 发表于 2010-12-12 12:50:03 | 显示全部楼层
受益,谢谢
回复

使用道具 举报

yuyong 发表于 2010-12-22 17:48:01 | 显示全部楼层
如果 ipv4-only server(http://www.ipv6bbs.cn/)放在NAT后怎么搞?我还没想明白。lz是否已经分析过,可以分享讨论下。
回复

使用道具 举报

 楼主| 满天星 发表于 2010-12-22 21:08:33 | 显示全部楼层
没有任何区别,都是一样的NAT处理!
NAT64+NAT而已!应该说可以存在二种模式:
第一就是NAT64使用私网地址池,然后再经NAT出去,访问互联网!此模式意义不大,但不排除存在的可能!
第二就是NAT64转换后访问NAT后面的Server,就是你说的,很显然这个Server要有一个公网IPv4地址!在NAT设备上将这个公网地址映射至内网的服务器即可!
回复

使用道具 举报

liong 发表于 2011-3-15 19:07:43 | 显示全部楼层
是不是NAT64是三元组转换?与NAT44有些不同?
回复

使用道具 举报

 楼主| 满天星 发表于 2011-3-15 21:16:40 | 显示全部楼层
都是五元组转换的,只是既要转协议(IPv6协议->IPv4协议),又要转地址(IPv6地址->IPv4地址)。
回复

使用道具 举报

stanleyru 发表于 2011-5-7 11:46:50 | 显示全部楼层
TCP和UDP是五元组转换,ICMP是三元组转换。
IETF发布NAT64 RFC6146,Category: Standards Track   
支持IPv4发起访问IPv6.
   If a V4 SYN packet is received with an incoming tuple with source
   IPv4 transport address (Y,y) and destination IPv4 transport address
   (X,x) (this is the case of a TCP connection initiated from the IPv4
   side).
回复

使用道具 举报

stanleyru 发表于 2011-5-7 13:47:45 | 显示全部楼层
回复 3# yuyong


    此场景在国内还相当常见的,当IPv4服务器发布应用的时候,后台v4 server肯定是私网地址。但我认为NAT64做地址转换时候, 一次到时可能更好(转换为v4 的server地址可能更好)。
回复

使用道具 举报

 楼主| 满天星 发表于 2011-5-8 21:28:23 | 显示全部楼层
是的,2011年4月NAT64协议,以及该NAT64相关的其他协议文档,均由IETF Draft形成正式RFC
与NAT64相关的文档及对应的RFC编号有:
Framework for IPv4/IPv6 Translation:RFC 6144
IP/ICMP转换算法:RFC 6145
Stateful NAT64:RFC 6146
DNS64:RFC 6147
地址转换算法:RFC 6052
这些文档都是在一起的,感兴趣的朋友可以查看最新的标准。

To stanleyru:
1.支持IPv4发起访问IPv6是有前提条件的,只在二种情况下存在:一是存在静态映射关系,二是IPv6节点已经发起过连接访问过IPv4节点,且再NAT64设备上建立了动态的映射关系表(BIB表项),这时才支持V4发起连接访问V6,可详细参考RFC6146
2.后台v4 server如果是私网地址肯定存在,但对于最终用户来说,互联网上的所有通讯都是依赖公网IPv4/IPv6地址来进行的,私网地址仅能在局域网(或某私有内部网络)内通讯。NAT64设备的所有通讯都是针对公网地址的,不可能越过Internet或企业防火墙来处理私网地址。RFC 6052中也有明确规定,当NAT64设备使用知名前缀64:FF9B::/96时,应该丢弃IPv4目的地址为私网的流量。
如有其它疑问或看法,可以一起讨论。
回复

使用道具 举报

 楼主| 满天星 发表于 2011-5-8 21:28:59 | 显示全部楼层
是的,2011年4月NAT64协议,以及该NAT64相关的其他协议文档,均由IETF Draft形成正式RFC
与NAT64相关的文档及对应的RFC编号有:
Framework for IPv4/IPv6 Translation:RFC 6144
IP/ICMP转换算法:RFC 6145
Stateful NAT64:RFC 6146
DNS64:RFC 6147
地址转换算法:RFC 6052
这些文档都是在一起的,感兴趣的朋友可以查看最新的标准。

To stanleyru:
1.ICMP是三元组转换,这点你说的非常正确,五元组仅仅是TCP\UDP协议!
2.支持IPv4发起访问IPv6是有前提条件的,只在二种情况下存在:一是存在静态映射关系,二是IPv6节点已经发起过连接访问过IPv4节点,且再NAT64设备上建立了动态的映射关系表(BIB表项),这时才支持V4发起连接访问V6,可详细参考RFC6146
3.后台v4 server如果是私网地址肯定存在,但对于最终用户来说,互联网上的所有通讯都是依赖公网IPv4/IPv6地址来进行的,私网地址仅能在局域网(或某私有内部网络)内通讯。NAT64设备的所有通讯都是针对公网地址的,不可能越过Internet或企业防火墙来处理私网地址。RFC 6052中也有明确规定,当NAT64设备使用知名前缀64:FF9B::/96时,应该丢弃IPv4目的地址为私网的流量。
如有其它疑问或看法,可以一起讨论。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|IPv6BBS ( 京ICP备13024693号 | 京公网安备11010802012238 )

GMT+8, 2024-3-29 16:40 , Processed in 0.035875 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表