DNS 详解      <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

DNS概述
在早期的TCP/IP网络中,名称解析的工作由一台计算机来负责,它维护一份主机名称与IP地址对应的清单(hosts文件,该文件一般位于C:\WINDOWS\system32\drivers\etc中)。每当主机要与其他网络中的主机通讯前,来源主机都会西安查询hosts文件中目的主机的ip地址,等到对应的目的主机IP地址解析出来后,就可以进行后续通信。这种方法虽然简单,但随着主机数目越来越多时,会产生以下问题:
1.       主机名称重复。Hosts文件是平面结构,主机多了容易重名。
2.       名称解析效率下降。查询hosts文件的通信量都集中在存储hosts文件的计算机上,会形成瓶颈。
3.       主机维护困难。在一个平面结构的文件夹中维护所有的主机记录,文件夹会太大,而且当主机记录增加或者更新是很难维护。
为了解决以上问题,可以将巨大的信息按层次结构划分成许多较小的部分,将每一部分存储在不同的计算机上,形成层次性,分布式的特点。这样一方面解决了信息的统一性,另一方面信息数据分布面广,不会形成瓶颈,有利于提高访问效率,于是DNS便应用而生。
DNSDomain Name System,域名系统)在局域网和互联网中用来将域名翻译成IP地址。

域名空间结构:

DNS中,域名空间采用分层结构,(级别由高到低)包括:根域、顶级域、二级域和主机名称。一个区域就是DNS域名空间中的一部分,维护着该域名空间的数据库记录。在域名层次结构中,每一层称作一个域,每个域用一个点号“.”分开。域又可以进一步分橙子域,每个域都有一个域名,最底层是主机。
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
1.1
1.       根域
参照图1.1所示,根(root)域就是“ . ”(点号),它是由Internet名字注册授权机构管理,该机构把域名空间结构各部分的管理责任分配给链接到Internet的各个组织。
2.       顶级域:
Internet名字授权机构管理,共有3种类型的顶级域:
◎     组织域,采用3个字符的代号,表示DNS域中所包含的组织的主要功能或活动。
◎     国家或地区域,采用两个字符的国家或地区代号。
◎     反向域,这是一个特殊域,名称为in-addr.arpa,用于将ip地址映射到名称。
3.       二级域:
二级域是注册到个人、组织或公司的名称。这些名称基于相应的顶级域,如“Microsoft.com”,就是基于顶级域“.com”。二级域下可以包含主机和子域,如“Microsoft.com”可包含“ftp. Microsoft.com”这样的主机,也可以包含如“sale.microsoft.com”这样的子域,而盖子域还可以包含如“printerl.sale.microsoft.com”这样的主机。
4.       主机名:
主机名在域名空间结构中的最底层,主机名和前面讲的域名(DNS后缀)结合构成FQDN(完全合格的域名),主机名是FQDN最左端的部分。例如,“aa.bbb.com”中的“aa”是主机名,“bbb.com”称为DNS后缀。用户在互联网上访问WebFTPMail等服务时,通常使用FQDN,例如,www.benet.com.cn
每个FQDN最多225个字节(254个字节用与FQDN1个字节用于终止点)。
DNS 服务的作用:主要的作用就是将域名解析为 ip 地址。当然其也可以将 ip 地址反向解析为域名。

DNS 查询过程:

下面通过一个查询 www.benet.com.cn的例子来学习DNS 查询的基本工作原理。具体步骤如图 1.2 所示

1.2

1.      客户机将 www.benet.com.cn的查询传递到本地DNS 服务器。

2.      本地 DNS 服务器检查区域数据库,由于此服务器没有 benet.com.cn 域的授权,因此,它将查询传递到根服务器,请求解析主机名称。跟名称服务器把“ cn DNS 服务器的 ip 地址返回给本地 DNS 服务器。

3.      本地 DNS 服务器将请求发送给“ cn DNS 服务器,此服务器根据请求将“ com.cn DNS 服务器的 ip 地址返回给本地 DNS 服务器。

4.      本地 DNS 服务器向“ com.cn DNS 服务器发送请求,此服务器根据请求将“ benet.com.cn DNS 服务器的 ip 地址返回给本地 DNS 服务器。

5.      本地 DNS 服务器向“ benet.com.cn”DNS 服务器发送请求,由于此服务器具有 www.benet.com.cn 的记录,因此它将 www.benet.com.cnip地址返回给本地DNS 服务器。

6.      本地名称服务器将 www.benet.com.cnip 地址发送给客户机。

7.      域名解析成功后,客户机可以访问目标主机。

 

为了提高解析效率,减少查询开销,每个 DNS 服务器都有一个高速缓存,存放最近接洗过的域名和对应的 ip 地址。这样,当用户下次再查找该主机时,可以跳过某些查找过程,直接从本地 DNS 服务器中查找到该主机的地址,大大减少了查找的时间,加快了查询过程。

 

在以上域名查询过程中,有两类查询:递归查询和迭代查询

◎    递归查询是指当 DNS 服务器接收到查询请求时,要么做出查询成功的响应,要么做出查询失败的响应。在图 1.2 中,步骤“ 1 ”属于递归查询。

