DNS解析

2024-06-13

DNS解析(共5篇)

DNS解析 篇1

DNS(Domain Name System,域名系统)[1],作为将域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过域名,最终得到该域名对应的IP地址的过程叫做域名解析。DNS中常见的资源记录类型有主机记录(A记录或AAAA记录)、别名记录(CNAME记录)等。DNS会根据记录设置的TTL缓存记录。最常见的异常是因为在整个解析的环节中错误地响应了NXDOMAIN(正常响应,但为空,表示不存在该域名),而现有的技术无法判断此种响应的正确性。

本文设计并实现了DNS解析异常处理系统,基于现有的DNS系统改进,使用静态配置文件和动态分析历史解析即结果,支持主机记录、别名记录等,具有较强的异常处理能力。经过测试,Ehdns借助少量的硬件资源来获得高可用性和高可靠性。

1 相关工作

最近几年,因为DNS的问题,包括授权DNS和根DNS,导致出现了多次大范围的网民无法正常上网的现象[2]。

域名出现没法解析有多种可能,其中可能是DNS问题的情况包括本地DNS本身故障、授权DNS故障、根DNS故障[3]。

IDNA是使用基于Punycode码,可以将Unicode字符串映射为有效的DNS字符集。因此,诸如“x.中国”这样的域名可以在地址栏直接输入并可正常解析。

OpenDNS是2006年7月由David Ulevitch创建,为个人和商业提供DNS方案,加快域名解析速度,并拥有反钓鱼过滤器和输入纠正等功能[4]。

EDNS是在RFC2671中提出的一种展DNS机制,其在已有DNS消息格式的基础上增加一些字段,来支持更多的DNS请求业务。

DNSPod创建于2006年3月,可根据请求来源,将多种运营商的线路细致划分至省(国内)/ 大洲(国外),智能化返回最佳解析结果,也被称为智能动态DNS[5]。

尽管DNS周边相关产品较为繁多,但是关于DNS的异常处理的很少,现有的处理手段只是将所有的异常请求响应到一个固定的导航或错误提示ip[6],并没有起到异常处理的效果,故增加一定的异常处理显得越发必要。

2 原理概述

2.1 递归和迭代

目前绝大多数网民上网的场景是,网民会自动获取并使用接入运营商的本地DNS进行解析,解析过程分为递归和迭代两种。

网民客户端向本地DNS服务器查询,属于递归查询;如果主机所询问的本地域名服务器不知道被查询域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其他根域名服务器继续发出查询请求报文;

DNS服务器之间就是的交互查询就是迭代查询,如图1所示,当根域名服务器收到本地域名服务器的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地域名服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地域名服务器进行后续的查询。

2.2 缓存

每个DNS都会有缓存,缓存的时长(即TTL)由域名授权服务器设置的,发起请求方会将域名解析结果缓存TTL时长,从而减少不必要的频繁访问,也减少了服务器的压力。如图2所示,在任何解析前都会先检查缓存,如有便直接返回。

2.3 解析异常

域名出现没法解析有多种可能,其中可能是DNS问题的情况包括本地DNS本身故障、授权DNS故障、根DNS故障;故障又可能源自硬件、网络、压力等异常。如图3所示,这些异常最终会产生NXDOMAIN的响应。

于是,DNS得到错误的响应、并响应给网民和缓存很长时间,便造成了大范围的长时间的错误影响[7]。

3 系统结构

本节描述了Ehdns的系统结构及其中附加缓存和备选记录的工作原理[8]。

3.1 结构概述

如图4所示,在原DNS的基础上外围添加了域名备选记录和附加缓存模块,其在异常处理过程中会被使用。

3.2 域名备选记录

在DNS的配置文件中指定域及其相应静态记录文件的路径[9],例如下:

定义静态记录文件的内容,类似bind的zone文件[10]:

3.3 附加缓存

附加缓存中的数据结构如图5所示:

