DNS的定义、发展、实现方法、解析故障等
作者:文墨网    转贴自:本站原创    点击数:2270

DNS的定义
  DNS是域名系统 (Domain Name System) 的缩写,它是由解析器和域名服务器组成的。域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。其中域名必须对应一个IP地址,而IP地址不一定有域名。域名系统采用类似目录树的等级结构。域名服务器为客户机/服务器模式中的服务器方,它主要有两种形式:主服务器和转发服务器。将域名映射为IP地址的过程就称为“域名解析”。在Internet上域名与IP地址之间是一对一(或者多对一)的,域名虽然便于人们记忆,但机器之间只能互相认识IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,DNS就是进行域名解析的服务器。 DNS 命名用于 Internet 等 TCP/IP 网络中,通过用户友好的名称查找计算机和服务。当用户在应用程序中输入 DNS 名称时,DNS 服务可以将此名称解析为与之相关的其他信息,如 IP 地址。因为,你在上网时输入的网址,是通过域名解析系统解析找到了相对应的IP地址,这样才能上网。其实,域名的最终指向是IP。
  在IPV4中IP是由32位二进制数组成的,将这32位二进制数分成4组每组8个二进制数,将这8个二进制数转化成十进制数,就是我们看到的IP地址,其范围是在0~255之间。因为,8个二进制数转化为十进制数的最大范围就是0~255。现在已开始试运行、将来必将代替IPv4的IPV6中,将以128位二进制数表示一个IP地址。
  大家都知道,当我们在上网的时候,通常输入的是如网址,其实这就是一个域名,而我们计算机网络上的计算机彼此之间只能用IP地址才能相互识别。再如,我们去一WEB服务器中请求一WEB页面,我们可以在浏览器中输入网址或者是相应的IP地址,例如我们要上新浪网,我们可以在IE的地址栏中输入网址,也可输入IP地址,但是这样子的IP地址我们记不住或说是很难记住,所以有了域名的说法,这样的域名会让我们容易的记住。
  DNS:Domain Name System 域名管理系统 域名是由圆点分开一串单词或缩写组成的,每一个域名都对应一个惟一的IP地址,这一命名的方法或这样管理域名的系统叫做域名管理系统。
  申请了DNS后,客户可以自己为域名作解析,或增设子域名.客户申请DNS时,建议客户一次性申请两个。

DNS的发展
  DNS最早于1983年由保罗·莫卡派乔斯(Paul Mockapetris)发明;原始的技术规范在882号因特网标准草案(RFC 882)中发布。1987年发布的第1034和1035号草案修正了DNS技术规范,并废除了之前的第882和883号草案。在此之后对因特网标准草案的修改基本上没有涉及到DNS技术规范部分的改动。
  早期的域名必须以英文句号“.”结尾 ,这样DNS才能够进行域名解析。如今DNS服务器已经可以自动补上结尾的句号。
  当前,对于域名长度的限制是63个字符,其中不包括www.和.com或者其他的扩展名。域名同时也仅限于ASCII字符的一个子集,这使得很多其他语言无法正确表示他们的名字和单词。基于Punycode码的IDNA系统,可以将Unicode字符串映射为有效的DNS字符集,这已经通过了验证并被一些注册机构作为一种变通的方法所采纳。

