IPv6的域名系统及解析原理
发布时间:2013-05-06 浏览次数:

一、IPv6与域名系统

虽然IPv6协议将取代IPv4的互联网协议,但是有许多部分还是继承了现行IPv4的优点的。如本节要介绍的域名系统DNS就是继续了IPv4现行协议的。IPv6网络中的DNS同样非常重要,一些IPv6的新特性和DNS的支持密不可分。

IPv6网络中的DNSIPv4DNS在体系结构上是一致的,都是采用树型结构的域名空间。虽然IPv4协议与IPv6协议是存在着相当大区别的两套协议,但这并不意味着需要单独两套DNS体系,相反在DNS的体系和域名空间上两者必须是一致的,IPv4IPv6共同拥有统一的域名空间。在IPv4IPv6的过渡阶段,域名可以同时对应于多个IPv4IPv6的地址。随着IPv6网络的普及,IPv6地址将逐渐取代IPv4地址。

可聚集全局单播地址是目前主要应用的IPv6地址,因IPv6可聚集全局单播地址是在全局范围内使用的地址,必须进行层次划分及地址聚集。下面就以IPv6 DNS系统对这类地址的解析过程来介绍IPv6 DNS系统的解析原理。IPv6可聚集全局单播地址格式参见图1所示。

IPv6全局单播地址的分配方式如下:顶级地址聚集机构TLA(即大的ISP或地址管理机构)获得大块地址,负责给次级地址聚集机构NLA(中小规模ISP)分配地址,NLA给站点级地址聚集机构SLA(子网)和网络用户分配地址。IPv6地址的层次性在DNS中通过地址链技术可以得到很好的支持。

1. 正向解析

 从以上介绍我们已经知道,IPv4的地址正向解析的资源记录是“A”,而IPv6地址的正向解析目前有两种资源记录,即“AAAA”和“A6”记录。其中“AAAA”较早提出,它是对IPv4协议“A"”录的简单扩展,由于IP地址由32位扩展到128位,扩大了4倍,所以资源记录由“A”扩大成4个“A”。但“AAAA”用来表示域名和IPv6地址的对应关系,并不支持地址的层次性。

AAAA资源记录类型用来将一个合法域名解析为IPv6地址,与IPv4所用的A资源记录类型相兼容。之所以给这新资源记录类型取名为AAAA,是因为128位的IPv6地址正好是32IPv4地址的四倍,下面是一条AAAA资源记录实例:

host1.microsoft.com IN AAAA FEC0::2AA:FF:FE3F:2A1C

A6”是在RFC2874基础上提出,它是把一个IPv6地址与多个“A6”记录建立联系,每个“A6”记录都只包含了IPv6地址的一部分,结合后拼装成一个完整的IPv6地址。“A6”记录支持一些“AAAA”所不具备的新特性,如地址聚集,地址更改(Renumber)等。

A6”记录根据可聚集全局单播地址中的TLANLASLA项目的分配层次把128位的IPv6的地址分解成为若干级的地址前缀和地址后缀,构成了一个地址链。每个地址前缀和地址后缀都是地址链上的一环,一个完整的地址链就组成一个IPv6地址。这种思想符合IPv6地址的层次结构,从而支持地址聚集。

同时,用户在改变ISP时,要随ISP改变而改变其拥有的IPv6地址。如果手工修改用户子网中所有在DNS中注册的地址,是一件非常繁琐的事情。而在用“A6”记录表示的地址链中,只要改变地址前缀对应的ISP名字即可,可以大大减少DNS中资源记录的修改。并且在地址分配层次中越靠近底层,所需要改动的越少。

2. 反向解析

IPv6反向解析的记录和IPv4一样,是“PTR”,但地址表示形式有两种。一种是用“.”分隔的半字节16进制数字格式(Nibble Format),低位地址在前,高位地址在后,域后缀是“IP6.INT.”。另一种是二进制串(Bit-string)格式,以“\[”开头,16进制地址(无分隔符,高位在前,低位在后)居中,地址后加“]”,域后缀是“IP6.ARPA.”。半字节16进制数字格式与“AAAA”对应,是对IPv4的简单扩展。二进制串格式与“A6”记录对应,地址也象“A6”一样,可以分成多级地址链表示,每一级的授权用“DNAME”记录。和“A6”一样,二进制串格式也支持地址层次特性。

  IP6.INT域用于为IPv6提供逆向地址到主机名解析服务。逆向检索也称为指针检索,根据IP地址来确定主机名。为了给逆向检索创建名字空间,在IP6.INT域中,IPv6地址中所有的32位十六进制数字都逆序分隔表示。例如,为地址FEC0::2AA:FF:FE3F:2A1C(完全表达式为:FEC0:0000:0000:0000:02AA:00FF:FE3F:2A1C)查找域名时,在IP6.INT域中是:C.1.A.2.F.3.E.F.F.F.0.0.A.A.2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.C.E.F.IP6.INT.

  总之,以地址链形式表示的IPv6地址体现了地址的层次性,支持地址聚集和地址更改。但是,由于一次完整的地址解析要分成多个步骤进行,需要按照地址的分配层次关系到不同的DNS服务器进行查询,并且所有的查询都成功才能得到完整的解析结果。这势必会延长解析时间,出错的机会也增加。因此,在技术方面IPv6协议需要进一步改进DNS地址链功能,提高域名解析的速度才能为用户提供理想的服务。