按如下方式存储,类似于JSON,用于定时在硬盘上持久化数据。

{"www.ctyun.cn": [{"record": {"type":"C","data": ["ctyun.cn.ctycdn.com"],"times":"99"}}, {"record": {"type":"A","data": [ "118.85.194.43","118.85.194.44"],"times":"31"}} ,{"record":{"type":"A","data":["118.192.68.122"],"times":"11"}}]}

其中type类型可完美支持原DNS的类型,A表示ipv4主机记录,AAAA表示ipv6主机记录,C表示CNAME别名记录。

4 关键技术

4.1 异常处理步骤

如图6所示,在本地DNS服务器上为域名添加相应的域名备选记录;当域名解析服务器无法正常获得记录时查询该配置文件,当有对应的Zone文件存在时,便给出响应。

为本地DNS服务器附加一套缓存机制,用于缓存历史解析结果及次数,默认缓存三条,当某一次解析请求在缓存中没有记录时,便会经过原始一般的递归解析:

当解析结果正常时,除了要将结果返回给用户并缓存外,还需要对结果进行附加缓存处理,从而可以动态分析;

当解析出现异常导致结果为空记录时,且备选解析文件中也没有相应的记录时,则从附加缓存中查找次数最多的记录,该记录被认为最可靠、最可能正确的记录。继而将此记录返回给客户,且将记录伴随60s的TTL写入内存,提高在异常期间的响应效率及保障在异常消失后的1分钟内能获取到真正正确的结果。

4.2 附加缓存处理

在附加缓存中,每个域名都对应一个记录结构,存放有历史解析结果,作为异常发生时的纠正参考。每个域名的记录结构实为一个有序链表,按照解析次数由高到低排序。为了高效的增删改查,本链表又设计为双向链表[11]。

当某一次解析请求在缓存中没有记录时,且解析结果正常时:除了要将结果返回给用户并正常缓存外,还需进行附加缓存处理[12],将结果和附加缓存中的历史信息进行比较:

(1)如已存在,则将对应记录次数加一;

(2)如不存在,则生成临时记录,次数为1;

(3)对记录和临时记录进行链表处理;

a.附加缓存中数据结构如图5所示,为有序的双向链表,可以高效地增删改查,节点数据结构为三元数据组{类型,值数组,次数};其中类型可以为A,AAAA,C分别对应域名的ipv4记录,ipv6记录及Cname记录;因为解析出来的ip记录可能为多个,所以值设计为普通数组;次数则是该记录为正常解析的次数。

b.链表为空时,如图7所示,临时记录会作为新节点,加入链表;

c.加入一个节点后如图8所示,当又有新节点后来时,如图9所示,会比较次数,再进行插入。

d.链表头部始终是历史正常解析次数最多的记录,该记录被认为最可靠、最可能正确的记录

e.在处理过程中,使用Head和Tail指针直接快速获取头部和尾部。

4.3 缓存刷新

因为在DNS运行过程中会需要变更域名备选记录,又因为缓存中有海量的有用缓存,那么就不能采用会丢失内存数据的冷重启,而是借鉴bind中Rndc的思想,使得配置文件可以热加载;并且可以加上域名名称作为参数,只需要热加载配置文件中某个域名,而不是所有域名,不仅不中断在线服务,并且最小影响服务和性能。

5 性能评测

5.1 实验准备

实验采用域名生成器来生成各顶级域下各类型的域名,且有一定比例的异常;相关参数见表1。另外还选取了不同配置服务器进行测试,以内存大小为参数。

5.2 性能测试

本节不但测试了EhDns在异常纠错的可用性,还测试了各种约束条件对Ehdns性能的影响,然后将其作为测试变量,与bind(版本9.2)进行对比测试。

域名重复的概率:

因为EhDns在域名解析前后的处理逻辑有所差异,故以此为变量测试。