DNS的实现方法

  提供DNS的是计算机,是安装了DNS服务器端软件的计算机。服务器端软件既可以是基于类Unix操作系统,也可以是基于Windows操作系统的。装好DNS服务器软件后,您就可以在您指定的位置创建区域文件了,所谓区域文件就是包含了此域中名字到IP地址解析记录的一个文件(如文件名可能是这个文件的内容是这样的:
  primary name server = dns2(主服务器的主机名是 )
  serial = 2007042913 (当前序列号是2007042913。这个序列号的作用是当辅域名服务器来copy时候这个文件时,如果号码增加了就copy)
  refresh = 10800 (3 hours) (辅域名服务器每隔3小时查询一个主服务器)
  retry = 3600 (1 hour) (当辅域名服务试图在主服务器上查询更时,而连接失败了,辅域名服务器每隔1小时访问主域名服务器)
  expire = 604800 (7 days) (辅域名服务器在向主服务更新失败后,7天后删除中的记录。)
  default TTL = 3600 (1 hour) (缓存服务器保存记录的时间是1小时。也就是告诉202.96.209.5保存域的解析记录为1小时)

  无论您是通过linux还是windows搭建dns服务器,原理都是一致的。
  您可以把DNS服务器配置成以下3类之一:
  1、主DNS服务器。
  2、辅DNS服务器。
  3、缓存DNS服务器。
  目前国际域名的DNS必须在国际域名注册商处注册,国内域名的DNS必须在CNNIC注册,注册支持解析英文域名和中文域名的dns要分别注册:
  (1)步骤:选择做为DNS后缀的域名---创建dns服务器---选择是在国际注册还是国内注册-申请--交付费用
  (2)费用:约75元/个(一次性)
  (3)条件:如果注册国际DNS服务器的,dns服务器的名称必须是在具有条件的公司注册的国际英文域名才能注册,有独立IP地址,DNS服务器域名前的前缀最好是dns.、ns.等
  DNS服务器
  现在一般国内的域名注册商,提供DNS解析服务是免费的,但国外的注册商很多是DNS解析服务是收费的。
  在系统中提交注册DNS的申请,款到后注册的时间为2个工作日左右。
  修改DNS服务器
  (1)条件:要更改为合法的DNS。
  如果要查询DNS是否为合法的DNS,请点击:DNS查询界面
  输入DNS服务器的名称或者IP地址,选中第三个选项Nameserver,查询如果查询出有DNS注册的信息,如注册商,名称对应的IP地址,则这个DNS是合法的。
  (2)修改方法:通过具有条件的公司注册的国际域名变更DNS:用户可通过和提供服务的该公司进行协商(大致步骤为:提出申请并提交相关材料后该业务公司会在48小时左右完成变更)。
  国际英文域名、国内英文域名可以修改DNS,这项服务是免费的。
 
   国内外有不少提供免费DNS服务的提供商,其中国内著名的有IIDNS,DNSPod和OpenDns等


DNS解析故障
  在实际应用过程中可能会遇到DNS解析错误的问题,就是说当我们访问一个域名时无法完成将其解析到IP地址的工作,而直接输入网站IP却可以正常访问,这就是因为DNS解析出现故障造成的。这个现象发生的机率比较大,所以本文将从零起步教给各位读者一些基本的排除DNS解析故障的方法。

  一般来说像我们访问的地址都叫做域名,而众所周知网络中的任何一个主机都是IP地址来标识的,也就是说只有知道了这个站点的IP地址才能够成功实现访问操作。
  不过由于IP地址信息不太好记忆,所以网络中出现了域名这个名字,在访问时我们这需要输入这个好记忆的域名即可,网络中会存在着自动将相应的域名解析成IP地址的服务器,这就是DNS服务器。能够实现DNS解析功能的机器可以是自己的计算机也可以是网络中的一台计算机,不过当DNS解析出现错误,例如把一个域名解析成一个错误的IP地址,或者根本不知道某个域名对应的IP地址是什么时,我们就无法通过域名访问相应的站点了,这就是DNS解析故障。
  出现DNS解析故障最大的症状就是访问站点对应的IP地址没有问题,然而访问他的域名就会出现错误。
  当我们的计算机出现了DNS解析故障后不要着急,解决的方法也很简单。
  (1)用nslookup来判断是否真的是DNS解析故障:
  要想百分之百判断是否为DNS解析故障就需要通过系统自带的NSLOOKUP来解决了。
  第一步:确认自己的系统是windows 2000和windows xp以上操作系统,然后通过“开始->运行->输入CMD”后回车进入命令行模式。
  第二步:输入nslookup命令后回车,将进入DNS解析查询界面。
  第三步:命令行窗口中会显示出当前系统所使用的DNS服务器地址,例如笔者的DNS服务器IP为202.106.0.20。
  第四步:接下来输入你无法访问的站点对应的域名。假如不能访问的话,那么DNS解析应该是不能够正常进行的。我们会收到DNS request timed out,timeout was 2 seconds的提示信息。这说明我们的计算机确实出现了DNS解析故障。
  小提示:如果DNS解析正常的话,会反馈回正确的IP地址。
  (2)查询DNS服务器工作是否正常:
  这时候我们就要看看自己计算机使用的DNS地址是多少了,并且查询他的运行情况。
  第一步:确认自己的系统是windows 2000和windows xp以上操作系统,然后通过“开始->运行->输入CMD”后回车进入命令行模式。
  第二步:输入ipconfig /all命令来查询网络参数。
  第三步:在ipconfig /all显示信息中我们能够看到一个地方写着DNS SERVERS,这个就是我们的DNS服务器地址。例如笔者的是202.106.0.20和202.106.46.151。从这个地址可以看出是个外网地址,如果使用外网DNS出现解析错误时,我们可以更换一个其他的DNS服务器地址即可解决问题。

  第四步:如果在DNS服务器处显示的是自己公司的内部网络地址,那么说明你们公司的DNS解析工作是交给公司内部的DNS服务器来完成的,这时我们需要检查这个DNS服务器,在DNS服务器上进行nslookup操作看是否可以正常解析。解决DNS服务器上的DNS服务故障,一般来说问题也能够解决。
  (3)清除DNS缓存信息法:
  当计算机对域名访问时并不是每次访问都需要向DNS服务器寻求帮助的,一般来说当解析工作完成一次后,该解析条目会保存在计算机的DNS缓存列表中,如果这时DNS解析出现更改变动的话,由于DNS缓存列表信息没有改变,在计算机对该域名访问时仍然不会连接DNS服务器获取最新解析信息,会根据自己计算机上保存的缓存对应关系来解析,这样就会出现DNS解析故障。这时我们应该通过清除DNS缓存的命令来解决故障。
  第一步:通过“开始->运行->输入CMD”进入命令行模式。
  第二步:在命令行模式中我们可以看到在ipconfig /?中有一个名为/flushdns的参数,这个就是清除DNS缓存信息的命令。
  第三步:执行ipconfig /flushdns命令,当出现“successfully flushed the dns resolver cache”的提示时就说明当前计算机的缓存信息已经被成功清除。
  第四步:接下来我们再访问域名时,就会到DNS服务器上获取最新解析地址,再也不会出现因为以前的缓存造成解析错误故障了。
  (4)修改HOSTS文件法:
  修改HOSTS法就是把HOSTS文件中的DNS解析对应关系进行修改,从而实现正确解析的目的。因为在本地计算机访问某域名时会首先查看本地系统中的HOSTS文件,HOSTS文件中的解析关系优先级大于DNS服务器上的解析关系。
  这样当我们希望把某个域名与某IP地址绑定的话,就可以通过在HOSTS文件中添加解析条目来实现。
  第一步:通过“开始->搜索”,然后查找名叫hosts的文件。
  第二步:当然对于已经知道他的路径的读者可以直接进入c:\windows\system32\drivers\etc目录中找到HOSTS文件。如果你的系统是windows 2000,那么应该到c:\winnt\system32\drivers\etc目录中寻找。
  第三步:双击HOSTS文件,然后选择用“记事本”程序将其打开。
  第四步:之后我们就会看到HOSTS文件的所有内容了,默认情况下只有一行内容“127.0.0.1 localhost”。(其他前面带有#的行都不是真正的内容,只是帮助信息而已)
  第五步:将你希望进行DNS解析的条目添加到HOSTS文件中,具体格式是先写该域名对应的IP地址,然后空格接域名信息。
  第六步:设置完毕后我们访问网址时就会自动根据是在内网还是外网来解析了。

DNS查询

  DNS查询可以有两种解释,一种是指客户端查询指定DNS服务器上的资源记录(如A记录),另一种是指查询FQDN名的解析过程。
  一、查询DNS服务器上的资源记录
  您可以在Windows平台下,使用命令行工具,输入nslookup,返回的结果包括域名对应的IP地址(A记录)、别名(CNAME记录)等。除了以上方法外,还可以通过一些DNS查询站点如国外的国内的 查询域名的DNS信息。
  二、FQDN名的解析过程查询
  若想跟踪一个FQDN名的解析过程,在Linux Shell下输入dig www +trace,返回的结果包括从跟域开始的递归或迭代过程,一直到权威域名服务器。

全国主要城市及地区 DNS 信息
电信 DNS 列表 (按拼音排序, 共32条)
电信 A安徽 202.102.192.68 202.102.199.68  61.132.163.68 202.102.213.68
电信 A澳门 202.175.3.8 202.175.3.3 
 
 
电信 B北京 202.96.199.133 202.96.0.133 202.106.0.20 202.106.148.1
电信 C重庆 61.128.128.68 61.128.192.68 
 
 
电信 F福建 202.101.115.55 218.85.157.99 
 
 
电信 G甘肃 202.100.64.68 61.178.0.93 
 
 
电信 G广东 202.96.128.86 202.96.128.166 202.96.134.133 202.96.128.68 
电信 G广西 202.103.224.68 202.103.225.68 
 
 
电信 G贵州 202.98.192.67 202.98.198.167 
 
 
电信 H海南 202.100.192.68 202.100.199.8 
 
 
电信 H河北 219.150.32.132 
 
 
 
电信 H黑龙江 219.150.32.132 219.146.0.130 219.147.198.230 
 
电信 H河南 219.150.150.150 222.88.88.88 222.85.85.85 
 
电信 H湖北 202.103.0.68 202.103.24.68 202.103.0.117 202.103.44.150 
电信 H湖南 202.103.96.112 202.103.96.68 220.170.0.18 61.187.91.18 
电信 J江苏 61.177.7.1 61.147.37.1 218.2.135.1 221.228.255.1
电信 J江西 202.101.224.68 202.101.226.69 
 
 
电信 J吉林 219.149.194.55  219.149.194.56
 
 
电信 L辽宁 219.150.32.132 
 
 
 
电信 N内蒙古 219.150.32.132 219.146.0.130 
 
 
电信 N宁夏 202.100.96.68 222.75.152.129 
 
 
电信 Q青海 202.100.128.68  202.100.138.68
 
 
电信 S山东 219.146.0.130 
 
 
 
电信 S上海 202.96.209.5 202.96.209.133 202.96.199.133 
 
电信 S陕西 218.30.19.40 61.134.1.4 
 
 
电信 S四川 61.139.2.69 202.98.96.68 218.6.200.139 61.139.54.66 
电信 T台湾 168.95.1.1 168.95.192.1 
 
 
电信 T天津 202.99.104.68 
 
 
 
电信 X香港 205.252.144.126 218.102.62.71 
 
 
电信 X新疆 61.128.114.166 61.128.114.133 61.128.99.133 61.128.99.134 
电信 Y云南 222.172.200.68 61.166.150.123 
 
 
电信 Z浙江 60.191.244.5 202.96.113.34 220.189.127.107 60.191.134.206 

 
联通 DNS 列表 (按拼音排序, 共23条)
联通 A安徽 218.104.78.2 
 
 
 
联通 B北京 202.106.0.20 202.106.196.115 
 
 
联通 G甘肃 221.7.34.10 
 
 
 
联通 G广东 221.4.66.66 210.21.4.130 221.4.8.1 
 
联通 G广西 211.97.64.129 221.7.128.68  221.7.136.68
 
联通 H海南 221.11.132.2 
 
 
 
联通 H河北 202.99.160.68 202.99.166.4 
 
 
联通 H黑龙江 202.97.224.68 202.97.224.69 
 
 
联通 H河南 202.102.224.68 202.102.227.68 
 
 
联通 H湖北 218.104.111.112 218.104.111.114 
 
 
联通 H湖南 58.20.127.170 58.20.57.4 
 
 
联通 J江苏 221.6.4.66 221.6.96.177 218.104.32.106 
 
联通 J江西 220.248.192.12 220.248.192.13 
 
 
联通 J吉林 202.98.0.68 202.98.5.68 
 
 
联通 L辽宁 202.96.69.38 202.96.64.68 
 
 
联通 N内蒙古 202.99.224.8 202.99.224.67 202.99.224.68 
 
联通 S山东 202.102.152.3 202.102.134.68 
 
 
联通 S上海 210.22.70.3 210.22.84.3 210.52.207.2 
 
联通 S山西 202.99.192.66 202.99.192.68 
 
 
联通 S四川 221.10.251.196 
 
 
 
联通 T天津 202.99.96.68 202.99.64.68 
 
 
联通 Y云南 221.3.131.9 221.3.131.10 
 
 
联通 Z浙江
  西宁 221.12.1.228
  221.207.58.58 221.12.33.228
  221.207.58.68 221.12.65.228 218.108.248.200 

  GeniePro DNS 应对DNS劫持和DNS缓存中毒攻击的关键性机制: 一致性检查
  每个Geniepro节点将自身的DNS记录发送给工作组内其他节点请求一致性检查 每个Geniepro节点将自身的记录与收到的记录进行比较
  每个Geniepro工作组的通信协调节点将获得的DNS记录更新发送给其他组的通信协调节点请求一致性检查
  每个Genipro工作组的通信协调节点向上一级DNS服务器请求更新记录并与收到的其他通信协调节点的记录进行比较
  一致性仲裁
  如果一致性检查发现记录不一致情况,则根据策略(少数服从多数、一票否决等)决定是否接受记录的变化 根据结果,各Geniepro节点将自身记录进行统一 通信协调节点选举 选举出的通信协调节点在任期内具有更新组内节点的权限 选举过程满足不可预测性和不可重复性DNS 资源记录  如前所述,每个 DNS 数据库都由资源记录构成。一般来说,资源记录包含与特定主机有关的信息,如 IP 地址、主机的所有者或者提供服务的类型。
  资源记录类型
  说明
  解释
  SOA
  起始授权机构
  此记录指定区域的起点。它所包含的信息有区域名、区域管理员电子邮件地址,以及指示辅 DNS 服务器如何更新区域数据文件的设置等。
  常用的资源记录类型
  A 地址 此记录列出特定主机名的 IP 地址。这是名称解析的重要记录。
  CNAME 标准名称 此记录指定标准主机名的别名。
  MX 邮件交换器 此记录列出了负责接收发到域中的电子邮件的主机。
  NS 名称服务器 此记录指定负责给定区域的名称服务器。