中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 操作系统 > 服务器 > 域名服务器
BIND 高级特性(一)-- 转发 forwarder
作者:未知 时间:2005-09-13 18:50 出处:ChinaUnix.net 责编:chinaitpower
              摘要: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 ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有