如图10所示,EhDns的吞吐量要略小于Bind,这是因为EhDns的附加缓存链表处理需要消耗一些额外的运算,导致了吞吐量下降;但是随着域名重复概率的加大,差距在逐渐缩小,这是因为对于重复的域名,EhDns的额外处理需要的资源较少,并且对于实际DNS请求,绝大部分都会重复,甚至重复很多次。

内存大小:

因为DNS需要内存缓存数据,不同大小的内存会导致内存不够、以致影响效率,故以此为变量测试。

如图11所示:EhDns的吞吐量要略小于Bind,这是因为EhDns需要消耗一些额外的内存,导致了吞吐量下降;但是随着域名重复概率的加大,差距在逐渐缩小,这是因为对于重复的域名,EhDns占用的内存不会增加,在内存足够大的时候,几乎没有差距。并且在实际生活中,内存越来越大且越来越廉价,这使得占用额外的内存资源成为可能。

6 结论

本文设计并实现了一个域名系统解析异常处理系统 -Ehdns。本系统使用静态配置文件和动态结果分析,基于有序链表对记录进行存储和管理,再配有缓存刷新功能,使系统具有实时性、高吞吐量、可扩展性和鲁棒性等特点。

由于该系统可以很有效地处理在解析过程中发生的异常,并拥有在处理海量请求高效性能,它可被研究应用于本地DNS,授权DNS,智能DNS,根DNS等领域。

DNS解析 篇2

打开DNS控制台,在“rtj.net”区域上单击鼠标右键,在弹出的菜单中选择“新建域”,接着在“新建DNS域”对话框中输入“*”创建一个梦“*”的二级区域,最后点击“确定”按钮。

这个区域是DNS服务器允许建立的,然后还需要在“*.rtj.net”区域中创建一个空主机名的记录。右键单击“*. rtj.net”区域,在弹出的菜单中选择“新建主机”,在“新建主机”对话框中,“名称”栏中不要输入任何内容,“IP地址”栏中输入泛域名解析指向的IP地址,例如输入“192.168.0.1”,最后单击“添加主机”按钮即可,这样就可以实现对rtj.net域的泛域名解析。

DNS解析 篇3

关键词:域名解析,BIND9,动态DNS

中图分类号:TP393 文献标识码:A 文章编号:1006-8937(2015)17-0065-01

1 DNS与BIND

随着互联网的快速发展,为了使用户们能够通过便于记忆的主机名来访问网络中的计算机,域名解析系统应运而生。在类UNIX操作系统中,可以使用HOST表,NIS和DNS三种方式实现主机名与IP地址之间的转换。由于前两种方式繁琐且效率较低,使用分层分布式数据库技术的DNS域名服务被广泛使用。DNS域名空间结构如图1所示。

BIND是DNS的一个实现版本,约占所有DNS服务器的90%。BIND最早由加州大学伯克里分校开发,互联网系统协会(Internet Systems Consortium,ISC)已发布了BIND 9的最新版本BIND 9.10.0rc2,该版本增加了prefetch选项,可提高递归解析服务器的性能。

BIND程序属于C/S架构,其客户端称为转换程序(resolver),负责产生域名信息的查询,将这类信息发给服务器端。BIND服务器端程序是守护进程named,负责回答转换程序的查询。通过修改named配置文件,可以根据IP来源,给出不同的域名解析结果,合理利用局域网内的资源,从而达到提高网络速度、控制出口带宽的目的。

2 BIND关键配置文件

BIND的关键文件有以下几个:

①named.conf用于设置DNS全局参数,指定区域文件名称及其保存路径。

②named.ca指向根域名服务器,用于高速缓存服务器的初始配置。

③正向区域数据文件及反向区域文件,由用户自己创建,为自己局域网内的主机提供域名映射。

3 设置根据外网ip来源动态解析

