APP下载

DNSv6代理技术在网络中的应用研究

2016-02-23王文军

计算机技术与发展 2016年3期
关键词:表项域名报文

王文军

(贵州民族大学 信息工程学院,贵州 贵阳 550025)

DNSv6代理技术在网络中的应用研究

王文军

(贵州民族大学 信息工程学院,贵州 贵阳 550025)

随着IPv6开始普及,针对IPv6地址信息不便记忆的问题,需要借助IPv6域名解析技术。为简化网络的管理,加快解析速度,提升解析效率,提高网络稳定性和安全性,文中阐述通过DNSv6代理技术建立网络中DNS客户端发送的DNSv6查询请求和DNS服务器响应的应答之间的映射关系,正确解析和转发DNSv6查询和应答报文,缓存查询结果,为用户提供域名与IPv6地址之间的转换服务。通过DNSv6代理技术还可以在DNS代理服务器上配置多台DNS服务器实现容灾功能。文中简要阐述了DNSv6代理的概念、工作原理和DNSv6三类主要查询的格式,研究了DNSv6代理技术在网络中的应用,完成了DNSv6代理特性的架构设计、相关数据表项的设计,并描述了具体的实现。

IPv6;DNSv6;代理;查询

0 引 言

随着电子技术及网络技术的发展,计算机网络进入了人们的日常生活,未来可能身边的每一样东西都需要接入互联网。而由于IPv4地址资源数量有限,严重地制约了各国互联网的应用和发展。在这样的环境下,IPv6应运而生[1]。网络中的每台主机都可以由IPv6地址来标识,用户只有获得待访问主机的IPv6地址才能够成功实现访问操作。然而对于用户来讲,记住主机的IPv6地址无异是相当困难的,为了解决IPv6地址信息不便于记忆的问题,就势必离不开域名解析。网络中的DNS客户端可以通过网络设备上的DNSv6代理技术来完成域名与IPv6地址之间的转换,实现域名的解析。使用DNSv6代理技术,如果DNS服务器地址等信息发生变化时,也只需改变DNSv6代理上的配置,无需改变局域网内每个DNS客户端的配置,从而可以简化网络的管理,提高网络的稳定性。另外,利用DNSv6代理中的Cache不仅可以大大地节省域名解析的时间,提高网站访问的速度和效率,而且可以减少网络中的传输流量,提高网络传输速度,降低网络访问费用。除此之外,通过DNSv6代理技术,真实的DNS服务器对DNS客户端便不可见,这样还可以保护真实DNS服务器的安全,提高网络的安全性。

1 DNSv6代理技术

1.1 DNSv6查询介绍

DNSv6查询是指与IPv6地址相关的DNS查询,主要包括:AAAA查询、A6查询和IPv6 PTR查询。其中,AAAA查询和A6查询主要目的是通过域名正向解析得到IPv6地址,而IPv6 PTR查询则是通过IPv6地址反向解析得到域名[2]。

1.1.1 正向解析

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

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

1.1.2 反向解析

IPv6反向解析的记录和IPv4一样,是“PTR”,通过地址反向获取域名,但地址表示形式有两种。一种是用“.”分隔的半字节16进制数字格式(Nibble Format),低位地址在前,高位地址在后,域后缀是“IP6.INT.”或“IP6.ARPA.”[4]。另一种是二进制串(Bit-string)格式,以“[”开头,16进制地址(无分隔符,高位在前,低位在后)居中,地址后加“]”,域后缀是“IP6.ARPA.”[5]。

半字节16进制数字格式与“AAAA”对应,是对IPv4的简单扩展。二进制串格式与“A6”记录对应,地址也像“A6”一样,可以分成多级地址链表示,每一级的授权用“DNAME”记录。和“A6”一样,二进制串格式也支持地址层次特性。

1.2 DNSv6代理工作原理

DNSv6代理基本工作过程如图1所示。DNS客户端通过DNSv6代理转发报文,获取IPv6地址或域名等。

