BIND 高级特性(一)-- 转发 forwarder-服务器技术-3P代码网
繁体中文
设为首页
加入收藏
当前位置:服务器技术首页 >> Dns服务器架设 >> BIND 高级特性(一)-- 转发 forwarder

BIND 高级特性(一)-- 转发 forwarder

2004-11-15 08:00:00  作者:  来源:互联网  浏览次数:0  文字大小:【】【】【
简介:最新的 BIND 提供了很多非常好的新特性,今天就先讲其中的一个:转发 ( Forwarder )。 某些网络连接不鼓励向本地以外发送很大的数据流量,这要么是因为网络连接是按流量计费的,或网络连接本身是带宽不足。在这...

最新的 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 记录,何须再转发。

wangrujun 回复于:2003-02-22 11:43:13

请教:

  比如一台dns服务器(dns1)上设置转发到另一台dns服务器(dns2),假设查询www.chinaunix.net,查询成功后,dns1会缓存www.chinaunix.net的记录,从下次查询吗?我想应该是缓存的吧,对吗?

cpss 回复于:2003-02-22 11:50:28

对,dns会优先从缓存中查询。

但forwarder并不是新概念啊,在bind4

版本就已经有了。

阿骁 回复于:2003-02-22 12:10:44

[quote:1b83dbde1d="cpss"]对,dns会优先从缓存中查询。

但forwarder并不是新概念啊,在bind4版本就已经有了。[/quote:1b83dbde1d]

我主要是想讲一下转发区的功能,顺带讲的转发。 呵呵 。。。

wangrujun 回复于:2003-02-26 09:08:30

我在使用zone forward时,发现一个问题,即recursion必须为yes,否则forward没有作用。

难道recursion yes是forward的前提吗?

wangrujun 回复于:2003-02-26 09:09:56

另外一个关于forward dns的问题

一个只做forward的dns服务器,应该是只需要named.conf,zone "." zone "0.0.127.IN-ADDR.ARPA"其它所有的文件都可以不用了,(包括localhost.rev和正解反解文件)这样说,正确吗?

我自己认为原因是所有的域都是转发,只要把datasize设置大点就可以了。

阿骁 回复于:2003-02-26 12:15:10

[quote:07c00473e3="wangrujun"]另外一个关于forward dns的问题

一个只做forward的dns服务器,应该是只需要named.conf,zone "." zone "0.0.127.IN-ADDR.ARPA"其它所有的文件都可以不用了,(包括localhost.rev和正解反解文件)这样说,正确吗?

..........[/quote:07c00473e3]

对的。 :D

wangrujun 回复于:2003-02-26 13:10:35

谢谢阿骁。

还有这个问题:

我在使用zone forward时,发现一个问题,即recursion必须为yes,否则forward没有作用。

难道recursion yes是forward的前提吗?

阿骁 回复于:2003-02-26 18:36:57

[quote:b68617ca67="wangrujun"]我在使用zone forward时,发现一个问题,即recursion必须为yes,否则forward没有作用。

难道recursion yes是forward的前提吗?[/quote:b68617ca67]

呵呵 。。。当然要 recursion yes ,如果是 no ,那么 BIND 只要在自己的权威 zone 和缓存中找不到查询的域名就会返回给用户说找不到啊! 你忘了非递归查询的定义吗?

wangrujun 回复于:2003-02-27 13:53:31

咳,我以为recursion (被译为递归查询)是只管查询,而不管forward呢。英文太烂的原因。

谢谢

realfox 回复于:2004-04-13 02:56:08

在问一个问题

就是对我的ip Query refuse 的dns服务器,如果我forword给他,他会响应么?

清水无香 回复于:2004-06-08 16:35:48

请问recursion 应该在哪里设置成yes?我用forwarder没有成功,估计是差在这里了。请大家帮忙

责任编辑:admin
相关文章