如果整个区域的服务器都不能联系,这个事实将被caching多久?
在BIND 9.11中,默认情况下SERVFAIL响应caching1秒。
从BINDpipe理员参考手册:
SERVFAIL-TTL
设置由于DNSSECvalidation失败或其他常规服务器故障而caching
SERVFAIL响应的秒数。 如果设置为0,则禁用SERVFAILcaching。 如果查询的CD(检查禁用)位被设置,SERVFAILcaching不会被查阅; 这允许由于DNSSECvalidation而失败的查询在不等待SERVFAILTTL过期的情况下被重试。最大值是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。