DNSv6代理的工作交互过程如下[6]:

(1)DNS客户端将DNSv6查询请求报文发送给DNSv6代理,即查询报文的目的地址为DNSv6代理的本机地址。

(2)DNSv6代理收到查询报文后,查找本地的域名解析缓存表,如果存在请求的信息,则DNSv6代理直接将域名解析结果返回给DNS客户端。如果不存在请求的信息,则DNSv6代理将报文转发给DNS服务器,通过DNS服务器进行域名解析。

图1 DNSv6代理工作原理图

(3)DNSv6代理收到DNS服务器的应答报文后,记录域名解析的结果至本地的域名解析缓存表。

(4)DNSv6代理将应答报文转发给DNS客户端,DNS客户端解析报文获取结果,实现域名解析。

2 网络中的DNSv6代理技术研究

网络中实现DNSv6代理的典型组网图如图2所示。

图2 DNSv6代理的典型组网图

企业内网与DNSv6代理相连,DNSv6代理通过互联网分别与IPv4网络中的DNS服务器和IPv6网络中的DNS服务器相连。企业内网用户访问外网服务器时,企业内用户端首先作为DNS客户端,发出DNS查询请求报文,目的地址为DNSv6代理[7]。

当DNS请求到达DNSv6代理后,DNSv6代理根据接收到的查询请求类型,如果是与IPv6地址相关的DNS查询,则会优先选择发送给IPv6地址的DNS服务器,若未收到响应,再发送给IPv4地址的DNS服务器[8]。IPv6网络中的DNS与IPv4网络中的DNS在体系结构上是一致的,IPv4和IPv6共同拥有统一的域名空间[9],即IPv4地址的DNS服务器同时会存在IPv6相关的DNS资源记录。

2.1 DNSv6代理特性架构

DNSv6代理特性主要包括5个模块(见图3):命令行、映射转发、DNSv6 Spoofing、编解码和报文收发模块。

图3 DNSv6代理模块分解图

每个模块主要功能如下:

(1)命令行模块:提供DNS服务器、DNS动态解析和DNS代理开关等命令的配置和删除,保存相关命令配置数据。

(2)映射转发模块:通过记录查询报文的域名、DNS Packet ID、源端口、目的端口、源地址以及DNSv6代理转发查询新生成的DNS Packet ID,来建立DNS客户端发送的请求和DNS服务器响应的应答之间的映射关系。

(3)DNSv6 Spoofing模块:当DNSv6代理上没有配置DNS服务器地址或不存在到达DNS服务器的路由,设备不会转发DNS服务器的域名解析请求,此时若DNSv6代理同时配置DNSv6 Spoofing功能,则DNSv6代理会利用配置的IPv6地址作为域名解析结果,欺骗性地应答客户端的域名解析请求[10]。

(4)编解码模块:负责DNSv6查询报文的编解码和DNSv6应答报文的编解码。

(5)报文收发模块:通过Socket监听端口号为53的DNS报文,进行报文的接收[11],同时也通过Socket的发送接口进行报文的发送。

2.2 DNSv6代理数据表项

2.2.1 映射转发表

当DNSv6代理接收到DNS客户端的查询报文,且本地的域名解析缓存表中无对应的域名解析结果,此时DNSv6代理会生成映射转发表项,记录查询报文中的域名、查询类型、客户侧DNS Packet ID、源端口、源地址和DNSv6代理转发查询报文时使用的新生成的DNS Packet ID(注:分配DNS Packet ID时,需确保生成ID的唯一性。当删除映射转发表表项时,需释放DNS Packet ID。),以及DNSv6代理转发查询报文的内容(可以用于报文的超时重传)。映射转发表数据结构如下:

#define UCHAR unsigned char

#define USHORT unsigned short

#define ULONG unsigned long

/*映射转发表项节点*/

typedef struct DNSv6ForwardEntry

