BIND 转发 ( Forwarder )

某些网络连接不鼓励向本地以外发送很大的数据流量,这要么是因为网络连接是按流量计费的,或网络连接本身是带宽不足。在这样的情况下,如果想将发往外部的  DNS  流量限制到尽可能的小,就需要使用  BIND  的转发机制。或者你的网络中只有一台机器能连接到  Internet  ,而你在这台机器上运行了  BIND  ,那么你可以将这台  BIND  作为内部网络中的其他  BIND  的转发器,使得其他  DNS  也能查找  Internet  域名。

转发机制的这样的:当你设置了转发器后,所有非本域的和在缓存中无法找到的域名查询都将转发到设置的  DNS  转发器上,由这台  DNS  来完成解析工作并做缓存,因此这台转发器的缓存中记录了丰富的域名信息。因而对非本域的查询,很可能转发器就可以在缓存中找到答案,避免了再次向外部发送查询,减少了流量。

转发器的配置格式是:
options { 
 forwarders { 192.168.24.35; 192.168.24.36; };
};

这里要注意,转发器本身不用做任何设置,而是对需要转发器的其他  DNS server  做以上配置。还有,如果该  DNS Server  无法联系到转发器,那么  BIND  会自己尝试解析。

如果你要禁止  BIND  在无法联系到转发器时不做任何操作,那么你还可以使用  forward only  命令,这样  BIND  只能使用区的权威数据和缓存来响应查询了(   在连接不到转发器的情况下   )。
options { 
    forwarders { 192.168.24.35; 192.168.24.36; };
    forward only;
};


 BIND 8.2  以后引入了一个新的特性:转发区(  forward zone  ),它允许你把  DNS  配置成只有查找特定域名的时候才使用转发器。(  BIND 9  9.1.0   才开始有转发区功能   )例如,你可以使你的服务器将所有对  xmgd.com  结尾的域名查询都转发给  xmgd.com  的两台名字服务器:
zone "xmgd.com" {
    type forward;
    forwarders { 210.52.83.228; 210.52.83.229; };
};

这样的功能有什么用呢?假设  xmgd.com  和你的网络有一个私有的连接,而  xmgd.com  又没有连接上  Internet  ,那么你从  Internet  是无法查到  xmgd.com  后缀的域名的,这时你就要使用转发区的功能了。

还有一种转发区设置和刚才的设置刚好相反,它允许你设置什么样的查询将不被转发,当然这只适用于在  options  语句中指定了转发器的  DNS  。配置如下:
options { 
    directory "/var/named";    
    forwarders { 192.168.24.35; 192.168.24.36; };
};

zone "xmgd.com" {
    type master;
    file "zone.xmgd.com";
    forwarders {};
};

这样写你可能会问为什么你要在自己的权威区里禁止转发?难道不是自己回答查询而不使用转发器吗?
有这样一种情况,在  xmgd.com  这个区中,你授权了几个子域,例如: zx.xmgd.com lab.xmgd.com  等,那么在  xmgd.com  的权威服务器上设置转发后,因为对  zx.xmgd.com lab.xmgd.com  这几个子域不是权威,那么如果有对  www.zx.xmgd.com  这样的子域的域名查询,服务器也将转发。这完全是没有必要的,因为服务器上就有  zx.xmgd.com  子域的  NS  记录,何须再转发

本文出自 “jiejun” 博客,谢绝转载!

你可能感兴趣的:(linux,bind,休闲,forwarder)