zone在linux中的含义,Bind中的zone语句的定义和用法

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

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 的不同方式,也可以根本就不转发.

相关文章:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值