{

UCHAR *pszDomainName; /*查询报文中的域名*/

USHORT usSrcPkID; /*查询报文ID标识*/

USHORT usQueryType; /*查询类型*/

in6_addr stSrcIPv6Addr; /*查询报文源IPv6地址*/

USHORT usSrcPort; /*查询报文源端口*/

USHORT usFwdPkID; /*转发报文的ID标识,与查询报文的ID标识存在对应关系*/

UCHAR *pszBuf; /*修改ID标识后的查询报文内容*/

}DNSv6_Forward_Entry_S;

/*映射转发表*/

DNSv6_Forward_Entry_S *g_pstDNSv6ForwardEntry;

DNSv6代理将查询报文中的usSrcPkID修改为usFwdPkID,并将查询报文发送给DNS服务器。当DNSv6代理接收到DNS服务器响应的应答后,通过应答报文中的域名和DNS Packet ID作为索引,查找映射转发表,如果命中,就获取对应表项里客户端的相关信息,如查询请求的DNS Packet ID、源端口、源地址等,查找到对应的客户端,修改应答报文中的DNS Packet ID、端口、地址等信息,将修改后的应答报文转发给对应的客户端,完成相应的域名解析。因此,映射转发表的作用主要是用于建立DNS客户端发送的请求和DNS服务器响应的应答之间的映射关系。

2.2.2 动态缓存表

当DNSv6代理接收到DNS客户端的查询报文,会首先遍历查找本地的域名解析动态缓存表中有无对应的域名解析结果,如果有,则直接使用动态缓存表中的结果应答DNS客户端[12]。动态缓存表数据结构如下:

/*动态缓存表项节点*/

typedef struct DNSv6DynamicCacheEntry

{

UCHAR *pszDomainName; /*域名*/

USHORT usQueryType; /*查询类型*/

UCHAR szRcv[2]; /*保留位*/

in6_addr *pstIPv6AddrList; /*IPv6地址链*/

ULONG ulTTL; /*生存周期,定时递减*/

UCHAR *pszBuf; /*应答报文的内容*/

}DNSv6_Cache_Entry_S;

DNSv6_DynamicCache_Entry_S *g_pstDNSv6DynamicCacheEntry; /*动态缓存表*/

其中,pstIPv6AddrList为域名对应的IPv6地址链,因为一个域名可能对应多个IPv6地址。另外DNSv6代理会创建1 s的定时器,动态缓存表会定时老化,当表项中的TTL降到0时,删除该缓存表项[13]。

2.3 DNSv6代理实现流程

2.3.1 查询报文处理

实现DNSv6代理,处理DNSv6查询报文的主要流程如下:

(1)企业内客户端发出的DNSv6查询请求报文进入DNSv6代理时,首先查看是否开启DNSv6代理,如果没有开启,则直接丢弃。反之,进入下一步;

(2)解析DNSv6查询报文头,获取查询的域名,根据域名遍历静态DNSv6表项,如果查找到,则使用静态表项信息,构造应答报文响应DNS客户端。反之,进入下一步;

(3)判断动态域名解析是否开启,如果没有开启,则直接丢弃。反之,进入下一步;

(4)根据域名遍历DNSv6动态缓存表项,如果查找到,则使用动态缓存信息,响应DNS客户端[14]。反之,进入下一步;

(5)判断DNS服务器地址是否配置或通过DHCP或ND等其他模块动态获取到,如果均没有,则进入第7步。反之,则分配一个新的DNS Packet ID,并生成映射转发表,建立客户端发送的查询报文和转发后的查询报文之间的映射关系,同时进入下一步;

(6)如果查询报文成功转发,则处理结束。反之,进入下一步;

(7)判断DNSv6 Spoofing是否开启,如果没有开启,则直接丢弃。反之,使用配置的IPv6地址,构造应答报文欺骗DNS客户端。

对应流程见图4。

图4 DNSv6代理处理查询报文的主要流程图

