探讨DNS-ALG在IPV4和IPV6互通网络中的研究与实现

0 引言
  
  IPv6 是IPv4 的替代协议,是下一代互联网的核心和基础协议。从1994 年IETF 批准RFC1752 至今,IPv6 已经走过了长期的发展历程。今天,IPv6 已经站在了大规模商用的门坎上,业界公认,IPv6 将全面推动以移动通信和数字家电为代表的一系列新业务和新技术的发展,为社会全面信息化提供可靠的基础协议。但IPv6 的实际部署并不能一蹴而就,现阶段IP 网络上的绝大多数应用都是基于IPv4 的,基于IPv6 的应用需要逐步开发,客户群需要逐渐培养,而且基于IPv4 技术的累积投资巨大,因此决定了IPv4 向IPv6 的过渡将是一个漫长的过程。如何在过渡时期实现平滑过渡,并减少设备改造及更新换代是重要的研究课题。
  
  1 过渡技术介绍
  
  1.1 双协议栈技术
  双协议栈技术是使IPv6 节点与IPv4 节点兼容的最直接方式,应用对象是主机、路由器等通信节点。支持双协议栈的IPv6 节点与IPv6 节点互通时使用IPv6 协议栈,与IPv4 节点互通时使用IPv4 协议栈。IPv6 节点访问IPv4 节点时,先向双栈服务器申请一个临时IPv4地址,同时从双栈服务器得到网关路由器的TEP(Tunnel End Point)IPv6 地址。IPv6 节点在此基础上形成一个4over6 的IP 包,4over6 包经过IPv6 网传到网关路由器,网关路由器将其IPv6 头去掉,将IPv4 包通过IPv4 网络送往IPv4 节点。网关路由器要记住IPv6 源地址与IPv4 临时地址的对应关系,以便反方向将IPv4 节点发来的IP 包转发到IPv6 节点。这种方式对IPv4 和IPv6 提供了完全的兼容,但由于需要双路由基础设施,增加了网络的复杂度,依然无法解决IP 地址耗尽的问题。
  
  1.2 隧道技术
  将孤立的“IPv6 岛”相互联通必须使用隧道技术。利用隧道技术,可以通过现有Internet骨干网络将局部的IPv6 网络连接起来,是IPv4 向IPv6 过渡的初期最易于采用的技术。路由器将IPv6 的数据分组封装入IPv4,IPv4 分组的源地址和目的地址分别是隧道入口和出口的IPv4 地址。在隧道的出口处,再将IPv6 分组取出转发给目的站点。隧道技术只要求在隧道的入口和出口处进行修改,容易实现。但是隧道技术不能实现IPv4 主机与IPv6 主机的直接通信。隧道技术主要有手动隧道、隧道代理、6to4、GRE 隧道、ISATAP(站点间自动隧道编址协议)和自动IPv4 兼容隧道等技术,这些隧道的实现原理和技术细节各不相同,其相应的应用场景也不同。
  
  1.3 网络地址转换/协议转换技术
  网络地址转换/协议转换技术通过与SIIT协议转换和传统的IPv4 下的动态地址翻译以及适当的应用层网关相结合,实现了只安装了IPv6 的主机和只安装了IPv4 机器的大部分应用的相互通信,是一种纯IPv6 节点和IPv4 节点间的互通方式,能够将数据包在IPv4 和IPv6两种格式之间进行转换,实现IPv6 主机与IPv4 主机的透明通信。其基本工作原理如图3 所示。所有包括地址、协议在内的转换工作都由网络设备来完成。支持NAT-PT 的网关路由器应具有IPv4 地址池,在从IPv6 向IPv4 域中转发包时使用。此外,网关路由器支持DNS-ALG,在IPv6 节点访问IPv4 节点时发挥作用。
  
  2 NATPT 技术研究
