DNS超时caching多长时间?

如果整个区域的服务器都不能联系,这个事实将被caching多久?

在BIND 9.11中,默认情况下SERVFAIL响应caching1秒。

从BINDpipe理员参考手册:

SERVFAIL-TTL

设置由于DNSSECvalidation失败或其他常规服务器故障而cachingSERVFAIL响应的秒数。 如果设置为0,则禁用SERVFAILcaching。 如果查询的CD (检查禁用)位被设置, SERVFAILcaching不会被查阅; 这允许由于DNSSECvalidation而失败的查询在不等待SERVFAIL TTL过期的情况下被重试。

最大值是30秒; 任何更高的价值将被默默地减less。 默认值是1秒。

这是根据RFC 2308实现的 ,尽pipe在实践中指定的最大超时是有问题的,因此为什么是当前的默认值。

根据http://cr.yp.to/djbdns/third-party.html

RFC 2182声称DNScaching不被caching; 这种说法是错误的。

根据rfc2308#section-7.1 ,如果parsing不成功,并导致SERVFAIL (例如,从超时),那么它可以被caching,但是如果是这样,它不能被caching超过5分钟。

在实践中,它看起来通常没有被caching,或者如果被caching的话,被caching了一个纯粹象征性的时间,就像一秒钟。


  • 在BIND 9.9.6-S1(2014年发布)之前, SERVFAIL显然SERVFAIL被caching。

    它是与提交a878301 (2014-09-04)引入的。

    例如,在此问题以及2014年之前发布的所有BIND版本中,如果上述提交和SERVFAIL -S1中第一次介绍的文档是相信的,那么BINDrecursionparsing器cachingSERVFAIL

  • 在最新的BIND中,自2015年以来,默认的servfail-ttl设置已经设置为1s ,并且已经被硬编码到30s的上限(取代RFC规定的300s上限)。

    见提交90174e6 (2015-10-17) 。

    在2014/2015年度,违约率为10s ,最高上限为300s ,但根据以下报价,较高的数字被认为是不合理的悲观。


值得注意的参考资料(包括各自的报价)包括:

  • https://kb.isc.org/article/AA-01178/(2014 / 2016-01-07)

    cachingSERVFAIL响应的结果包括一些情况,在这种情况下,客户体验被认为是有害的,特别是当SERVFAIL提交给客户的原因是暂时的,并且从查询的立即重试将是更合适的行动。


  • http://cr.yp.to/djbdns/third-party.html(2003-01-11

    第二种策略是声称广泛的DNS客户端无法访问所有的DNS服务器时会做特别的事情。 这个论点的问题是,这种说法是错误的。 任何这样的客户端显然是越野车,并且将无法在市场中生存:考虑如果客户端的路由器短暂停机,或者客户端的networking暂时被淹没,会发生什么情况。


总而言之, SERVFAIL不太可能被caching,但即使被caching,它最多也会是一个双或甚至一个单位的秒数。

超时不会被caching。 它还没有TTL。