简介
在Internet中使用IP地址来确定计算机的地址,这种以数字表示的IP地址不容易记忆.为了便于对网络地址的管理和分配,人们采用了域名系统,引入了域名的概念。通过为每台主机建立IP地址与域名之间的映射关系,用户可以避开难记的IP地址.而使用域名来唯一地标识网络中的计算机。域名和IP地址之间的关系,就像是某人的姓名和身份证号码之间的关系,显然,记住名字要比记住身份证号码容易得多,本章主要介绍DNS的基本概念.DNS域名解析的原理,在理解的基础上安装配置DNS服务器。
本章重点
1. 理解DNS域名解析的原理和模式
2. 安装DNS服务器
3. 掌握转发器的配置方法
2.1 DNS 概述
在早期的TCP/P网络中,名称解析通常由一台计算机负责,它维护了一份主机名称与IP地址对应的清单(Hosts文件)。当网络中主机间通信时.源主机会通过查询Hosts文件,将目的主机的主机名解析成IP地址,以便进行通信。这种方法虽然简单,但是随着主机数目的增多,会产生以下问题。
Ø 主机名称重复。Hosts 文件是平面结构,主机多了容易重名。
Ø 主机维护困难。在一个平面结构的文件中维护所有的主机记录,这样文件会很大,而且当主机记录增加或更新时很难维护。
为了解决以上问题,早期的网络应用人员计划将巨大的信息量按层次结构规划成许多较小的部分.将每部分存储在不同的计算机上,形成层次性、分布式的特点。这样,一方面实现了信息的统一;另一方面信息数据的分布面变广,不会形成瓶颈,有利于提高访问效率.于是DNS(Domain NameSystem,域名系统〉应运而生。
Windows操作系统中在“%systemroot%\system32%\drivers\etc”文件夹里也有一个Hosts文件,它提供了一个简单的IP地址和FQDN的映射。 |
2.1.1 DNS的功能
DNS最初的设计目标是“用具有层次名称空间、分布式管理.扩展的数据类型、无限制的数据库容量和具有可以接收性能的,轻型、快捷.分布的数据库取代笨重的集中管理的Hosts文件系统”。
DNS 是一组协议和服务,它允许用户在查找网络资源时使用层次化的对用户友好的名称取代P地址。简单地讲,DNS协议的基本功能是在主机名与对应的P地址之间建立映射管理,例如,新浪网站的P地址是202.106,184 ,200,几乎所有的浏览该网站的用户都使用www . sina .com . cn,而并非使用IP地址来访问。与直接使用Р地址相比,使用主机名(域名)访问具有以下优点。
Ø 主机名便于记忆。
Ø 数字形式的IP地址可能会由于各种原因而改变.而主机名可以保持不变.
当需要给某人打电话时,你可能知道这个人的名字,而不知道他的电话号码。这时可以通过查看电话号码簿查他的电话号码,从而与他进行通话。由此可以看出,电话号码簿的功能便是建立姓名与电话号码之间的映射关系。而 DNS的功能与电话号码簿很类似。
2.1.2 DNS的组成
组成DNS系统的核心是DNS服务器,它是提供域名查询服务的计算机.用来维护DNS名称数据并处理DNS客户端主机名的查询。DNS服务器保存了包含主机名和相应Р地址的数据库。
DNS是一种看起来与磁盘文件系统的目录结构类似的命名方案,域名通过使用句点“.”分隔每个分支来标识一个域在逻辑DNS层次中相对于其父域的位置,但是,当定位一个文件位置时,是从根目录到子目录再到文件名,如C: \WINDoWS\ explorer , exe,而当定位一个主机名时,是从主机名到父域再到根域. 如news , sina , com , cn.
在DNS 中,域名包括根域、顶级域.二级域和主机名,如图2.1所示。
三级域名下面还可以有四级域名、五级域名等。但是域名层级用得越多,域名越复杂,所以实际使用中一般不会超过五级。 |
1.根域
根(Root)域就是“.”(点号),它由Internet 名称注册授权机构管理,该机构把域名空间各部分的管理责任分配给了连接到Internet 的各个组织。
2.顶级域
DNS根域的下一级是顶级域, 由Internet名称授权机构管理,有两种常见类型。
Ø 组织域.采用三个字符的代号,标识DNS域中所包含的组织主要功能或活动,如表2—1所示.
Ø 国家或地区顶级域,采用两个字符的国家或地区代号,如表2-2所示。
3.二级域名
二级域是注册到个人、组织或公司的名称。这些名称基于相应的顶级域.如“google .com”,就是基于顶级域” .com”.二级域下可以包括主机和子域.如“google .com"可包含子域"mail .,google ,com"这样的主机,也可以包含如“news , google .com”这样的子域,而该子域还可以包含如printer . news . google , com”这样的主机。
4.主机名
主机名处于域名空间结构中的最底层,主机名和前面讲的域名(DNS扩展名)结合成FQDN (Full Qualified Domain Name ,完全合格域名/全称域名),主机名是FODN最左端的部分.例如 , aaa , bbb . com ",其中的“aaa”是主机名, "bbb , com”称为DNS扩展名。
用户在访问网络上面的Web,FTP,Mail等服务时,通常使用FODN进行访问,如www .google , com.但是FODN并不能真正定位目标服务器的物理地址,而是需要DNS服务器将FODN解析成IP地址。
FQDN是指—个系统的完整名称而非其主机名称。
2.1.3 DNS的区域
DNS的区域(Zone),是指域名空间树型结构的一部分,它能够将域名空间根据用户需要划分为较小的区域,而非域〈Domain),以便于管理。一个区域内的主机数据〈包括主机名和对应的IP地址)必须存放在DNS服务器内.而用来存放这些数据的文件称为区域文件。一台DNS服务器内可以存放多个区域文件.同一个区域文件也可以存放到多台DNS 服务器中。
为了将网络管理的工作分散开来,可以将一个DNS域划分为多个区域。如图2.2所示,将域abc , com划分为区域1和区域2.其中区域1包含子域product abc . com,区域2包含子域abc ,.com和address , abc , com。每个区域都存在一个区域文件.区域1的文件包含域内所有主机(dep1到 dep30)的数据;而区域2的文件包含域内所有主机〈abc1到 abc20和add1到 add40)的所有数据。两个区域文件可以存放在同一个DNS服务器中,也可以分别放在不同的DNS 服务器中。
一个区域所包含的范围在一个域名称空间中是连续的,否则无法构成一个区域。如图2.2所示的区域中,不能创建包含product , abc. com 和 address , abc . cam两个子域的区域.因为这两个子域位于不连续的名称空间。
2.1.4 DNS服务器的分类
DNS服务器是整个DNS的核心。DNS服务器严格地讲应该是DNS名称服务器(DNS Name Server ) ,它保存着域名称空间中部分区域的数据。当一个DNS 服务器中存放域名称空间内的一个或多个区域的数据时,就将这台DNS服务器称为授权名称服务器(Authoritative Name Server),授权名称服务器负责维护和管理所辖区域中的数据,为DNS客户端提供数据查询。根据工作方式的不同,授权名称服务器可分为主要名称服务器.辅助名称服务器、主控名称服务器和Cache-Only名称服务器。
1.主要名称服务器
主要名称服务器是用于存放该区域中相关设置的DNS服务器,当在一台DNS服务器上建立一个区域文件时,有关该新建区域内的主机数据都直接存放到该DNS服务器中。而且,当某个区域内的数据被修改后(如添加了主机),这些变更后的数据同样存放在这台DNS服务器内,即由DNS服务器完成对原来数据库的更新。主要名称服务器存放的是区域文件的正本数据.
2.辅助名称服务器
辅助名称服务器(Secondary Name Server〉是用于从其他服务器〈可以是主要名称服务器也可以是其他的辅助名称服务器)中复制数据,并进行保存的服务器。辅助名称服务器中的数据不是直接输入的,而是从其他服务器中复制过来的,只是一份副本。所以辅助名称服务器中的数据无法修改。
在一个区域中设置辅助名称服务器具有以下优点。
Ø 当一台DNS 服务器发生故障时,由辅助名称服务器提供服务。
Ø 分担主要名称服务器的负担。
Ø 加快查询速度.例如,一个公司分别位于相对较远的两个地方,这时可以在其中一处设置一台辅助名称服务器,当地的DNS客户端直接从本地的辅助名称服务器进行查询即可.
3.主控名称服务器
主控名称服务器(Master Name Server〉是指提供区域数据复制的DNS 服务器,它既可以是该区域内的主要名称服务器,也可以是该区域内的辅助名称服务器。例如,当一台辅助名称服务器从一台主要名称服务器中复制数据时,将提供数据复制服务器的这台主要名称服务器称为辅助名称服务器的主控名称服务器。
4.Cache-Only 名称服务器
Cache-Only 名称服务器只负责查询数据,并将曾经查询到的数据保存在高速缓存中。当下一次DNS客户端查询数据时,如果高速缓存内存在该数据.则它可以快速地将数据提供给客户端。
Cache-Only名称服务器不负责管辖域名称空间内的任何DNS 服务器,不创建任何区域.它只帮助DNS客户端向其他的DNS服务器进行查询,再将查询到的数据存储一份到高速缓存中,响应DNS客户端的查询请求。
Cache-Only名称服务器不但可以分担网络的工作量,而且可以让DNS客户端直接快速地进行查询。
2.1.5 DNS的查询过程及相关知识
1.DNS的查询过程
下面通过查询www . benet .com 的例子来学习DNS的查询过程。具体步骤如图2.3所示,
(1)客户机将查询www.benet.com 的信息传递到自己的首选 DNS服务器。
(2)DNS 客户机的首选DNS服务器检查区域数据库,由于此服务器没有benet . com域的授权记录.因此它将查询信息传递到根域DNS服务器,请求解析主机名称。
(3)根域DNS服务器把负责解析“com”顶级域的DNS服务器的P地址返回给DNS客户机的首选 DNS服务器。
(4)首选 DNS服务器将请求发送给负责“com”域的DNS服务器.
(5)负责“com”域的服务器根据请求将负责“benet com”域的DNS服务器的I地址返回给首选 DNS服务器.
(6)首选 DNS 服务器向负责“benet.com”区域的DNS服务器发送请求。
(7)由于此服务器具有www. benet .com的记录,因此它将www .benet .com的P地址返回给首选DNS 服务器。
(8)客户机的首选 DNS服务器将www .benet .com的IP地址发送给客户机。
(9)域名解析成功后,客户机将http请求发送给Web服务器.
(10)Web服务器响应客户机的访问请求,客户机便可以访问目标主机。
如果DNS客户机的首选DNS服务器没有返回给客户机 www .benet . com的P地址,那么客户机将尝试访问自己的备用DNS 服务器。
为了提高解析效率,减少查询开销,每个DNS服务器都有一个高速缓存,存放最近解析过的域名和对应的P地址。这样,当有用户查找相同的域名记录时,便可以跳过某些查找过程,由DNS服务器直接从缓存中查找到该记录的地址,从而大大缩短了查找时间,加快了查询速度.
2.DNS的查询方式
当DNS客户端向DNS服务器查询IP地址,或DNS服务器向另一台DNS 服务器查询IР地址时.DNS 的查询过程分为两种类型:递归查询和迭代查询。
1)递归查询
当DNS客户端按照它的DNS 服务器列表向DNS 服务器发出查询请求时,接收查询请求的DNS服务器和客户端之间的查询关系一般都是递归查询。该DNS服务器会查询自己的区域文件、缓存.如果没有找到结果,就向别的DNS服务器查询。递归查询时客户端得到的结果只能是成功或失败.接收查询的DNS服务器必须告诉客户端请求查询的IP地址或告诉客户端找不到请求的地址和找不到的原因(查询超时或遇到错误)。如图2.3所示,DNS客户端和它的首选DNS服务器之间就是递归查询。
不是所有的查询都是递归查询,在使用转发器时出现的是递归查询,否则将进行迭代查询。
DNS服务器之间一般都是发送迭代查询的请求,除非DNS服务器接收到一个递归查询请求,并且无法解析该查询,这时该服务器将向转发器中的DNS 服务器发送递归查询请求,如果没有设置转发器,该服务器将向根提示中的根服务器发送迭代查询的请求。(转发器和根提示将在2.3节中讲解) |
2)迭代查询
迭代查询又称为简单查询,是指DNS服务器根据自己的高速缓存或区域的数据,以最佳结果作答,如果DNS服务器无法解析.它可能返回一个指针。指针指向可能有目标域名记录的DNS服务器,继续该过程,直到找到拥有记录的DNS服务器,或直到查询出错或超时为止。在图2.3中,步骤(2)~步骤{5)就属于迭代查询.
因为递归查询比较占用系统资源,有安全方面的隐患,所以可以设置DNS服务器不接收递归查询。这时该服务器将向转发器中的DNS服务器发送递归查询请求。如果没有设置转发器,该服务器将向根提示中的根服务器发送迭代查询的请求。(转发器和根提示将在2.3节中讲解) |
DNS 服务器的域名查询根据查询内容可以分为两种形式:正向查询和反向查询。
Ø 正向查询是由域名查找P地址。
Ø 反向查询是由P地址查找域名.
反向查询要求对每个域名进行详细搜索,这需要花费很长时间。为了解决该问题,DNS标准定义了一个名为“ in-addr , arpa”的特殊域(反向域)." in—addr , arpa”域遵循域名空间的层次命名方案.它是基于P地址的,而不是基于域名的,其中P地址8位组的顺序是反向的。例如,客户机要查找172.168.10.1的FQDN,就查询反向域10.168.172 , in—addr , arpa中的PTR指针记录。