如果局域网接入了两个不同的运营商,以教育网和网通为例,局域网内www服务器配置教育网网段ip,导致部分外网网通及电信用户反映局域网内www服务器速度较慢。可以采用BIND提供的view视图功能,对DNS实现动态分割,即:根据访问www服务器的ip来源,分别指向www服务器的不同ip。

①首先编辑教育网ip地址列表,放到cernet.acl中。

②在name.conf文件中,使用view进行zone文件区分,示例如下:

a⑤编辑in.aaa.cn.zone和out.aaa.cn.zone两个区域文件,将www服务器分别指向不同的ip。并编辑相应的反向解析文件。

设置完成后,重启named服务,即可生效。

4 劫持局域网内对外网的访问

局域网内用户由于业务需要,经常大量访问一台位于公网的服务器,因出口带宽限制,访问速度较慢。该服务提供商愿意在内网搭建一台提供相同业务的服务器,但域名仍旧希望采用原有的learn.bbb.org,与局域网的aaa.cn属于不同顶级域。同时bbb.org域名下的www,mail等服务器仍指向原有ip。

实现方法如下:

①在named.conf文件中添加bbb.org区域,将该域名指向bbb.org.zone文件:

设置完成后,重启named服务,配置生效。内网用户在浏览器地址栏输入learn.bbb.org,DNS将自动指向对应的内网ip。

5 结 语

通过对BIND的配置,能够根据内外网不同来源ip的访问需求,进行动态域名解析,提高了用户的访问速度,节省了出口带宽资源,实现了局域网内的智能DNS。

参考文献:

[1] 李静梅,吴鹏,智能DNS系统的设计与实现[J].计算机工程与应用,2007,(11).

[2] 蔡昭权.策略路由和动态DNS在校园网中的应用[J].计算机工程与设计,2005,(5).

DNS解析 篇4

DNS智能解析是DNS服务器根据客户端请求IP的不同来给客户端返回不同的服务器地址,比如说电信用户访问www.tjnu.edu.cn的时候DNS服务器会返回给用户电信服务器,网通用户访问www.tjnu.edu.cn的时候DNS服务器会返回给用户网通服务器,这样就解决了南北用户访问过慢或电信用户访问网通服务器过慢的问题,建立VIEW视图来实现DNS服务器对不同IP、不同网段的智能解析。

2 智能DNS解析系统的研究与设计

研究本课题需要具备一定的DNS基础,例如A记录、CNAME记录、DNS的正向解析/逆向解析,本课题采用VMware虚拟机来模拟DNS服务器,虚拟机配置双网卡来模拟DNS对两个不同网段做出不同的解析,其中一块网卡配置为Bridged模式,直接连接到局域网内网(202.113.96.0/20)上,另一块网卡配置为host-only,仅与本机进行通信(123.151.91.0/20)。IP配置如下:本地物理网卡(本地连接)202.113.96.100/24,DNS为202.113.96.10虚拟网卡(VMware Network Adapter VMnet1)123.151.91.1/24,DNS为123.151.91.128

虚拟机:eth0(Bridged)202.113.96.101/24,eth1(host-only)123.151.91.128/24,DNS配置:以www.tjnu.edu cn为例,如果客户端为202.113.96.0/20段,则将www tjnu.edu.cn解析到202.113.96.11;如果客户端为123.151.91.0/20段,则将www.tjnu.edu.cn解析到123.151.91.10。测试方案:先禁用本地连接,使用nslookup工具查看www.tjnu.edu.cn,返回202.113.96.11则正确;再禁用虚拟网卡,使用nslookup工具查看www tjnu.edu.cn,返回123.151.91.10则正确。bind安装运行模式在bind的chroot功能安全设置,使bind可以在一个chroot的模式下运行,bind运行时的/(根)目录,并不是系统真正的/(根)目录,只是系统中的一个子目录而已。这样做的目的是为了提高安全性。因为在chroot的模式下,bind可以访问的范围仅限于这个子目录的范围内,防止进入到系统的其他目录中。使用yum install命令来安装,[root@localhost soft]#yum install bind[root@localhost soft]#yum install bind-libs[root@localhost soft]#yum install bind-utils[root@localhost soft]#yum install bind-chroot[root@localhost soft]#rpm-qa|grep bind