网络地址翻译和协议翻译(Network Address Translation and Protocol Translation)是一种纯IPv4 应用和纯IPv6 应用之间的互通方式,通过NAT-PT,可以实现IPv4 主机对IPv6 主机的访问,反向访问也同样可以实现。NAT-PT 的网络模型示意图如图4 所示。关于IP 地址转换,以及协议转换的工作都由加载在边界网关路由器上的NAT-PT 设备实现。翻译网关要向IPv6 域中发布一个路由前缀Prefix,凡是具有该前缀的IPv6 包都被送往网关路由器。
  网关路由器为了支持NAT-PT 功能,需要有一个IPv4 地址池预留一部分全球IPv4 地址,在从IPv6 向IPv4 域中转发报文时分配给IPv6 主机做映射用。此外,由于协议对地址格式的定义不同,直接通过地址访问难以实现,只有通过域名才能实现访问,所以网关路由器还需要DNS-ALG 的支持,才能在IPv4 端访问IPv6 端的过程中发挥作用。
  
  2.1 地址转换 NAT
  过渡技术中的NAT,是把IPv4 地址翻译成为IPv6 地址,或者把IPv6 地址翻译成为IPv4地址。地址翻译的实现过程:在NAT-PT 中,预留了一部分Global IPv4 地址,这些地址是留给需要与IPv4 网络通信的IPv6 主机使用的。实际应用情况中,预留的V4 地址数目通常都小于V6 主机的数目,一旦预留的Global IPv4 地址耗尽,则多出来的V6 主机就无法实现与V4 主机的通信,故通常采用为v6 节点动态分配v4 地址的方式来及时释放地址资源,从而使得每一个v6 主机都有机会与v4 主机实现通信。NAT 包含有一个地址映射表,在表中的每一条目中都制定了一个IPv4Global Address 和IPv4 port 对,以及一个IPv6 Address 和IPv6port 对。当有通信报文数据从IPv4 网络传入到翻译网关时,NAT 根据地址映射表查找对应的地址映射关系,同时对IP pool 的地址作动态的管理分配,然后与协议转换模块共同完成报文的转换过程。另外,在通信发起时,NAT 需要与DNS-ALG 通信,做地址分配的工作,同时对自己的地址映射表进行更新。

