12月12, 2017

Bind9 zone 文件格式化说明

本文涵盖了 Bind DNS Zone 示例文件,并针对SOA记录做了详细介绍。

zone 文件示例

    ; zone file fragment for mytest.cn
    ;$TTL 600

    $ORIGIN mytest.cn.

    ; SOA record
    ; owner-name ttl class rr      name-server      email-addr  (sn ref ret ex min)
    @                 IN   SOA     ns1.mytest.cn.   root.mytest.cn. (
                        2017031088 ; sn = serial number
                        3600       ; ref = refresh = 20m
                        180        ; uret = update retry = 1m
                        1209600    ; ex = expiry = 2w
                        10800      ; nx = nxdomain ttl = 3h
                        )
    ; type syntax
    ; host ttl class type data

    ; NS records
    @  86400  IN  NS  ns1.mytest.cn.
    @  86400  IN  NS  ns2.mytest.cn.

    ; A records
    ns1  600  IN  A  10.10.8.1
    ns2  600  IN  A  10.10.8.2

SOA 记录说明

owner-name
    当前域,通常用 @ 来表示
TTL
    标准的TTL值,范围 0 ~ 2147483647。  
    Note:Bind9 开始这里不再适用。
rr
    resource record 资源记录
name-server
    当前域的主DNS
email-addr
    负责此区域的人员的电子邮件地址,因为@在这里有特殊意义,所以用.替代。

sn
    序列号 – Serial,每次变更区域内容时数值+1,以通知slave同步数据。
    值范围1 ~ 4294967295,最大增量 2147483647
ref
    更新频率 – Refresh,slave主动向master更新。
    建议 1200 ~ 43200 秒
ret
    重试时间 – Retry,当slave同步数据失败,多少时间内会再次重试同步。
    典型值为180(3分钟)至900(15分钟)或更高。
ex
    失效时间(Expire),一直尝试的失败时间,持续到这个设定值,指示区域数据不再具有权威性。
    建议 1209600 ~ 2419200 秒 (2-4 weeks)
nx / min
    bind9开始将此值重新定义为负缓存时间。任何解析器都可以缓存 NAME ERROR = NXDOMAIN 结果的时间。允许的最大值是 3 hours (10800 seconds). 
    Note:Bind4 ~ 8版本中,这里为 min,用于保存未指定显式TTL的区域中的任何RR的默认TTL值。而Bind9开始使用$TTL指令定义默认的TTL值。

TTL

TTL(Time-To-Live/生存时间),是一个域名解析记录在 DNS服务器 中的存留时间。各地的DNS服务器在接受到解析请求后,会向域名指定的NS服务器发出解析请求从而获得解析记录;在获得这个记录之后,记录会在DNS服务器中保存一段时间,在这段时间内若再次接到解析请求,DNS服务器将直接返回刚才获得的记录;而这个记录在DNS服务器上保留的时间,就是TTL值。

TTL 设置的应用

  1. 增大TTL值,加速域名解析时间
    一般情况下,域名记录是很少更改的,几个月甚至在几年内都不会有变化。我们可以增大域名记录的TTL值让记录在各地DNS服务器中缓存的时间加长,这样在更长的一段时间内,我们访问这个网站时,本地ISP的DNS服务器就不需要向域名的NS服务器发出解析请求,而直接从缓存中返回域名解析记录。
    TTL值设置成过大的值可能会有不必要的麻烦,但当要更换空间的时候,旧记录需要要等很久才能被更新。

  2. 减小TTL值,加速域名解析生效时间
    更换空间时有DNS记录更改的问题,由于缓存问题,更改的域名记录在有的地方已经生效了,但在有的地方可能等上一两天甚至更久才生效。导致有的地方可能访问到了新服务器,有的地方访问到了旧服务器。
    如果TTL设置非常小(例如1秒),那么就意味着几乎每次用户的解析,递归服务器都需要向DNSLA进行解析请求,这样所耗费的时间就会增加很多,而且权威服务器的解析因为要判断用户的来源进行智能解析,比起来直接使用缓存回答耗费的时间会更长,而且失败率也会更高,因此这对用户的访问体验和解析稳定性都有损害。

TTL 推荐设置

IP经常变动 动态 IP 宕机检测 服务器架构 TTL 建议值
不使用 单服务器 600
使用 多服务器 180
不使用 单服务器 300
不限 不限 120
使用 大型商业网站 60
不使用 热备,容灾,IP固定 3600

上述表格只是一个参考设置,DNSPOD上默认的解析TTL值是600,我觉得比较合适。

本文链接:https://fandenggui.com/post/bind9-dns-zone-file.html

-- EOF --

Comments