我要投稿
  • 您当前的位置:57365.com -> 技术教程 -> 服务器网络 -> 服务器教程 -> 域名服务器教程 -> 教程内容
  • [ 收藏本页教程 ]
  • BIND 高级特性(一)-- 转发 forwarder域名服务器教程

    教程作者:佚名    教程来源:不详   教程栏目:域名服务器教程    收藏本页
                  摘要: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没有成功,估计是差在这里了。请大家帮忙

    我要投稿   -   广告合作   -   关于本站   -   友情连接   -   网站地图   -   联系我们   -   版权声明   -   设为首页   -   加入收藏   -   网站留言
    Copyright © 2009 - 20012 www.www.hxswjs.com All Rights Reserved.57365.com 版权所有