2.3.2 响应报文处理

实现DNSv6代理,处理DNSv6应答报文的主要流程如下:

(1)外网DNS服务器发出的DNS应答报文进入DNSv6代理时,首先查看是否开启动态域名解析,如果没有开启,则直接丢弃。反之,进入下一步;

(2)解析DNS报文头,获取域名和DNS Packet ID,根据域名和DNS Packet ID遍历应用请求查询表(此表用于DNS客户端特性),如果查找到,则解析整个应答报文,获取查询结果,并告知上层业务模块,同时将结果添加至缓存。反之,进入下一步;

(3)判断DNSv6代理是否开启,如果没有开启,则直接丢弃。反之,进入下一步;

(4)根据域名和DNS Packet ID遍历映射转发表,如果没有查找到,则直接丢弃。反之,进入下一步;

(5)修改应答报文的DNS Packet ID和目的Port,转发应答报文响应DNS客户端,同时解析整个应答报文,获取查询结果,并将结果添加至缓存。

对应流程见图5。

图5 DNSv6代理处理应答报文的主要流程图

3 结束语

为了解决IPv4地址资源数量不足以满足现有互联网应用和发展的问题,互联网工程任务组(IETF)设计了用于替代现行版本IP协议IPv4的下一代IP协议IPv6。与IPv4相比,IPv6具有地址空间更大、路由表更小、安全性更高等多项优势。因此随着当前及未来IPv6网络的普及,IPv6地址势必将逐渐取代IPv4地址。但是IPv6地址由128位二进制数码表示,相对于IPv4地址却更加难以记忆。为了能够使用户更方便地访问互联网,而不用去记住那些能够被机器直接读取的IPv6地址数字串,解决IPv6地址信息不便于记忆的问题,网络中离不开IPv6的域名解析技术(即DNSv6技术)。通过主机名,最终得到该主机名对应的IPv6地址[15]。

DNSv6代理技术生成映射转发表,建立客户端发起的DNSv6请求和服务器响应的DNSv6应答之间的映射,通过正确转发DNSv6请求和应答,使客户端最终获取DNS查询结果,完成域名解析,而且实现过程简单。

DNSv6代理技术具有如下优点:

(1)简化网络管理。使用DNSv6代理,如果DNS服务器地址等信息发生变化,只需改变DNSv6代理上的配置,无需改变局域网内每个DNS客户端的配置,从而简化了网络的管理,提高了网络的稳定性。

(2)减少网络传输流量,提高解析效率。利用DNSv6代理中的缓存可以大大地节约域名解析的时间,减少DNSv6代理上行网络中的传输流量,提升网络传输速度,同时利用缓存快速完成域名解析,也可提高网站的访问速度。

(3)避免真实服务器遭受攻击。客户往往会使用域名来访问网站资源,通过DNSv6代理技术,真实的DNS服务器便对DNS客户端不可见,这样可以避免真实的DNS服务器遭受客户端的恶意攻击,达到保护真实DNS服务器安全的目的,提高网络的安全性。

[1] 百度百科.IPv6[DB/OL].2015-02-27.http://baike.baidu.com/link?url=HCQ7hhqOmptyjQojI6UZyf0bB8VoF3 Rg2np3yEaacrc20JGCyC9Avo43wkaSCQ4J2HQn7UNU9ECY0 iNmymswJa.

[2] 王大阜.基于Linux平台下的IPv6 DNS系统的实现[J].计算机与信息技术,2009(4):72-73.

[3] Thomson S,Huitema C.DNS extensions to support IP version 6[S].RFC 1886,1995.

[4] Crawford M,Huitema C.DNS extensions to support IPv6 address aggregation and renumbering[S].RFC 2874,2000.

[5] 华为技术有限公司.AR150&AR160&AR200&AR1200&AR2 200&AR3200产品文档[EB/OL].2014.http://support.huawei.com/ehedex/hdx.do?docid=DOC1000043775& lang=zh.