2.2 协议翻译 PT
  协议翻译主要是指将IPv4 的报文转换成为等效的IPv6 报文,反之亦然。协议翻译的具体准备是遵循SIIT 协议翻译算法实现的。协议翻译主要是针对IP 报头和ICMP 报头,从而使得一个端到端的V6 到V4 的通信成为现实。
  2.2.1 IP 报头翻译
  通过比较 IPV4 报头和IPV6 报头格式,存在对应关系的字段可以一一映射。IPV6 增加了扩展首部,对需要使用的功能由扩展首部提供。实行了地址转换和相应的NATPT 的情况之后,会对上层TCP/UDP 报头产生影响。所以,TCP,UDP 报文也要做相应调整才能使通信能够完成。
  2.2.2 UDP 和TCP 校验和更新
  UDP 和TCP 在计算校验和时引入了伪头部校验和,伪头部包含了源地址和目的地址的信息,IPv4 和IPv6 的地址长度有所不同,需要重新计算伪头部,由翻译网对校验和进行更新。更新的方法为新校验和=原校验和-原伪头部校验和+新伪头部校验和。
  2.2.3 ICMP 报头翻译
  在 IPv6 中,ICMP 的校验和计算包含一个伪头部:源地址,目的地址,协议号,ICMP包长度;在IPv4 中,ICMP 的头部校验和的计算不包含伪头部。所以,所有经过转换设备的ICMP 的校验和都需要重新计算。对于ICMP 报头,每个ICMP 报文有自己的格式,但开始三个字段是相同的,即报文类型type,代码code 以及校验和checsum。由于v4 和v6 定义的不同,对于ICMP 的type 和code 也必须进行翻译。
  
  2.3 NATPT 技术分类
  分为静态 NATPT 技术和动态NATPT 技术。
  静态NATPT技术是在翻译网关静态配置IPV6 和IPV4 地址的绑定关系。当IPV4 和IPV6主机报文互通时,翻译网关根据配置的绑定关系进行转换,且任何一侧主机可主动发起连接。
  静态NATPT 技术原理简单,但当大量主机需要转换时,配置和维护复杂,且消耗较多的IPV4地址,不适合大规模网络中使用。
  动态NAT-PT 技术采用动态地址映射和上层协议映射的方法,当报文进行互通时,NATPT 设备动态选择地址池中地址做为映射地址,不需要配置IPV6 和IPV4 地址的映射关系。使得大量的IPV6 地址可以通过很少的IPV4 地址进行转换。动态NAT-PT 技术应用中,若从IPv4 端首先发起连接,IPv4 主机无从知道IPv6 主机随机映射后的IPv4 地址或上层协议端口,连接无法进行。ALG(Application Level Gateway)即应用层网关技术配合动态NAT-PT 技术可以解决这个问题,包括DNS-ALG,FTP-ALG,SIP-ALG 等多种应用,本文将重点介绍DNS-ALG 机制。
  
  3 DNS-ALG 研究及实现
  
  3.1 必要性分析
  (1)双栈技术存在弊端,不能实现纯IPV4/IPV6 主机通信
  IPv4 到IPv6 的过渡过程中,考虑到平滑过渡和过渡成本等问题,最理想的情况是在现有IPv4 网络不变的情况下,不断加入双栈网络,并逐步将IPv4 网络中的主机升级为双栈;最后出现一个完全支持双栈协议的Internet,最终过渡到IPv6 网络。但实际情况是不可能让所有的主机或终端都升级支持双栈;在网络中不可避免地存在纯IPv4 主机和纯IPv6 主机之间进行通信的业务需求,由于协议栈的不同,很自然地需要对这些协议进行翻译转换。 双栈技术本身也是一种最简单的互通技术,但由于IPv4 地址资源的限制,根本不可能为每一台使用IPv6 的主机同时分配一个IPv4 地址,因此还必须开发其它技术,以便那些只有IPv6 地址的主机也能访问IPv4 网络中的资源。由此产生了NAT-PT 技术。
  动态NAT-PT 技术缺陷
  在IPv4 报文中,UDP 头部校验和可以不填写,即UDP 头部校验和可以是0。但是在IPv6协议中,IPv6 头部没有校验和,为了保证UDP 数据包的正确性,UDP 头部中校验和字段必须填写。由上述原因,在协议转换过程中,由IPV6 报文转向IPV4 报文时,可以将其UDP校验和设定为0。但在IPV4 报文转向IPV6 报文时,UDP 头部校验和填写成为一个难点。因此,动态NAT-PT 技术中,从IPV4 主机发起向IPV6 主机的通信不能实现,而IPV6 主机发起向IPV4 主机的通信可以实现。为了解决此难题,动态NAT-PT 技术结合DNS-ALG 实现应用层通信。这样,IPV4 主机就可以通过访问IPV6 主机域名的形式主动发起通信。
  提高访问效率
  在IPV4 主机首次以域名形式请求IPV6 主机地址时,需要DNS-ALG 及NAT-PT 解析全过程。在第一次解析完成之后,本端DNS Server 会保持对端主机映射后的地址及其域名这条记录。下次IPV4 主机向域名发起通信时,可直接从本地DNS Server 获取映射地址(ipv4地址),而不用再到IPV6 网络DNS Server 请求地址,提高了访问效率。同理,IPV6 主机请求IPV4 主机域名过程原理相同。
  
  3.2 原理分析
