DNS
DNS,全称DomainNameSystem,即域名解析系统。DNS帮助用户在互联网上寻找路径。在互联网上的每一个计算机都拥有一个唯一的地址,称作“IP地址”(即互联网协议地址)。由于IP地址(为一串数字)不方便记忆,DNS允许用户使用一串常见的字母(即“域名”)取代。
中文名称:域名解析系统
外文名称:DomainNameSystem
简称:DNS
发明时间:1983年
发明人:保罗·莫卡派乔斯(PaulMockapetris)
1、简介
DNS是指:域名服务器(DomainNameServer)。在Internet上域名与IP地址之间是一一对应的,域名虽然便于人们记忆,但机器之间只能互相认识IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,DNS就是进行域名解析的服务器。
其中域名必须对应一个IP地址,而IP地址不一定只对应一个域名。域名系统采用类似目录树的等级结构。域名服务器为客户机/服务器模式中的服务器方,它主要有两种形式:主服务器和转发服务器。在Internet上域名与IP地址之间是一对一(或者多对一)的,也可采用DNS轮询实现一对多,域名虽然便于人们记忆,但机器之间只认IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,DNS就是进行域名解析的服务器。DNS命名用于Internet的TCP/IP网络中,通过用户友好的名称查找计算机和服务。当用户在应用程序中输入DNS名称时,DNS服务可以将此名称解析为与之相关的其他信息,如IP地址。因为,你在上网时输入的网址,是通过域名解析系统解析找到了相对应的IP地址,这样才能上网。其实,域名的最终指向是IP。DNS解析是一个树形结构,当前请求的服务器请求不了就把它提交给它的上级服务器,一直到成功解析。
在IPV4中IP是由32位二进制数组成的,将这32位二进制数分成4组每组8个二进制数,将这8个二进制数转化成十进制数,就是IP地址,其范围是在0~255之间。因为,8个二进制数转化为十进制数的最大范围就是0~255。现在已开始试行、将来必将代替IPv4的IPV6中,将以128位二进制数表示一个IP地址。
2、发展
DNS最早于1983年由保罗·莫卡派乔斯(PaulMockapetris)发明;原始的技术规范在882号因特网标准草案(RFC882)中发布。1987年发布的第1034和1035号草案修正了DNS技术规范,并废除了之前的第882和883号草案。在此之后对因特网标准草案的修改基本上没有涉及到DNS技术规范部分的改动。早期的域名必须以英文句号“.”结尾,这样DNS才能够进行域名解析。如今DNS服务器已经可以自动补上结尾的句号。当前,对于域名长度的限制是63个字符。
3、功能
每个IP地址都可以有一个主机名,主机名由一个或多个字符串组成,字符串之间用小数点隔开。有了主机名,就不要死记硬背每台IP设备的IP地址,只要记住相对直观有意义的主机名就行了。这就是DNS协议所要完成的功能。
主机名到IP地址的映射有两种方式:
1)静态映射,每台设备上都配置主机到IP地址的映射,各设备独立维护自己的映射表,而且只供本设备使用;
2)动态映射,建立一套域名解析系统(DNS),只在专门的DNS服务器上配置主机到IP地址的映射,网络上需要使用主机名通信的设备,首先需要到DNS服务器查询主机所对应的IP地址。
通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。锐捷设备支持在本地进行主机名解析,也支持通过DNS进行域名解析。在解析域名时,可以首先采用静态域名解析的方法,如果静态域名解析不成功,再采用动态域名解析的方法。可以将一些常用的域名放入静态域名解析表中,这样可以大大提高域名解析效率。
4、冗余
为保证服务的高可用性,DNS要求使用多台名称服务器冗余支持每个区域。
某个区域的资源记录通过手动或自动方式更新到单个主名称服务器(称为主DNS服务器)上,主DNS服务器可以是一个或几个区域的权威名称服务器。
其它冗余名称服务器(称为辅DNS服务器)用作同一区域中主服务器的备份服务器,以防主服务器无法访问或宕机。辅DNS服务器定期与主DNS服务器通讯,确保它的区域信息保持最新。如果不是最新信息,辅DNS服务器就会从主服务器获取最新区域数据文件的副本。这种将区域文件复制到多台名称服务器的过程称为区域复制。
5、重要性
1、技术角度看
DNS解析是互联网绝大多数应用的实际寻址方式;域名技术的再发展、以及基于域名技术的多种应用,丰富了互联网应用和协议。
2、资源角度看
域名是互联网上的身份标识,是不可重复的唯一标识资源;互联网的全球化使得域名成为标识一国主权的国家战略资源。
6、相关介绍
域名结构
通常Internet主机域名的一般结构为:主机名.三级域名.二级域名.*域名。Internet的*域名由Internet网络协会域名注册查询负责网络地址分配的委员会进行登记和管理,它还为Internet的每一台主机分配唯一的IP地址。全世界现有三个大的网络信息中心:位于美国的Inter-NIC,负责美国及其他地区;位于荷兰的RIPE-NIC,负责欧洲地区;位于日本的APNIC,负责亚太地区。
解析器
解析器,或另一台DNS服务器递归代表的情况下,域名解析器,协商使用递归服务,使用查询头位。
解析通常需要遍历多个名称服务器,找到所需要的信息。然而,一些解析器的功能更简单地只用一个名称服务器进行通信。这些简单的解析器依赖于一个递归名称服务器(称为“存根解析器”),为他们寻找信息的执行工作。
DNS服务器
提供DNS服务的是安装了DNS服务器端软件的计算机。服务器端软件既可以是基于类linux操作系统,也可以是基于Windows操作系统的。装好DNS服务器软件后,您就可以在您指定的位置创建区域文件了,所谓区域文件就是包含了此域中名字到IP地址解析记录的一个文件,如文件的内容可能是这样的:primarynameserver=dns2(主服务器的主机名是)
serial=2913(序列号=2913、这个序列号的作用是当辅域名服务器来复制这个文件的时候,如果号码增加了就复制)
refresh=10800(3hours)(刷新=10800秒、辅域名服务器每隔3小时查询一个主服务器)
retry=3600(1hour)(重试=3600秒、当辅域名服务试图在主服务器上查询更新时,而连接失败了,辅域名服务器每隔1小时访问主域名服务器)
expire=604800(7days)(到期=604800秒、辅域名服务器在向主服务更新失败后,7天后删除中的记录。)
defaultTTL=3600(1hour)(默认生存时间=3600秒、缓存服务器保存记录的时间是1小时。也就是告诉缓存服务器保存域的解析记录为1小时)
ZDNS
中国科学院计算机网络信息中心授权,将CNGI可信域名系统产业化项目的技术成果进行科研转化,研发出我国首个面向下一代互联网的域名服务平台——ZDNS。
7、基本结构
*域名
*域名(TLDs)是用以识别域名所属类别、应用范围、注册国等公用信息的代码,又包括四种不同意义的代码:
(a)ISO3166标准国家代码。此标准代码系将国家与地区的英文名称缩写为两位英文字母后形成的代码,如cn代表*;hk代表中国香港;tw代表中国*;us代表美国;jp代表日本;uk代表英国,等等。到目前为止,ISO3166标准代码中已收录了180余个被联合国系统所采用的国家与地区代码。然而,对于如何在域名注册领域使用这些代码,不同国家所执行的政策并不相同。多数国家都要求,凡在域名中加入其国家代码的,主机必须处于该国。但也有些国家并无这方面的要求。
(b)专用*域名(或称保留*域名)。专用*域名共有3个,即:“.mil”、“.edu”与“.gov”。这3个*域名在网络域名发展史上具有特殊地位,分别为军事机构、教育机构与*机构所专用;任何非属于此类机构者,均不得在相应的*域名下注册其自己的域名。凡属于美国的机构,在此3个*域名下注册时,无需加注国家代码。当我们看到以此3个*域名结尾的域名,即没有任何一个国家的国家代码时,即表明域名所有者系美国的机构。
(c)通用*域名(genericTop-LevelDomains,简称gTLDs)。所谓通用*域名,指的是来自任何国家的任何人均可*使用的*域名,原来也有3个,即“.com”、“.org”与“.net”。但在习惯上,这3个域名也分别标识注册者的3种不同类属,如“.com”用以代表商业实体;“.org”用以代表非营利性组织;“.net”则用以代表网络服务者。但在实际注册时,一般不对在此3个*下注册域名的申请者的类属加以审查,由申请者自行决定其使用哪一个。然而,由于网民们已经基本上接受了不同*域名所代表的不同类属,为了使网民不致因先入为主的类属判断而忽略某一域名注册人的网页,我们建议注册者最好不要突破自身的业务的属性而到其他类别有*域名下注册域名。
二级域名
二级域名是指由域名使用者自己设计的,能够体现使用者的特殊性,并据以同其他人的域名相区别的字符串,如.jpo-miti就是日本特许厅的二级域名(在日本的域名系统中则属三级域名)。根据各个国家与地区INTERNET网络发展的需要,各该国家或地区还可以设计层次更多的域名系统,使其包括三级域名、四级域名等,以分别代表不同的地域或行业标志。例如,中国目前的INTERNET网络域名系统即分为国家与地方两个管理层,其中由国家管理层管理的域名包括国家代码、类别代码及自身代码3个层次;地方管理的域名则须附加地区代码,从而包含4个层次。日本的域名系统则包括国家代码、类别代码或地理区域代码与自身代码3个层次。
主要位置
提供DNS服务的是安装了DNS服务器端软件的计算机。服务器端软件既可以是基于类Unix操作系统,也可以是基于Windows操作系统的。装好DNS服务器软件后,您就可以在您指定的位置创建区域文件了,所谓区域文件就是包含了此域中名字到IP地址解析记录的一个文件,如文件的内容可能是这样的:
primarynameserver=dns2(主服务器的主机名是)
serial=2913(当前序列号是2913。这个序列号的作用是当辅域名服务器来copy这个文件的时候,如果号码增加了就copy)
refresh=10800(3hours)(辅域名服务器每隔3小时查询一个主服务器)
retry=3600(1hour)(当辅域名服务试图在主服务器上查询更新时,而连接失败了,辅域名服务器每隔1小时访问主域名服务器)
expire=604800(7days)(辅域名服务器在向主服务更新失败后,7天后删除中的记录。)
defaultTTL=3600(1hour)(缓存服务器保存记录的时间是1小时。也就是告诉缓存服务器保存域的解析记录为1小时)
8、查询方法
查询DNS服务器上的资源记录
在Windows平台下,使用命令行工具,输入nslookup,返回的结果包括域名对应的IP地址(A记录)、别名(CNAME记录)等。除了以上方法外,还可以通过一些DNS查询站点如国外的国内的查询域名的DNS信息。
常用的资源记录类型
A地址此记录列出特定主机名的IP地址。这是名称解析的重要记录。
CNAME标准名称此记录指定标准主机名的别名。
MX邮件交换器此记录列出了负责接收发到域中的电子邮件的主机。
NS名称服务器此记录指定负责给定区域的名称服务器。
FQDN名的解析过程查询
若想跟踪一个FQDN名的解析过程,在LinuxShell下输入digwww+trace,返回的结果包括从跟域开始的递归或迭代过程,一直到权威域名服务器。
GenieProDNS应对DNS劫持和DNS缓存中毒攻击的关键性机制:一致性检查
每个Geniepro节点将自身的DNS记录发送给工作组内其他节点请求一致性检查;
每个Geniepro节点将自身的记录与收到的记录进行比较;
每个Geniepro工作组的通信协调节点将获得的DNS记录更新发送给其他组的通信协调节点请求一致性检查;
每个Genipro工作组的通信协调节点向上一级DNS服务器请求更新记录并与收到的其他通信协调节点的记录进行比较。
一致性仲裁
如果一致性检查发现记录不一致情况,则根据策略(少数服从多数、一票否决等)决定是否接受记录的变化根据结果,各Geniepro节点将自身记录进行统一通信协调节点选举选举出的通信协调节点在任期内具有更新组内节点的权限选举过程满足不可预测性和不可重复性DNS资源记录如前所述,每个DNS数据库都由资源记录构成。一般来说,资源记录包含与特定主机有关的信息,如IP地址、主机的所有者或者提供服务的类型。
9、安全问题
1.针对域名系统的恶意攻击:DDOS攻击造成域名解析瘫痪。
2.域名劫持:修改注册信息、劫持解析结果。
3.国家性质的域名系统安全事件:“.ly”域名瘫痪、“.af”域名的域名管理权变更。
4.系统上运行的DNS服务存在漏洞,导致被黑客获取权限,从而篡改DNS信息。
5.DNS设置不当,导致泄漏一些敏感信息。提供给黑客进一步攻击提供有力信息。
10、故障解决
当DNS解析出现错误,例如把一个域名解析成一个错误的IP地址,或者根本不知道某个域名对应的IP地址是什么时,就无法通过域名访问相应的站点了,这就是DNS解析故障。出现DNS解析故障最大的症状就是访问站点对应的IP地址没有问题,然而访问他的域名就会出现错误。
(1)用nslookup(网路查询)来判断是否真的是DNS解析故障:
要想百分之百判断是否为DNS解析故障就需要通过系统自带的NSLOOKUP来解决了。
第一步:确认自己的系统是windows2000和windowsxp以上操作系统,然后通过“开始->运行->输入CMD”后回车进入命令行模式。
第二步:输入nslookup命令后回车,将进入DNS解析查询界面。
第三步:命令行窗口中会显示出当前系统所使用的DNS服务器地址,例如笔者的DNS服务器IP为202.106.0.20。
第四步:接下来输入无法访问的站点对应的域名。假如不能访问的话,那么DNS解析应该是不能够正常进行的,会收到DNSrequesttimedout,timeoutwas2seconds的提示信息。这说明本地计算机确实出现了DNS解析故障。
小提示:如果DNS解析正常的话,会反馈回正确的IP地址。
(2)查询DNS服务器工作是否正常:
这时候要看本地计算机使用的DNS地址是多少了,并且查询他的运行情况。
第一步:通过“开始->运行->输入CMD”后回车进入命令行模式。
第二步:输入ipconfig/all命令来查询网络参数。
第三步:在ipconfig/all显示信息中能够看到一个地方写着DNSSERVERS,这个就是本地的DNS服务器地址。例如笔者的是202.106.0.20和202.106.46.151。从这个地址可以看出是个外网地址,如果使用外网DNS出现解析错误时,可以更换一个其他的DNS服务器地址即可解决问题。
第四步:如果在DNS服务器处显示的是个人公司的内部网络地址,那么说明该公司的DNS解析工作是交给公司内部的DNS服务器来完成的,这时需要检查这个DNS服务器,在DNS服务器上进行nslookup操作看是否可以正常解析。解决DNS服务器上的DNS服务故障,一般来说问题也能够解决。
(3)清除DNS缓存信息法:
第一步:通过“开始->运行->输入CMD”进入命令行模式。
第二步:在命令行模式中我们可以看到在ipconfig/?中有一个名为/flushdns的参数,这个就是清除DNS缓存信息的命令。
第三步:执行ipconfig/flushdns命令,当出现“successfullyflushedthednsresolvercache”的提示时就说明当前计算机的缓存信息已经被成功清除。
第四步:接下来我们再访问域名时,就会到DNS服务器上获取最新解析地址,再也不会出现因为以前的缓存造成解析错误故障了。
(4)修改HOSTS(主机)文件法:
第一步:通过“开始->搜索”,然后查找名叫hosts的文件。
第二步:当然对于已经知道他的路径的读者可以直接进入c:\windows\system32\drivers\etc目录中找到HOSTS文件。如果你的系统是windows2000,那么应该到c:\winnt\system32\drivers\etc目录中寻找。
第三步:双击HOSTS文件,然后选择用“记事本”程序将其打开。
第四步:之后我们就会看到HOSTS文件的所有内容了,默认情况下只有一行内容“127.0.0.1localhost”。(其他前面带有#的行都不是真正的内容,只是帮助信息而已)
第五步:将你希望进行DNS解析的条目添加到HOSTS文件中。具体格式是先写该域名对应的IP地址,然后空格接域名信息。
第六步:设置完毕后我们访问网址时就会自动根据是在内网还是外网来解析了。