Bind中的zone语句的定义和用法

在了解Zone语句之前需要先了解view语句的用法,可参考文章下面的文章:

  1. Bind中的view语句定义和用法
  2. [转]利用View特性来设置域名的多匹配查询
  3. Bind 之recursion递归

zone 语句语法

zone zone_name [class] [{
    type ( master | slave | hint | stub | forward ) ;
    [ allow-notify { address_match_list } ; ]
    [ allow-query { address_match_list } ; ]
    [ allow-transfer { address_match_list } ; ]
    [ allow-update { address_match_list } ; ]
    [ update-policy { update_policy_rule [...] } ; ]
    [ allow-update-forwarding { address_match_list } ; ]
    [ alsonotify { ip_addr [port ip_port] ; [ ip_addr [port ip_port] ; ... ] }; ]
    [ check-names (warn|fail|ignore) ; ]
    [ dialup dialup_option ; ]
    [ file string ; ]
    [ forward (only|first) ; ]
    [ forwarders { ip_addr [port ip_port] ; [ ip_addr [port ip_port] ; ... ] }; ]
    [ ixfr-base string ; ]
    [ ixfr-tmp-file string ; ]
    [ maintain-ixfr-base yes_or_no ; ]
    [ masters [port ip_port] { ip_addr [port ip_port] [key key]; [...] } ; ]
    [ max-ixfr-log-size number ; ]
    [ max-transfer-idle-in number ; ]
    [ max-transfer-idle-out number ; ]
    [ max-transfer-time-in number ; ]
    [ max-transfer-time-out number ; ]
    [ notify yes_or_no | explicit ; ]
    [ pubkey number number number string ; ]
    [ transfer-source (ip4_addr | *) [port ip_port] ; ]
    [ transfer-source-v6 (ip6_addr | *) [port ip_port] ; ]
    [ notify-source (ip4_addr | *) [port ip_port] ; ]
    [ notify-source-v6 (ip6_addr | *) [port ip_port] ; ]
    [ zone-statistics yes_or_no ; ]
    [ sig-validity-interval number ; ]
    [ database string ; ]
    [ min-refresh-time number ; ]
    [ max-refresh-time number ; ]
    [ min-retry-time number ; ]
    [ max-retry-time number ; ]
}];

各参数的详解释

type:hint

根NS的设置,也就是.域的服务器设置。因为我们知道,客户端从指定的NS上找不到记录后,将会出现两种情况,一种向.域服务器请求查询。一种将请求转发到上一级NS服务器。这里的设置是指第一种。

举例说明常用的设置:

zone "." IN {
    type hint;
    file "/usr/local/named/etc/named.ca";
};

Tips 1:hint只针对.域进行设置。

看下named.ca的种其中三行。

;; 这里指定.域中的其中一台服务器
.        518400 IN NS a.root-servers.net.


;; 这里指定了这台.域服务器的IPv4和IPv6具体地址.
a.root-servers.net.    3600000    IN A  198.41.0.4
a.root-servers.net.    3600000    IN AAAA   2001:503:ba3e::2:30

Tip 2:可以从这里下载这个文件:named.ca

Tip 3:在什么时候会使用hint ?这个只是个人的总结,如果你的这台NS所在的局域网已经有上一层的NS了,这个时候设置hint 是没有任何作用的。因为这个时候不使用已存在的NS,你根本上不了网。只能设置forwarders {10.0.2.3;};  同时开启递归查询 recursion yes;

type:master

这是一个主从结构,也是最常用的,和我们平时所说的主从是一个意思,一般情况下,一个域名解析会使用2个NS,其实这里就是主从,防止单点故障,当然也可以一主多从。举例说明

zone "abc.com" IN {
    type master;
    file "/usr/local/named/etc/named.abc.com";
};

Tips 1:named.abc.com中的内容到底是什么样的?看下面的注解:

FQDN的写法:

$TTL 600
@               IN  SOA     master.abc.com. woodie.abc.com. ( 2017022802 3H 15M 1W 1D )
@               IN  NS      master.abc.com.
master.abc.com. IN  A       192.168.80.110
@               IN  MX  10  www.abc.com.
www.abc.com.    IN  A       192.168.80.121
bbs.abc.com.    IN  CNAME   www.abc.com.
ftp.abc.com.    IN  CNAME   www.abc.com.
linux.abc.com.  IN  CNAME   www.abc.com.
slave.abc.com.  IN  A       192.168.80.120
122.abc.com.    IN  A       192.168.80.122


#其中2017022802 3H 15M 1W 1D,分别是serial,refresh,retry,expire,Minimum,看参考Tips 3

简写:

$TTL 600
@               IN  SOA     master.abc.com. woodie.abc.com.( 2017022802 3H 15M 1W 1D )
@               IN  NS      master
master          IN  A       192.168.80.110
@               IN  MX  10  www
www             IN  A       192.168.80.121
bbs             IN  CNAME   www
ftp             IN  CNAME   www
linux           IN  CNAME   www
slave           IN  A       192.168.80.120
122             IN  A       192.168.80.122

简写不太容易看明白,而FQDN的写法,又太啰嗦,而且要注意.(点号),所以我个人偏好喜欢这样的写法。

$TTL 600
@               IN  SOA     master.abc.com. woodie.abc.com.( 2017022802 3H 15M 1W 1D )
@               IN  NS      master.abc.com.
master          IN  A       192.168.80.110
@               IN  MX  10  www.abc.com.
www             IN  A       192.168.80.121
bbs             IN  CNAME   www.abc.com.
ftp             IN  CNAME   www.abc.com.
linux           IN  CNAME   www.abc.com.
slave           IN  A       192.168.80.120
122             IN  A       192.168.80.122

