14.3.7 辅域服务器和只缓存服务器
在Bind服务器中,还可以根据需要配置辅域服务器和只缓存服务器,以便能更快地能为客户端提供DNS服务,并提高可靠性。
1.辅域服务器
辅域服务器也可以向客户机提供域名解析功能,但它与主域服务器不同的是,它的数据不是直接输入的,而是从其他DNS服务器(主域服务器或其他的辅域服务器)中复制过来的,只是一份副本,所以辅域服务器中的数据无法被修改。
当启动辅域服务器时,它会和指定的所有主域服务器建立联系,并从中复制数据。在辅域服务器工作时,还会定期地更改原有的数据,以尽可能保证副本与正本数据的一致性。在大型网络中,经常设置多台辅域服务器,主要目的如下所示。
q 提供容错能力:当主域服务器发生故障时,由辅域服务器提供服务。
q 分担主域服务器的负担:在DNS客户端较多的情况下,通过架设辅域服务器完成对客户端的查询服务,可以有效地减轻主域服务器的负担。
q 加快查询的速度:如果本地网络必须使用某一台DNS服务,但与这台DNS服务器连接的速度较慢,可以在本地网络配置一台远程DNS服务器的辅服务器,使本地DNS客户端直接向此辅域服务器进行查询,而不需要向速度较慢的主域服务器查询,以加快速度,并减少用于DNS查询的外网通信量。
辅域服务器的主配置文件也是/etc/named.conf,也需要设置服务器的options主语句和根区域,方法与配置主域服务器的方法相同。但在配置区域时,只需要提供区域名和主域服务器的IP地址,而不需要建立相应的区域文件。因为一个辅域服务器不需要在本地建立各种资源记录,而是通过一个区域复制过程来得到主域服务器上的资源记录。下面是辅域服务器主配置文件/etc/named.conf的部分内容。
... ;其余配置未变化
zone "wzvtc.cn" {
type slave; ;区类型为slave
file "slaves/wzvtc.cn.zone";
masters {10.10.1.2;}; ;要联系的主服务器为10.10.1.2
};
zone "1.10.10.in-addr.arpa" {
type slave; ;区类型为slave
file "slaves/1.10.10.arpa";
masters {10.10.1.2;}; ;要联系的主服务器为10.10.1.2
};
...;其余配置未变化
与前面主域服务器的配置相比,以上配置中的wzvtc.cn和1.10.10.in-addr.arpa两个区的type设成slave,区域数据文件的位置也发生了变化。还有,在两个区域中均增加了“masters {10.10.1.2;}”语句,表示主域服务器的IP地址是10.10.1.2。此时,要假设在IP地址为10.10.1.2的计算机上运行着Bind,其使用的配置文件是14.2.3所提供的那一套,但有关wzvtc.cn和1.10.10.in-addr.arpa区域的配置改为以下内容。
...;其余配置未变化
zone "wzvtc.cn" IN {
type master;
file "named.wzvtc.cn";
allow-update { none; };
allow-transfer {10.10.1.29;}; ; 允许向10.10.1.29传送区域数据
};
zone "1.10.10.in-addr.arpa" IN {
type master;
file "named.1.10.10";
allow-update { none; };
allow-transfer {10.10.1.29;}; ; 允许向10.10.1.29传送区域数据
};
...;其余配置未变化
与原来相比,两个区的配置中均多了“allow-transfer {10.10.1.29;};”子语句,表示允许向10.10.1.29(辅域服务器IP地址)的计算机传送区域数据。
2.只缓存服务器
只缓存服务器是一种很特殊的DNS服务器,它本身并不管理任何区域,但是DNS客户端仍然可以向它请求查询。只缓存服务器类似于代理服务器,它没有自己的域名数据库,而是将所有查询转发到其他DNS服务器处理。当只缓存服务器从其他DNS服务器收到查询结果后,除了返回给客户机外,还会将结果保存在缓存中。当下一个DNS客户端再查询相同的域名数据时,就可以从高速缓存里得到结果,从而加快对DNS客户端的响应速度。如果在局域网中建立一台这样的DNS服务器,就可以提高客户机DNS的查询效率并减少内部网络与外部网络的流量。
架设只缓存服务器非常简单,只需要建立主配置文件named.conf即可。一个典型的只缓存服务器配置如下:
options {
directory "/var/named";
version "not currently available"; ;隐藏名称与版本号
forwarders { 202.96.0.133;61.144.56.101;};转发到其他DNS服务器进行查询
forward only; ;只转发,自己不提供解析服务
allow-transfer{"none";};
allow-query {any;};
};
logging{ ;定义了一个日志
channel example_log{
file "/var/log/named/example.log" versions 3;
severity info;
print-severity yes;
print-time yes;
print-category yes;
};
category default{
example_log;
};
};
其中关键的语句是“forward only;”,表示只对客户端提交的查询进行转发,由其他DNS服务器提供查询结果,自己只对结果进行缓存,以便下次碰到同样的查询时能更快地响应。至于转发到哪一台DNS服务器,由“forwarders { 202.96.0.133;61.144.56.101;}”语句决定。