如果安装正确,我们可以看到所安装的rpm包。设置DNS服务开机自启动[root@localhost soft]#chkconfig named on启动命令为:[root@localhost soft]#service ntamed start,webmin是一个可视化的linux服务器管理工具,下载安装[root@localhost soft]#rpm-ivh webmin-1.560-1.noarch.rpm

Webmin install complete.You can now login to http://localhost.localdomain:10000/as root with your root password.安装完成之后,默认的访问端口是10000,默认用户名位root,密码为系统root密码。访问时请确认系统防火墙已经开放10000端口。启动命令为[root@localhost soft]#service webmin start

更改界面语言,选择Webmin下的Change Language and Theme,在语言栏选择“Simplified Chinese(ZH_CN.UTF-8)”配置DNS由于本课题需要对两个不同的IP段来实现分别解析,因此我们需要创建两个不同的视图。创建视图后,所有的域名记录(创建的主区域)都必须属于某个视图,不允许没有视图的主区域存在。

这里创建两个视图分别为:名称view_202.113.96.0对202.113.96.0/20的客户端请求进行解析名称:view_123.151.91.0对123.151.91.0/20的客户端请求进行解析,创建每个域名在DNS上的配置文件,以www.tjnu.edu.cn为例,我们首先在DNS服务器上创建一个将www.tjnu.edu.cn解析到02.113.96.10的主记录,即正向记录,也就是域名到IP;然后再创建将202.113.96.10解析到www.tjnu.edu.cn的主记录,这个记录我们称之为逆向记录,即IP到域名。

对于属于同一段IP的服务器来说,每个域名必须创建一个正向主区域,所有域名可以共用一个逆向主区域。我们创建新的主区域,区域类型选择“正向”,域名/网络填写域名“www.tjnu.edu.cn”,在视图创建选择此主区域所属的视图,这里选择“view_202.113.96.0”,填写E-mail地址。

点击创建即创建成功,会自动跳转到编辑主区域的界面,我们为“tjnu.edu.cn”这个区域来添加A记录。选择“地址”选项(地址选项就相当于A记录),在名称中填写二级域名,在地址中填写域名所对应的服务器地址,名称填写“@”,即表示tjnu.edu.cn,没有二级域名,当然也可以创建www/ftp/mail二级域名,另外可以配置泛域名解析,即*.tjnu.edu.cn,所有地址列表中没有的名称全部会匹配到名称“*”所对应的IP地址,确认“*”规则位于最末尾,否则位于“*”之后的地址记录得不到解析。

我们创建了tjnu.edu.cn正向解析,还要将IP解析为域名,这样服务器将数据通过对应的域名返回给客户端。创建逆向主区域过程区域类型选择“逆向”,域名/网络填写“202.113.96.0”,在视图中创建选择“view_202.113.96.0”,填入E-mail,然后点击创建,进行逆向地址的创建。在地址中填写服务IP地址,主机名中填写IP所对应的域名。我们的DNS服务器就能解析tjnu.edu.cn域名了。

另一个视图中域名解析的配置,创建主区域“在视图中创建”这个选项,我们选择的是view_202.113.96.0,我们所创建的tjnu.edu.cn这个域名解析只能对202.113.96.0/20段内的客户进行解析,我们再来创建两个规则,区域类型为“正向”,域名/网络为tjnu.edu.cn,视图属于“view_123.151.91.0”,在“tjnu.edu.cn”主区域添加地址,名称为“@”,地址为“123.151.91.200”在不同的视图中可以存在同名的主区域,但是在相同的视图中不能存在同名的主区域。我们再创建一个逆向的主区域,区域类型为逆向,域名/网络为“123.151.91.0”,视图属于“view_123.151.91.0”。在“123.151.91.0”主区域添加逆向地址,地址为“123.151.91.200”,主机名为“tjnu.edu.cn”。

