3.4.2 相关知识:DNS

3.4.2 相关知识:DNS

1.DNS服务概述

计算机名是计算机在网络中的标识符。在TCP/IP网络中,每台计算机都拥有一个用数字表示的IP地址,IP地址唯一地标识一台计算机。如果某台计算机想访问网络中的其他计算机,它就应该知道对方的IP地址。但是仅仅用数字表示的名称标识过于烦琐,并且在实际应用中,用户在访问网络中的资源时,一般并不希望使用对方的IP地址去访问,而是通过容易记忆的计算机名来访问。

为了便于记忆,便产生了使用IP地址之外的名称方案,也就是使用简单易记的名称来标识网络中的计算机(包括其他形式的网络结点),DNS就是这样一个名称解决方案。

Windows Server 2008 DNS允许用户使用符合DNS标准的名称访问网络资源。DNS可将名称解析成IP地址,它也能集成Windows Server 2008的其他服务以扩展名称解析能力。

DNS提供名称解析服务,它把人们易于记忆的地址(如www.baidu.com)解析为IP地址(如202.108.22.43)。DNS服务器的主要构件是一种分层的分布式数据库,包含了DNS主机名称到IP地址的映射信息。

DNS是Internet命名方案的基础,也是一个机构的活动目录域命名方案的基础。DNS支持使用文字数字形式的名称来访问资源。如果没有DNS,人们将不得不查找资源的IP地址以访问它们。由于资源的IP地址可能发生变化,维持一个总是正确的IP地址与资源的匹配列表将是件困难的事情。DNS允许用户使用文字数字形式的名称,与IP地址相比,文字数字形式的名称要相对恒定得多。

通过DNS,主机名称保存在数据库中,数据库可能分布到多个服务器上,这减轻了每台服务器的负载,并提供了经由分区来管理这个命名系统的能力。DNS支持层次化的名称,除了在主机文件中使用主机名称到IP地址的映射之外,DNS也允许注明不同的数据类型。由于DNS数据库是分布式的,它的大小不受限制,而且当更多服务器被使用时,其性能不会降低太多。

2.域名系统简介

当Internet(原来称为ARPAnet)规模还很小时,一个主机文件(host.txt)在网络中发布,就可完成对主机的查找。而当Internet的规模越来越大时,这种发布主机文件的查找方法就不适用了。域名系统DNS的结构就逐渐形成,以代替原来的以文件为基础的主机查找。DNS实现了一种分布式数据模型,形成了一种文件系统树,如图3-37所示。从体系结构上来说,域名系统DNS是一种分布式的、层次型的、客户机/服务器式的数据库管理系统。这种树型模型是分布式的,因为每个注册的域都将自己的数据库列表提供给整个系统,层次结构的最高端是域名树的根(通常用点号“.”表示),提供根域名服务。根域名服务器具有指向第一层域的初始指针,也就是顶层域,如.com、.org、.mil和.edu。另外,还有两百多个表示地理位置的顶层域名。这个列表仍在发展。顶层域名最初由Internet授权地址分配组IANA管理。后来,一些顶层域名被授权给一些组织,如Internet信息中心Inter NIC来管理。Inter NIC管理其他顶层域名.com、.org和.edu。因为20世纪80年代和90年代众多的注册而使得它发展很快,并且不断变化。

在域名层次结构中,主机可以存在于根以下的各层上。因为域名树是层次型的而不是平面型的,因此要求主机名在每一个分支中必须是唯一的。例如,在一个公司中可以有若干个主机名为www的Web服务器,前提是每台服务器必须在域名层次的不同分支上。如www.xyz.com、www.corp.com和www.eng.com都是有效的主机名,也就是说,即使这些主机有相同的名字,也都可以被正确地解析到唯一的主机。这种原则对于FTP结点、WWW结点、域名服务器等都是适用的,即只要是在不同的子域,就可以重名。根DNS服务器就像世界各地的公司和学校使用的服务器,但它存在于Internet中最特殊的地方,也就是甚至在第一层域名如.com和.org等之上。表3-1中给出了域名层次结构中的若干层。记忆DNS层次的最容易的方法是记住根域只用“.”表示。顶层域只含有一个名字,第二层域则含有两个名字,依此类推。根域名服务器和其他机构、团体的域名服务器的主要区别是根服务器包含指向所有已注册的顶层域的指针。第二层域是属于机构团体或地区的,用域名的最后一部分即域后缀来分类。例如,域名microsoft.com代表微软公司。多数域后缀可以反映使用这个域名的机构是什么性质的。表3-2中列举了一些常见的域名及其代表的意义,如gov代表政府部门等。

图3-37 互联网域名结构

表3-1 域名层次结构

表3-2 常见的域名及其含义

注意,实际上和根域相比,第一层域实际是第二层域,但它们还是称为顶层域或TLD(top level domain)。根域从技术的含义上是一个域,但常常不被认为是一个域。根域所有的很少几个根级成员只是为了支持域名树和它的功能。但机构的类型并不总是可以很容易地通过域后缀来确定。例如,对于.net域和.org域就不像.com域那样清晰。本来.net域是打算为ISP(Internet服务提供商)和其他联网机构所用的,但很多研究机构或课题组也用这个域,如handle.net和giga.net等。

