了解DNS区域SOAlogging中的TTL

比方说,我为我的DNS服务器创build一个192.0.2.0/24networking的反向区域文件,我的DNS服务器将是反向区域2.0.192.in-addr.arpa的权威。 在这个反向区域文件中,我使用以下参数创build“权限的开始”logging:

$ dig @localhost -t SOA 2.0.192.in-addr.arpa. +noall +answer 2.0.192.in-addr.arpa. 604800 IN SOA primary-DNS-server secondary-DNS-server 2015010600 28800 7200 1209600 86400 $ 

我是否正确,该反向区域的DNS TTL是86400秒? 这意味着如果recursion(caching)名称服务器从该区域请求一个PTRlogging,那么这个recursion名称服务器将caching结果86400秒?

早在1997年,这将是一个正确的SOAlogging解释。 :)当时事情有点模棱两可。

RFC 2308将SOAlogging的最后一个字段重新分类为caching间隔,否则称为NCACHE字段。 RFC2308§4是这里最适用的。 它不仅将其重新定义为NCACHE字段,而且还解释了为什么将缺省TTL编码到SOAlogging中会被误导开始。 (后者的重点是粗体)

4 – SOA最小字段

过去,SOA最小字段有三种不同的含义,一个区域中所有RR的最小TTL值,不包含TTL值的RR的默认TTL和负面响应的TTL。

尽pipe是最初定义的含义,其中第一个是所有区域内RR的最小TTL值,实际上从未被使用过,因此不推荐使用。

第二,在主区域文件中不包含显式TTL的RR的默认TTL仅与主服务器相关。 区域传输之后,所有RR都有明确的TTL,并且不可能确定logging的TTL是否明确设置,或者在区域传输之后是否从缺省导出。 在服务器不要求RR明确包含TTL值的情况下,它应该提供一种机制,而不是SOAlogging的MINIMUM字段的值,从中可以获得缺less的TTL值。 这是如何完成的,取决于实现。

主文件格式[RFC 1035 Section 5]扩展到包括以下指令:

  $TTL <TTL> [comment] 

所有出现在指令之后的资源logging都没有显式地包含一个TTL值,它们的TTL被设置为在$ TTL指令中给出的TTL。 没有显式TTL的SIGlogging从SIGlogging的“原始TTL”[RFC 2065 Section 4.5]中获得它们的TTL。

其余的当前意义,作为负面反应使用的TTL,是SOA最小字段的新定义的含义。

打破这个:

  • SOAlogging的最后一个字段( NCACHE )指定如果查询导致NXDOMAIN,则远程名称服务器应该caching否定响应的时间。
  • 默认TTL由软件configuration中的默认值定义,或者与基于文本的区域文件的$TTL指令相同。
  • 作为此实现的结果,无法通过DNS协议查询远程名称服务器以确定区域的默认TTL。 $TTL和家庭不是logging,因此你不能查询他们,他们将无法生存的区域转移。 (相反,在区域传输时,所有丢失的TTL将被replace为该值)

正如Andy所说,如果单个logging指定了自己的TTL,那么默认的TTL是没有意义的。

几乎。 soalogging本身的TTL为86400秒,取决于服务器端软件,它将是该区域的默认ttl。

该区域内的单个logging(例如PTR或NS)可以覆盖TTL。 我相信任何单个DNSlogging的recursion查询将返回自己的TTL,虽然我说的基于观察而不是引用的文档。