二、IPv6中的即插即用与DNS

IPv6协议支持地址自动配置,这是一种即插即用的机制,在没有任何人工干预的情况下,IPv6网络接口可以获得链路局部地址、站点局部地址和全局地址等,并且可以防止地址重复。IPv6支持“无状态地址自动配置”和“有状态地址自动配置”两种方式。

在无状态地址自动配置方式下,需要配置地址的网络接口先使用邻居发现机制获得一个链路本地地址。网络接口得到这个链路本地地址之后,再接受路由器宣告的地址前缀,结合接口标识得到一个全局地址。而有状态地址自动配置的方式,与IPv4一样的DHCP(动态主机配置协议),需要一个DHCP服务器,通过客户机/服务器模式从DHCP服务器处得到地址配置的信息。

IPv6节点通过地址自动配置得到IPv6地址和网关地址。但是,地址自动配置中不包括DNS服务器的自动配置。如何自动发现提供解析服务的DNS服务器也是一个需要解决的问题。DNS服务器自动发现的解决方法可以分为“无状态”和“有状态”两类。

在无状态的方式下,需要为子网内部的DNS服务器配置站点范围内的任播地址。要进行自动配置的节点以该任播地址为目的地址发送服务器发现请求,询问DNS服务器地址、域名和搜索路径等DNS信息。这个请求到达距离最近的DNS服务器,服务器根据请求,回答DNS服务器单播地址、域名和搜索路径等DNS信息。节点根据服务器的应答配置本机DNS信息,以后的DNS请求就直接用单播地址发送给DNS服务器。

另外,也可以不用站点范围内的任播地址,而采用站点范围内的多播地址或链路多播地址等。还可以一直用站点范围内的任播地址作为DNS服务器的地址,所有的DNS解析请求都发送给这个任播地址。距离最近的DNS服务器负责解析这个请求,得到解析结果后把结果返回请求节点,而不像上述做法是把DNS服务器单播地址、域名和搜索路径等DNS信息告诉节点。从网络扩展性,安全性,实用性等多方面综合考虑,第一种采用站点范围内的任播地址作为DNS服务器地址的方式相对较好。

在有状态的DNS服务器发现方式下,是通过类似DHCP这样的服务器把DNS服务器地址、域名和搜索路径等DNS信息告诉节点。当然,这样做需要额外的服务器。

三、 IPv6过渡阶段的DNS

IPv4IPv6的过渡过程中,作为Internet基础架构的DNS服务也要支持这种网络协议的升级和转换,当然这也要有一个过渡方法,而不是一下子全面改成IPv6DNS系统。从上面的介绍我们知道,IPv4IPv6DNS记录格式等方面有所不同,为了实现IPv4网络和IPv6网络之间的DNS查询和响应,可以采用应用层网关DNS-ALG结合NATPT的方法,在IPv4IPv6网络之间起到一个翻译的作用。例如,IPv4的地址域名映射使用“A”记录,而IPv6使用“AAAA”或“A6”记录。那么,IPv4的节点发送到IPv6网络的DNS查询请求是“A”记录,DNS-ALG就把“A”改写成“AAAA”,并发送给IPv6网络中的DNS服务器。当服务器的回答到达DNS-ALG时,DNS-ALG修改回答,把“AAAA”改为“A”,把IPv6地址改成DNS-ALG地址池中的IPv4转换地址,把这个IPv4转换地址和IPv6地址之间的映射关系通知NATPT,并把这个IPv4转换地址作为解析结果返回IPv4主机。IPv4主机就以这个IPv4转换地址作为目的地址与实际的IPv6主机通过NATPT通信。

对于采用双协议栈方式的过渡方法,在DNS服务器中同时存在“A”记录和“AAAA”(或“A6”)记录。由于节点既可以处理IPv4协议,也可以处理IPv6协议,因此无需类似DNS ALG的转换设备。无论DNS服务器回答“A”记录还是“AAAA”记录,都可以进行通信。

 

随着Internet技术的不断发展,IPv6也已离我们越来越近了。DNS作为IPv4时代的网络基础服务,对Internet起着重要的作用。在即将到来的IPv6时代,新的协议和功能要求DNS不再是仅仅提供传统意义上的简单资源定位,而是一方面提供类似IPv4 DNS的基础功能,另一方面结合IPv6的新特性,和其它协议有机的结合在一起,提供新的功能,使网络的配置、维护、使用变的更加简单、更加方便,让用户感受到新技术带来的新体验。