3.2.1 IPv6 对DNS 的扩展
  IPv6 网络中的DNS 与IPv4 的DNS 在体系结构上是一致的,都采用树型结构的域名空间。IPv4 与IPv6 协议栈的不同并不意味着需要两套单独的DNS 系统。相反地,为了支持在应用层上的透明访问,二者的DNS 的体系和域名空间必须是一致的,这就是说,IPv4 和IPv6共同拥有统一的域名空间。
  由于IPv4 和IPv6 的地址结构不同,而应用层假设对于地址的查询,返回的仅仅是一个32 比特的IPv4 地址,故对于IPv6 的DNS 而言,也需要进行相应的修改。为了支持对IPv6 地址的存储,对IPv6 的DNS 作了如下延伸定义:
  (1)定义了一个新的资源记录类型将域名和IPv6 地址作映射。
  (2)为反向域名解析定义了一种新的域。
  (3)为了能同时处理IPv4 和IPv6 地址,对现存的附加信息区中的查询作了相应的处理。
  AAAA 是对A 记录的简单扩展,由于IP 地址由32 位扩展到128 位,扩大了4 倍,所以资源记录由A 扩大成4 个A,AAAA 用来表示域名和IPv6 地址的对应关系,并不支持地址的层次性。
  3.2.2 DNS-ALG 的工作模型
  3.2.3 DNS-ALG 原理
  动态 NAT-PT 技术结合DNS-ALG 能实现IPV4 主机向IPV6 主机主动发起通信.实现DNS-ALG 后的NAT-PT 设备,可以从任意网端以域名形式主动发起通信。以IPV4 主机请求IPV6 主机域名为例阐述DNS-ALG 工作过程。
  (1)获得域名对应的IPV6 地址.
  IPv4 网络结点向IPv6 网络的DNS 查询请求“A”记录,查询报文到达应用层网关DNS-ALG 后,DNS-ALG 将“A”转换为“AAAA”记录,并发送给IPv6 网络的DNS 服务器,IPv6网络的DNS 完成域名解析,并返回解析结果。到此,已经获得域名对应的IPV6 地址。
  当解析结果到达DNS-ALG 时,DNS-ALG 将“AAAA”记录修改为“A”记录,并把IPv6地址改成地址池中的IPv4 转换地址,把这个IPv4 转换地址与相应域名映射关系告诉IPV4 端DNS Server,建立一条DNS 记录。并把该IPv4 转换地址作为解析结果返回给IPv4 主机。到此,获得的IPV6 地址被NAT-PT 设备映射为IPV4 地址。为下一步通信做准备。
  (2)IPV4 主机向IPV6 主机通信
IPv4 主机利用返回的IPV4 地址作为目的地址,与实际的IPv6 主机进行通信,发送报文信息。报文到达NAT-PT 设备后,NAT-PT 设备将此IPV4 地址映射为IPV6 地址。源IPV4地址加上IPV6 前缀形成源IPV6 地址,实现报文在IPV6 网络中通信。
  
  3.3 技术实现
  3.3.1 实例1-----双侧DNS 服务器
  如图所示。其中IPv6 DNS 在NAT-PT 上被转换为1.1.1.9,NAT-PT 向IPv6 网络通告的地址前缀为10::/96,IPv4 地址池为1.4.2.3~1.4.2.10。IPv4 PCB 向IPv6 PCA 主动请求连接的过程如下:
  PCB 首先向它的DNS 服务器请求www.A.com.cn 这个域名所对应的IPv4 地址,IPv4的DNS 服务器发现没有此记录,于是转发这个DNS 请求给IPv6 的DNS 服务器,请求报文的源和目的地址分别为1.3.3.5 和1.1.1.9,报文中包含类型为A 的查询报文和需要解析的名字A。请求报文在NAT-PT 网关把报文头部源和目的地址转换为10::1.3.3.5 和2::3。同时,NAT-PT 网关中的DNS-ALG 将报文的类型由A转换成A6,然后将此报文向IPv6 DNS 转发。IPv6 DNS 收到报文后,查询自己的记录表,解析出A 的IPv6 地址为1::3,于是向IPv4 DNS做出回应。回应报文的源和目的地址在NAT-PT 网关被转换为1.1.1.9 和1.3.3.5。同时,DNS-ALG 将其中的DNS 应答类型改为A,并从IPv4 地址池中分配一个地址1.4.2.6,替换应答中的IPv6 地址1::3,并记录二者之间的映射信息。PCB 收到IPv4 DNS 应答消息,从而知道PCA 的IPv4 地址为1.4.2.6,PCB 就可以主动发起到PCA 的连接了。IPV4 向IPV6 发起攻击没有DNS-ALG 的情况下不知道目的地址,IPV6 向IPV4 发起攻击是直接加V6 前缀。
  3.3.2 实例2-----单侧DNS 服务器
  IPV6 主机访问IPV4 侧DNS 服务器,查询域名--地址信息;再进行通信。
  如图进行组网,NAT--PT 设备是H3C 路由器,DNS-Server 在windows 2003 系统设置.PCA为vista 系统,PCB 为windows XP 系统。NAT-PT 设备配置:V6 前缀2000::,动态地址池:address-group 8.1.1.10 ~8.1.1.19 ,映射关系:9.1.1.3<---->2000::3.
  1.域名解析
  (1).PCA 采用windows vista 系统,指定DNS Server 地址3000::1。PCA 输入ping -6www.dnstest.com ,报文源地址3000::2,目的地址3000::1,携带域名信息www.dnstest.com
  (2).报文到达PCA 设置的DNS 服务器(3000::1).
  (3).DNS-ALG 将AAAA 类型转化为A 类型,报文发向V4 网络的DNS Server.(9.1.1.2).源地址采用NATPT 动态地址池地址如8.1.1.10,目的地址9.1.1.2。