[6] 武浦军,余镇危,张 英,等.IPv6 DNS代理软件的设计与实现[J].计算机工程,2005,31(11):211-213.

[7] 冯中华.VFP系统动态数据报表程序设计[J].计算机工程与应用,2003,39(2):194-195.

[8] 盖一凡,吴国升.IPv6地址以及IPv6 DNS[J].通信管理与技术,2005(1):50-50.

[9] 张惠姝.DNS安全防护关键技术研究[J].电信技术,2015(9):99-104.

[10] 孔 政,姜秀柱.DNS欺骗原理及其防御方案[J].计算机工程,2010,36(3):125-127.

[11] 杨驌宇.高并发环境中路由器平台上DNS代理的设计与实现[D].武汉:华中科技大学,2012.

[12] 孙文芳,冯 坚.智能DNS系统建设[J].有线电视技术,2015(7):35-37.

[13] Cisco Systems,Inc.IP addressing:DNS configuration guide,Cisco IOS release 12.4T[EB/OL].2011.http://www.cisco.com/c/en/us/td/docs/ios-xml/ios/ipaddr_dns/configuration/12-4t/dns-12-4t-book.pdf.

[14] 百度百科.DNS(域名系统)[DB/OL].2014-12-25.http://baike.baidu.com/link?url=E0XaYtVkbmIeQjC3 pKsPr9j5t6JqsEj45YS7srRVpnbQ0OYUVVJhmiIYX9PzBbb68

KCQohFlx_TZfb1qYZVFs-mLoEySii0OK5tJYtFGA4i.

[15] 百度文库.代理服务器的作用[DB/OL].2012-08-25.http://wenku.baidu.com/view/a97bda345a8102d276a22f21.html.

Research on Application of DNSv6 Proxy Technology in Network

WANG Wen-jun

(College of Information Engineering,Guizhou Minzu University,Guiyang 550025,China)

With the popularity of IPv6,it needs to use IPv6 domain name resolution technology to resolve the problem that it is hard to memory IPv6 address information for people.DNSv6 proxy technology provides the conversion between the domain name and IPv6 address for users by creating a mapping between the DNSv6 query from DNS client and the DNSv6 response from DNS server and forwarding the DNS query and response between DNS client and DNS server,and caches the query results.So it is able to reach the purpose of simplifying the management of network,accelerating the speed of resolution,improving the efficiency of resolution,and making the network more stable and safer.It also can configure multiple DNS servers on the DNS proxy server by DNSv6 proxy technology to realize disaster recovery.In this paper,the concept,operational principle of DNSv6 proxy technology and the formats of three major types of DNSv6 query are introduced briefly,the application of the DNSv6 proxy technology in the network is studied,the structure design of DNSv6 proxy feature and data tables is completed,and the concrete implementation is discussed.

IPv6;DNSv6;proxy;query

2015-05-22

2015-08-26

时间:2016-02-18

贵州省科技计划联合基金项目(黔科合LH字[2014]7379);贵州民族大学科研基金资助项目(校科研2014(53)号)

王文军(1984-),男,工程师,讲师,硕士,研究方向为网络软件、嵌入式软件。

http://www.cnki.net/kcms/detail/61.1450.TP.20160218.1619.012.html

TP393

A

1673-629X(2016)03-0185-05

10.3969/j.issn.1673-629X.2016.03.043

猜你喜欢

表项域名报文
基于J1939 协议多包报文的时序研究及应用
一种改进的TCAM路由表项管理算法及实现
CTCS-2级报文数据管理需求分析和实现
基于ARMA模型预测的交换机流表更新算法
浅析反驳类报文要点
Combosquatting域名抢注的测量研究
如何购买WordPress网站域名及绑定域名
SDN数据中心网络基于流表项转换的流表调度优化
ATS与列车通信报文分析
顶级域名争夺战:ICANN放出1930个通用顶级域名,申请者有上千家