3.DNS服务的工作原理

DNS是基于客户机/服务器模式运行的。在这种模式中,DNS服务器上有一个数据库,其中保存着DNS名称空间中名称和IP地址的映射关系,DNS服务器利用这个数据库为客户端提供名称解析服务,这个数据库在DNS中被称为区域。DNS客户机会向DNS服务器发出名称解析的查询请求,以获取有关DNS名称空间中域名和IP地址的映射关系。如果这台DNS服务器的数据库不负责存储客户端所查询的名称和IP地址的映射关系,这台服务器会向其他DNS服务器发出查询,直到获得客户端请求的名称和IP地址的映射关系为止。

查询有递归查询和迭代查询两种类型,其查询过程如图3-38所示。

图3-38 DNS查询过程

客户机查询DNS的步骤如下。

(1)客户机向本地DNS服务器发送一个递归查询请求,要求得到www.baidu.com所对应的IP地址。本地DNS服务器是指在该客户端的TCP/IP属性中配置的DNS服务器。

(2)本地DNS服务器接收到查询请求后,检查自己的区域数据库。如果发现数据库中没有对应的记录,本地DNS服务器则向根域DNS服务器发出一个迭代查询请求,要求解析www.baidu.com所对应的IP地址。

(3)根域DNS服务器中记录着所有顶级域的DNS服务器的信息,它将带有.com这一顶级域的DNS服务器的IP地址的响应返回给本地DNS服务器。

(4)本地DNS服务器接收到这个响应后,向.com域的DNS服务器发出迭代查询请求,要求解析www.baidu.com所对应的IP地址。

(5).com域的DNS服务器中记录着.baidu.com域中的DNS服务器的信息,它将.baidu.com域的DNS服务器的IP地址作为响应发送给本地DNS服务器。

(6)本地DNS服务器接收到这个响应后,向.baidu.com域的DNS服务器发出迭代查询请求,要求解析www.baidu.com所对应的IP地址。

(7)在.baidu.com域的DNS服务器中记录着www.baidu.com这一FQDN名与其IP地址的对应关系。此时,它将www.baidu.com所对应的IP地址作为响应发送给本地DNS服务器。

(8)本地DNS服务器将得到的IP地址响应发送给客户端,客户端收到这个IP后,即可访问目的计算机。

以上查询过程中,(1)和(8)两个过程为递归查询,(2)~(7)为迭代查询。

从客户端查询资源记录的性质上来讲,客户端查询过程分为两种:正向查询和反向查询。将客户端请求的域名解析为对应的IP地址称为正向查询;将客户端请求的IP地址解析为对应的域名称为反向查询。

4.DNS相关术语

(1)区域(zone):区域是一个用于存储单个DNS域名的数据库,它是域名称空间树状结构的一部分,DNS服务器是以zone为单位来管理域名空间的,zone中的数据保存在管理它的DNS服务器中。当在现有的域中添加子域时,该子域既可以包含在现有的zone中,也可以为它创建一个新zone或包含在其他zone中。一个DNS服务器可以管理一个或多个zone,同时一个zone可以由多个DNS服务器来管理。

按照域名的存储和使用方式不同,DNS可分为三种区域类型:标准区域、辅助区域、活动目录集成区域。

通常使用的区域是标准区域;当考虑命名解析的冗余性时,会使用除主DNS服务器之外的其他DNS服务器,其上存储标准区域的副本,称辅助区域。标准区域和辅助区域间实现准实时同步。DNS的树型结构和活动目录的结构极其相似,可把两者集成在一起,实现解析的自动性和维护的方便性。

(2)主DNS服务器和辅DNS服务器:主机名必须在DNS服务器中注册,这台服务器称为主服务器。辅DNS服务器自动地从主DNS服务器获得所有的数据,也就是说,辅DNS是作为主服务器的备份之用,注意,辅DNS只是一个只读的DNS。管理员对这种备份很感兴趣,因为这可以让他们在几个不同的地方安置具有相同数据库的服务器。例如,中心办公室可以有一台主DNS服务器,而远地的机构可以有本地的辅服务器,以便加速地址的查找,也可防止因网络失效而找不到DNS服务器。主、辅DNS服务器的搭配使得所有的服务器都能找到已注册的主机,客户机能从离它最近的服务器获得回答。如果本地网络中的DNS服务器失效,无论安装的是Windows Server 2008还是其他操作系统,对主机的可用性都是一场灾难。而且如果一些主机通过辅服务器解析域名,还可以获得一定的负载平衡。