4).DNS Server 做出解析, www.dnstest.com 的映射地址9.1.1.3。DNS-ALG 将A 类型转化为AAAA 类型. NAT-PT 设备上有9.1.1.3----2000::3 的映射关系。NAT-PT 设备将信息返回给PCA。由此,域名www.dnstest.com 对应IPV6 地址2000::3.
  2.发起通信
  (1).PCA ping -6 2000::3,报文源地址3000::2,目的地址2000::3。
  (2).NATPT 设备V6 前缀为2000::,当报文到达NATPT 设备时,识别该报文需要地址映射。报文在V4 网络转换为源地址NATPT 地址池动态映射的地址8.1.1.10,目的地址9.1.1.3。
  (3).Ruest 报文到达PCB。
  (4).PCB 发出reply 报文。源地址9.1.1.3,目的地址为8.1.1.10。
  (5).NATPT 做出映射,源地址为2000::3,目的地址为3000::2。Reply 报文到达报文源发起端。一次通信正常结束。
  由于V6 网络端没有DNS Server,域名---V6 地址的映射关系将不能保存。在每次发起对域名的通信时,只要PCA 上没有缓存记录,都需要先进行域名解析,再发送报文。
  
  4 DNS--ALG 在互通网络中的意义
  
  DNS-ALG 无需对现有的网络设备和结构作改动,特别是不需要对客户端作任何改动,就能实现在纯IPv6 节点和纯IPv4 节点间的通信,透明度高,适应性广,它还可以通过端口映射使得一个IPv4 地址映射多个IPv6 地址,能有效解决地址短缺问题。大大降低了IPv4 与IPv6 共存与过渡的成本,因此具有很强的实用性。但也存在以下不足之处:
  (1)IPv4 节点访问IPv6 节点的实现方法比较复杂,网络设备进行协议转换、地址转换的处理开销较大,一般在其他互通方式无法使用的情况下使用。
  (2)由于NAT-PT 的协议翻译算法借鉴了SIIT 的算法,所以对于IPv4 报文和IPv6 报文的对应域有所不同,翻译过程中可能会出现信息丢失,并且这种翻译体制注定了网络拓扑具有局限性,并且在端到端的通信过程中安全性保障较低。双向NAT 过程必须需要DNS-ALG 的支持,这样会在一定程度上加重应用层的负担。
  (3)采用DNS-ALG 的NAT-PT 设备的操作系统设计水平、硬件处理能力及系统稳定性提出了很高的要求。
  
  5 结束语
    目前,IPv6 在全球范围内正受到越来越多的重视,更多的公司,机构,研究团体都开始投入更大的力量在IPv6 的研究工作中,很多高校也在IPv6 领域的研究中取得了一定的成效,组建了一些小规模的IPv6 试验网,在IPv6 发展初期,解决这些小规模IPv6 试验网与IPv4 网络之间的通信问题便需要借助过渡时期的过渡技术。这也正是本文的论述范畴。实现V4 网络和V6 网络的互通需要设备商,各机构,广大用户不懈努力,早日过渡到IPV6网络。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值