◎    迭代查询又称为简单查询,是指 DNS 服务器根据自己的高速缓存或区域的数据,以最佳结果作答。如果 DNS 服务器无法解析,它可能返回一个指针。指针指向有下级域名的 DNS 服务器,它继续该过程,直到找到用有所查询名字的 DNS 服务器,或者知道出错或超时为止。在图 1.2 中,步骤“ 2 ”至“ 5 ”就属于迭代查询。

DNS 服务器域名查询从查询内容上分,可以分为两种方式的查询:正向查询和反向查询。

◎    正向查询由域名查找 ip 地址。

◎    反向查询由 ip 查找域名。

反向搜索查询要求对每个域名进行详细搜索,这需要花费很长时间。为解决该问题, DNS 标准定义了一个名为 in-addr.arpa 的特殊域。 In-addr.arpa 域遵循域名空间的层次命名方案,它是基于 ip 地址,而不是基于域名,其中, ip 地址 8 位位组的顺序是反向的,例如,如果客户机要查找 172.16.44.1 FQDN 客户机,就查询域名 1.44.16.172.in-addr.arpa 的记录。

配置 DNS 服务器的必要条件:

◎    有固定的 ip 地址。

◎    安装并启动 DNS 服务。

◎    有区域文件,或者配置转发器,或者配置根提示。

 

在完成 DNS 服务器查找区域的创建后, 就可以新建资源记录。在区域文件中包含着许多的资源记录。

Resources Record 资源记录

资源记录

说明

SOA (起始授权机构)

定义了该域中的哪个名称服务器是权威名称服务器

NS (名称服务器)

表示某区域的权威服务器和 SOA 中指定的该区域的主服务器和辅助服务器

A (主机)

列出了区域中 FQDN IP 地址的映射

PTR( 指针 )

相对于 A 资源记录, PTR 记录把 IP 地址映射到 FQDN

MX

邮件交换器记录,向指定邮件交换主机提供小西路由

SRV( 服务 )

列出了哪些服务器正在提供特定的服务

 

转发器

DNS 服务器可以解析自己区域文件中的域名,对于本服务器上没有的域名查询请求如何处理呢?在前面的 DNS 查询过程中,介绍了一种方法是直接转发查询请求道根域 DNS 服务器,进行迭代查询。还有一种方法,就是直接将请求转发给其他 DNS 服务器。

 

将本地 DNS 服务器无法解析的查询转发给网络上的其它 DNS 服务器,该 DNS 服务期即将被指定为转发器。当 DNS 服务器将查询发给转发器时,这种查询尾递归查询。

 

对于本地 DNS 服务器(在局域网中)无法解析的域名查询可以通过配置转发器来实现对互联网上的域名解析,其示意图如图 1.3 所示,在本地 DNS 服务器上设置转发器,指向互联网上的 DNS 服务器。

1.3

假设本地 DNS 服务器的 ip 地址为 192.168.1.2 ,转发器的 ip 地址为 192.168.1.11 。下面将简单介绍配置转发器的方法。右击本地服务器—“属性”—“转发器”,在“所选域的转发器的 IP 地址列表”中添加 IP 地址 192.168.1.11 ,如图 1.4 所示。

配置转发器后,如果 192.168.1.11 上有域名 web.benet.net ,而 192.168.1.2 上没有该记录,则 192.168.1.2 可以通过转发器解析出域名 web.benet.net ,然后该记录就会缓存到 192.168.1.2 上,下次直接解析而不需要在查询 192.168.1.11

                  <?xml:namespace prefix = w ns = "urn:schemas-microsoft-com:office:word" />

1.4

域名解析顺序:

默认情况下,客户机(操作系统是 Windows 2000/xp/2003 )解析域名的顺序是:

 

本机 DNS 缓存

本机 Hosts 文件

DNS 服务器

 

本机 DNS 缓存

Ipconfig /displaydns (查看本机 DNS 缓存)

Ipconfig /flushdns (清除本机上的 DNS 缓存)

 

本机 Hosts 文件

本机 Hosts 文件在 %SystemRoot%\system32\drivers\etc 下,是文本文件,用记事本就可以编辑。文件中保存 IP 地址和对应的主机名。

要使用 DNS 服务,客户机需要在 TCP/IP 属性中配置首选 DNS 服务器。

 

域名解析排错:

1. 客户机设置

§     检查客户机的首选 DNS 服务器是否配置

§     配置的 DNS 服务器的 IP 地址是否正确

v     DNS 服务器上的资源记录

2. 检查 DNS 服务器上有没有正确的区域名及要查找的主机记录

§     使用 nslookup

3. 检查 DNS 服务是否启动  

4. 检查 hosts 文件

5. 检查本机 DNS 缓存

 

解析的 IP 不正确的情况:

 

Hosts 文件

客户机上的 Hosts 文件一般先于 DNS 服务解析域名

Hosts 文件中有某条错误主机记录

 

本机 DNS 缓存

本机 DNS 缓存中暂时缓存了旧记录

ipconfig /flushdns ”清除本机 DNS 缓存