3.4传递查询:前向服务器和从属服务器
一个DNS服务器可以指定另一个服务器为它的前向服务器(forwarder),以确定当它自己不能回答查询时,下一步将把查询转向何处。而从属(slave)关系是使服务器依靠它的前向服务器来回答查询,它也不能再成为其他DNS服务器的客户机。前向服务器和从属服务器的基本差别是:
•前向服务器:发送查询到一台指定的机器,等待很短的时间,再开始自己查找。
•从属服务器:发送查询到一台指定的机器,并等待回答。从属服务器本身不对查询进行解析。
注意这里的“从属服务器”不是指辅服务器,而是一个实际上叫做“从属服务器”的定义
前向服务器是一台指定用来处理查询的机器(见图3-1)
客户机,也包括其他的DNS服务器,在将查询发送到前向服务器后,等待一段时间,如果没有收到回答,也可自己开始查找结果。因为大量的通信都要通过前向服务器,它们将建立很大的地址缓存。如果要使缓存为很多用户使用,可使用前向服务器。
图3-1所示为前向服务器的处理过程:
1)客户机向本地DNS服务器发出查询。
2)本地DNS服务器将查询转送到前向服务器,并开始等待。
3)前向服务器向Internet上的一台域名服务器发送查询并等待。
4)如果没有收到回答,本地DNS服务器将查询发送到Internet上的一台域名服务器。
前向服务器和本地DNS服务器最终都能得到一个响应,并建立缓存。
如果一个客户机的域名服务器有一个指定的前向服务器并且接收到一个查询却不能从它的本地域区文件或cache中得到结果,此域名服务器不会执行递归查询来得到结果(第5章“域名查询详述”将介绍递归查询),而是将查询转发到指定的前向服务器。由指定的前向域名服务器来进行搜索和提供答案。如果前向服务器不能返回回答,服务器自身才开始一个递归查询。
前向转发有一定的用途。用途之一是将查询转发到若干台确信能够解析的DNS服务器,从而在这些机器上建立相应主机的缓存,以便于将来的查询。但前向服务器最经常的应用是在防火墙内外建立双DNS服务器体系。一个连接到Internet的机构需要解析Internet主机名,但可能因安全的原因,不希望将自己的网络暴露给Internet的其余用户。这时可用一台内部的DNS服务器将所有到机构的域的外部查询都前向转发到一台外部的DNS服务器(前向服务器)来寻求答案。
从属服务器是必须使用前向服务器的DNS服务器(见图3-2)。从属服务器发送查询到指定的机器,等待回答,若前向服务器没有很快地给出回答,也不允许从属服务器自己来解析查询。这种选择可作为一种很有用的安全措施,因为可以使所有的查询都只经过由从属服务器到前向服务器的一条通路。这也是一种很好的方法,使得只有得到授权的外部查询才能通过防火墙,在此基础上,可以实施很好的安全措施。
图3-2所示的过程如下:
1)客户机向本地DNS服务器发送查询。
2)本地DNS服务器将查询前向转发到一台前向服务器,并开始等待。
3)前向服务器将查询发送到Internet上的一台域名服务器并等待。
4)如果没有得到结果,则从属服务器(在这种情况下,就是本地DNS服务器)也不会自己开始解析。
从属服务器是设置为使用前向服务器的DNS服务器,其唯一的限制是:从属服务器只能从指定的前向服务器得到查询结果。再回到前面所提到的安全考虑,一台内部DNS服务器提供对所有内部主机的名字解析服务。这提供了对解析是否终止Internet服务的控制。
一台外部的DNS服务器对所有受保护的主机和机构提供外部域名的解析。而内部域名服务应由防火墙内的DNS服务器提供服务以防止内部的名字和地址被外部知道。记住DNS服务器上的任何信息都可以很容易地由一次简单的查询来发现。Windows2000的活动目录集成用访问控制列表(ACL)来控制访问。
为设置前向服务器,引导文件中必须具有描述前向服务器的条目,或者必须在“Forwarders”选项卡中输入相应的信息,在“ServerProperties(服务器属性)”对话框中用鼠标单击“Forwarders”图标就会显示“Forwarders”选项卡。要打开“ServerProperties”对话框,只需选择服务器的“Properties(属性)”即可。如果检查一下“DonotuseRecursion(不用递归)”复选框,会发现已经建立了从属服务器。
不论是上述哪一种情况,都必须将前向服务器的IP地址包含在配置中。以下的例子显示了相应的引导文件条目。注意这里使用的是Windows2000的缺省目录。在这里顺带提一下,因为不管怎样有时你会忘记东西放在哪里,而如果有什么能告诉你它在哪儿将是非常棒的。
3.5确定DNS服务器的类型
以下对各种不同的DNS服务器类型进行小结,可以帮助读者选择某一类服务器并加以实现
•主服务器:具有一个或几个域区的授权。域区就是一个或几个域的数据,也可以是一个域的部分数据。
•辅服务器:也具有授权功能,作为主域名服务器的备份。它通过域区传送从主服务器获得所有的域区数据。
•前向服务器:由其他的DNS服务器指定的一台处理其所有查询的DNS服务器。
•从属服务器:配置为使用前向服务器的DNS服务器,但它没有其他选择,必须使用前向服务器进行所有查询。注意这里不是指辅服务器。
•缓存服务器:通过自己的查询操作建立地址缓存的服务器。只用于缓存的服务器,没有自己的域区数据,只为客户机进行查询。
Windows2000DNS服务器可以提供上述所有的服务,一个有趣的区别是当它被授权于一个或多个域区时就叫做从属服务器。第11章将更加详细地讨论这些不同类型服务器的设置。
如果有了系统管理员的权限,就可以确定当前系统中的服务器是什么类型。系统管理员或者可以阅读引导文件,或者通过DNS管理控制器观察域的属性。DNS服务器的功能在UNIX系统引导文件中以无格式英文拼写。文件中也列出了有关域名服务器功能的语句,以有关服务器的目的或功能开始。对于Windows来说,这个文件告知你在服务器上的所有域区以及哪些被用于缓存文件中。如果域名服务器是通过注册表来启动(可以通过注册表或者引导配置文件启动),则引导文件只有一条语句,说明是由注册表启动。
使用DNS服务控制器时,可以用鼠标右键单击所列出的任何一个域名以打开“ZoneProperties(域区属性)”对话框,如图3-3所示。图中所示的“General(常规选项卡)”给出了域的有关信息,指出服务器是主服务器还是辅服务器。如果DNS管理控制器中除了127.in-addr.arpa外没有列出其他域,就可以知道这是一台缓存服务器或者是一台从属服务器。要区别究竟是哪个,查看缓存文件或查看服务器属性的“RootHints(根提示)”选项卡。
如果没有管理员的权限,但知道服务器的IP地址,则可通过服务器任何一个域的SOA记录来检查这台服务器。如果SOA记录的source条目就是该服务器,则可以肯定这台机器就是这个域的主服务器。
辅服务器可以提供它从主服务器传来的域区的授权数据。图3-3显示了辅服务器是如何配置的,其中的IP地址域显示了所指定的主服务器的IP地址。可以将辅服务器安排在局域网中来提供查询服务,以减轻广域网的负荷并提高安全性。同样,可以在一个较慢的连接上使用缓存前向服务器,因为它可以通过缓存本地查找的应答来减少所需带宽。
如果一台服务器还没有域区,则它可能是缓存服务器或还没有被授权的辅服务器。
3.6小结
各种DNS服务器可帮助你设计系统并迎接域名服务的挑战。主服务器是数据的来源;辅服务器是数据的备份,并能分担查询的负荷;缓存服务器也能减轻查询的负荷而不需要增加管理工作量;前向服务器和从属服务器可以提高安全性,并体现缓存的优点。
第4章将详细讨论如何构造DNS记录、记录的内容,以及如何利用源记录实现DNS服务器之间的交流。