Tips 2:设定法则,知识建议,如果RR资料更新频繁,值可以相应缩写,如果不是可以增大更新频率,减少同步的带宽。

;Refresh >= Retry *2 
;Refresh + Retry < Expire 
;Expire >= Rrtry * 10 
;Expire >= 7Days ;

Tips 3:参数详解

  • ns.abc.com. woodie.abc.com. :这里是SOA的固定格式,这里有两部分内容,中间用空格隔开,前半部分:Zone的主 DNS 服务器的主机名,后半部分:管理Zone的负责人的电子邮件地址。在该电子邮件名称中使用英文句点 (.) 代替“at”符号 (@)。
  • $TTL  指令:该zone的缓存时间
  • serial:数值Serial代表这个Zone的序列号,序号越大表明资料越新,主要用在 master / slave 同步使用,每次Zone文件更新,都需要修改Serial数值。RFC1912 2.2建议的格式为YYYYMMDDnn 其中nn为修订号,,但序号的最大值不能大于2的32次方,即4294967296
  • refresh:数值Refresh设置Slave DNS多长时间与Master Server进行Serial核对。目前Bind的notify参数可设置每次Master DNS更新都会主动通知Slave DNS更新,Refresh参数主要用于notify参数关闭时;
  • retry:数值Retry设置当Slave DNS试图获取Master DNS Serial时,如果Master DNS未响应,多长时间重新进行检查;
  • expire:如果master/slave在1周内都链接失败,slave将不再尝试链接master,但注意,此时slave还会继续提供解析服务,只是数据不在更新。
  • Minimum:在 8.2版本之前,由于没有独立的 $TTL 指令,所以通过 SOA 最后一个字段来实现。但由于 BIND 8.2 后出现了 $TTL  指令,该部分功能就不再由 SOA 的最后一个字段来负责,由 $TTL 全权负责,SOA 的最后一个字段专门负责 negative answer ttl(negative caching)

 Tips 4:经常提到RR是什么意思呢?RR是Resource Record的缩写,包括A, NS, SOA, CNAME, MX.

  • SOA:开始验证的标识,Start of Authority的缩写。
  • NS:域名服务 NameServer的缩写。
  • A:具体地址IPv4,Address的缩写。
  • AAAA:具体地址IPv6
  • MX:邮件服务器
  • CNAME:主机别名的服务器

 Tips 5:反解配置

zone "80.168.192.in-addr.arpa" IN {
    type master;
    file "/usr/local/named/etc/named.192.168.80";
    allow-update { none; };
};

 cat /usr/local/named/etc/named.192.168.80

$TTL 600
@       IN  SOA     master.abc.com. woodie.abc.com.( 2017022802 3H 15M 1W 1D )
@       IN  NS      master.abc.com.
110     IN  PTR     master.abc.com.
120     IN  PTR     slave.abc.com.
121     IN  PTR     www.abc.com.
122     IN  PTR     122.abc.com.

#这里不再重复介绍,将正解的A换成PTR即可

 Tips 6:有一个地方非常有意思。如果将named.conf中的zone配置成如下:

zone "168.192.in-addr.arpa" IN {
    type master;
    file "/usr/local/named/etc/named.192.168.80";
    allow-update { none; };
};

那相应的 /usr/local/named/etc/named.192.168.80 的文件也相应的调整。

$TTL 1
@       IN  SOA     master.abc.com. woodie.abc.com.( 2017022802 3H 15M 1W 1D )
@       IN  NS      master.abc.com.
110.80     IN  PTR     master.abc.com.  //注意是110.80,而不是80.110
120.80     IN  PTR     slave.abc.com.
121.80     IN  PTR     www.abc.com.
122.80     IN  PTR     122.abc.com.

 type:slave

和master很相似,有几个不同点,slave不需要配置 named.192.168.80 和 named.abc.com 文件,因为slave启动成功后,会自动同步。在named.conf中的配置也不一样,注意比较:

zone "abc.com" IN {
    type slave;
    file "/usr/local/named/etc/named.abc.com";
    masters {192.168.80.110;};
};
zone "80.168.192.in-addr.arpa" IN {
    type slave;
    file "/usr/local/named/etc/named.192.168.80";
    allow-update { none; };
    masters {192.168.80.110;};
};

 type:forward

先看下设置语法:

zone "taisha.org" IN {
    type forward;
    forward first;
    forwarders {10.0.2.3;};
};

此时访问 taisha.org 这个 zone 将转发给10.0.2.3来处理。

  • forward
    此选项只有当forwarders 列表中有内容的时候才有意义。当值是 First,默认情况下,使
    服务器先查询设置的forwarders,如果它没有得到回答,服务器就会自己寻找答案。
    如果设定的是 only,服务器就只会把请求转发到其它服务器上去。
  • forwarders
    设定转发使用的 ip 地址。默认的列表是空的( 不转发)。转发也可以设置在每个域上,
    这样全局选项中的转发设置就不会起作用了。用户可以将不同的域转发到服务器上,或者
    对不同的域可以实现 forward only 或 first 的不同方式,也可以根本就不转发.

相关文章:

Bind中的zone语句的定义和用法》上有3条评论

  1. Pingback引用通告: Bind的安装与详细配置 | 精彩每一天

  2. Pingback引用通告: Bind中的 options 语句定义和用法 | 精彩每一天

  3. Pingback引用通告: Bind中的view语句定义和用法 | 精彩每一天

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>