bind有一项功能是forward,也就是只是做dns缓存。

适用以下情况:

1 做临时测试,不想向上级申请修改ns记录
2 不想向上级申请修改ns记录但希望交给另外的服务器处理
3 只有有限的公网IP,可以在把dns请求交给局域网

设置很简单:

zone "aslibra.com" {
  type forward;
  forward only;
  forwarders {218.241.231.189;};
};

也就是我把域名解析权交给了某个IP,这个服务器只是做cache。
forward only是可选,不设置则该 DNS Server 无法联系到转发器,那么 BIND 会自己尝试解析。
如果你要禁止 BIND 在无法联系到转发器时不做任何操作,那么你还可以使用 forward only 命令,这样 BIND 只能使用区的权威数据和缓存来响应查询了( 在连接不到转发器的情况下 )。
forwarders可以添加多个dns服务器。

我们先做一个测试环境:

三台ns解析服务器,有ns、ns2和ns3
ns和ns2是权威的解析服务器,ns改为bind的forward,后端是ns3。
我们用dig检查一下:

[root@localhost view]# dig www.aslibra.com @ns.aslibra.com
...(省略)
;; ANSWER SECTION:
www.aslibra.com.        300     IN      A       222.76.215.25

;; Query time: 9 msec
;; SERVER: 219.232.241.83#53(219.232.241.83)
;; WHEN: Sun May 31 00:14:15 2009
;; MSG SIZE  rcvd: 49

[root@localhost view]# dig www.aslibra.com @ns.aslibra.com
...(省略)
;; ANSWER SECTION:
www.aslibra.com.        295     IN      A       222.76.215.25

;; Query time: 0 msec
;; SERVER: 219.232.241.83#53(219.232.241.83)
;; WHEN: Sun May 31 00:14:20 2009
;; MSG SIZE  rcvd: 49

看出来区别了吧,300和295是有效性,300是默认的有效时间,也就是说,刚开始就新缓存了这个记录,5秒后查询已经是从缓存取的记录,这个过了300秒后会重新从后端服务器取值。

而我们看看ns2:

[root@localhost view]# dig www.aslibra.com @ns2.aslibra.com
...(省略)
;; ANSWER SECTION:
www.aslibra.com.        300     IN      A       222.76.215.25

;; AUTHORITY SECTION:
aslibra.com.            300     IN      NS      ns.aslibra.com.
aslibra.com.            300     IN      NS      ns2.aslibra.com.
aslibra.com.            300     IN      NS      ns3.aslibra.com.

;; ADDITIONAL SECTION:
ns.aslibra.com.         300     IN      A       219.232.241.83
ns2.aslibra.com.        300     IN      A       219.232.241.84
ns3.aslibra.com.        300     IN      A       218.241.231.189

;; Query time: 0 msec
;; SERVER: 219.232.241.84#53(219.232.241.84)
;; WHEN: Sun May 31 00:15:25 2009
;; MSG SIZE  rcvd: 150

这个是一直都是一样的,这个说明是直接提供的服务,不是forward。
就这么简单,have fun!!

原创内容如转载请注明:来自 阿权的书房
本帖地址:http://www.aslibra.com/blog/post/bind_forward_dig_check.php

04-22 17:16