配置完成后,首先重启DNS服务,可以通过服务器使用命令service named restart来重启DNS服务。测试202.113.96.0段:禁用虚拟网卡,以本地连接的202.113.96.0/20段来测试,禁用本地连接,以虚拟网卡的123.151.91.0/20段来测试。这样就利用BIND9的VIEW视图功能完美的解决了DNS智能解析的问题。

3 结束语

这个课题中我们完成了DNS服务器对不同网段的IP进行智能解析,我们只需要在师大DNS服务器上配置双网卡,判断如果请求IP是外网则返回外网地址,如果请求IP是内网则返回内网地址,有效的解决了内部电脑访问师大网站速度过慢的问题。让电信用户解析到电信服务器,网通用户解析到网通服务器。在DNS服务器上创建两个视图,一个电信视图一个网通视图,并且把电信和网通的IP分别录到两个视图内,然后再针对不同的客户端分别在两个视图内实现DNS智能解析。

摘要:天津师范大学通过网通、电信、教育网三种介质接入网络,DNS智能解析是根据客户端请求IP的不同来源给客户端返回不同的服务器地址。文章以Redhat系统为例,通过建立VIEW视图,并配置相应功能实现DNS智能解析。

关键词:智能DNS解析,Perl语言,网络实验室,多链路

参考文献

[1] RFC3658,Domain Names-implem entation and Specification[S].

[2] RFC1034,DomainNames-concept and Facilities[S].

[3] JoanFeigenbaum,DavidR,Karger,etal.Subjective-costpolicyrouting [J].Theoretical Computer Science,2007,378(2):175-189.

[4] Paul Albitz,Cricket liu.DNS and Bind [M].Fourth Edition.O’Reilly & Associates,2001.

DNS解析 篇5

机器名称

用途

10.190.60.5

hadoop01.ftgov

DNS主机

10.190.60.6

hadoop02.ftgov

DNS客户机

10.190.60.7

hadoop03.ftgov

DNS客户机

Linux下的DNS是用bind来实现的

硬件及配置:

步骤简要

安装bind 命令: yum -y install bind bind-utils bind-chroot

修改/etc/named.conf 访问权限 命令: vim /etc/named.conf

修改 /etc/named.rfc1912.zones文件,加入正解和反解配置 命令:vim /etc/named.rfc1912.zones

解析: zone “ftgov” IN { //当输入类似“ftgov”后缀如:hadoop01.ftgov时正解析 type master; //此为dns主机 file “named.ftgov.com”; //解析文件将会读取 /var/named 目录下named.ftgov.com文件的域名与IP映射配置(文件稍后生成) allow-update { none; }; }; zone “60.190.10.in-addr.arpa” IN { //当输入类似“10.190.60.xxx”时反解析,注意地址顺序 type master; file “named.10.190.60.zone”; //反解文件位于 /var/named 目录下named.10.190.60.zone的配置中(文件稍后生成) allow-update { none; }; };

生成以上配置需要用到的正解和反解文件

打开目录 cd /var/named

生成文件 named.ftgov.com

配置 named.ftgov.com

生成文件 named.10.190.60.zone

配置

配置其他DNS客户端 1. 先用ifconfig 查看当前客户端使用的是哪个网卡如我的机子:用的是eth1网卡

2. 修改文件 vim /etc/sysconfig/network-scripts/ifcfg-eth1 // 具体修改为自己当前使用的网卡名 最后一行加上一行DNS主机的IP3. 重启客户端网络服务

命令 : service network restart 4. 其他客户端同样的操作

启动DNS服务器 启动命令:service named start 查看服务是否正常:tail -n 30 /var/log/messages |grep named

上一篇:货架制造下一篇:数字化管道平台