(3)数据库资源记录:像任何其他数据库一样,DNS的体系结构也是由表组成的,每张表包含许多记录。DNS数据库表称为区域文件(zone file)。大多数记录都有专门的含义,因为它们标识了许多资源的位置,它们甚至可以和其他表中的记录相联系。资源记录类型包括授权开始记录SOA(start of authority)、地址记录A(address)、指针记录PTR(pointer)等。在区域文件中能见到什么样的记录取决于若干因素。首先要看是哪一种区域文件,若是正向查找区域和反向查找区域就很少有相同的记录。另一个决定区域文件内容的因素是管理员想要发布或者是需要发布什么信息。当把区域信息以文件形式存储时,Windows DNS把区域数据库文件存放在Windows\system32\DNS目录下。Windows DNS也在.\samples子目录下提供了若干模板文件以提供文件格式的例子。下面介绍DNS的各种记录。

1)开始授权记录:开始授权记录一般称为SOA记录,是所有正向和反向区域文件中必要的第一个条目。

2)域名服务器记录(NS):域名服务器记录告诉DNS哪个服务器是这个域或者它的子域的委托授权服务器。委托授权给一个服务器以授权来回答查询。委托授权类似于经理把工作委托给另一个成员。一个域名服务器可以将一个子域的全部授权都委托给其他服务器,或者一台主服务器可以将授权委托给辅服务器,使得它们虽然不是地址映射的源,也可以回答查询。在正向区域文件和反向区域文件中都要使用NS记录。

3)指针记录和反向查找指针记录:指针记录和反向查找指针记录也称PTR记录,它是反向地址解析的关键记录。如果已知一台主机的IP地址,而要知道其主机名,就需要从反向地址(或直接简称地址)到主机名的反向解析。PTR记录是反向网络地址.in-addr.arpa域的区域文件的主体。反向区域文件(in-addr文件)也像其他文件一样是以SOA记录和NS记录开始的,而文件的其余部分则通常都是PTR记录,有时是别名记录(CNAME)。首先,注意主机名后面都有“.”,也就是都是全域名,所以这些名字不需要再附加其他信息。如果尾部没有“.”,则区域的源应加到主机名的后面。因为源是4.168.192.in-addr.arpa,所以域名会变得很难看。因为这个区域文件表示的是反向地址映射,数字4.168.192要加在PTR记录中出现的数字的后面。因此,反向地址是4.1.168.192。把这个数字倒转,就是它的IP地址192.168.1.4。

4)地址(A)记录:地址(A)记录的是主机名到IPv4地址的映射。这些记录在正向查找区域文件和根缓存文件中使用。对于IPv6,使用相应的4A(AAAA)资源记录。A记录的格式和NS记录的格式类似。A记录中包含所有者、类别、TTL、类型,最后是主机地址。以上的顺序可以有所不同,如将TTL值放在类别的前面也是可以的。Windows Server 2008 DNS服务器将在同一台主机的多个A记录间循环,每个A记录给主机名提供一个不同的IP地址。在一个A记录中,所有者就是记录本身的主机名。因为由SOA记录表明的源是example.net,主机名实际将转换为fs1.example.net。这是因为fs1没有加“.”,根据DNS默认的特性就会将源的域名加在资源名的后面。其结果是对主机fs1.example.net的查询就指向这条记录,并返回相应的IP地址。

5)邮件交换(MX)记录:邮件交换记录简称MX(mail exchange)记录。MX记录为域的成员提供到哪里投递邮件的信息。MX记录的格式类似于NS记录,它也包含所有者、TTL、类别、类型和邮件交换者本身。此外,MX记录还有一个优先级段,用来规定每个可以传送邮件的主机的优先级。用一个MX记录指向一台用于邮件的主机,并不是配置那台主机接收邮件。

6)别名(CNAME)记录:别名记录简称CNAME(canonical name)记录。CNAME记录对一个别名(域名、主机名)建立别名。别名指向另一台机器。例如,可以通过使用CNAME记录,使主DNS域名服务器和邮件主机是同一台机器。CNAME记录的格式有以下形式:<owner><ttl>IN CNAME<host.domain.name>。试考虑以下情况:某企业已注册了ns.xyz.com为域的主DNS服务器,但邮件程序又要求使用专门的计算机名,如mailhost作为邮件主机名。为解决这个问题,可使计算机的实际名字(别名)为ns.xyz.com,然后加一个CNAME记录使得到mailhost的邮件也送到ns.xyz.com。用这种方法,除了管理员以外,其他人都不知道两个名字或者两种服务实际是使用了一个地址。试考虑以下假设:某企业使用ftp.xyz.com作为FTP的主服务器,它还想运行一个Web服务器,但Web服务器被命名为www.xyz.com,并且和FTP服务在同一台机器上运行,于是便可以加一个别名记录,把WWW报文指向ftp.xyz.com。CNAME记录也可用于FTP、TFTP和HTTP等其他服务。CNAME记录可以使这些服务所在的主机使用任何已成习惯的名字。CNAME也可以使用虽然改变了有关服务的物理主机,但这些服务使用的机器名不变,照常提供服务。这样就可以通过使用新的计算机来提高服务的性能,而不影响服务的正常运转。因为通过CNAME记录很容易为服务指定一台新主机,而一般的用户都不会察觉。

7)服务(SRV)记录:从技术上来说,SRV记录是一个实验性的资源记录,微软构造了一个服务基础来消除传统的NetBIOS服务,这个基础是依赖于定位提供查询服务主机的SRV记录的。