负面的DNScaching通常持续多久?

如果一个DNS服务器查找了一条logging并且缺less该logging,那么它往往会“消极地caching”这个logging丢失的事实,而不会再尝试查找一段时间。 我没有看到在RFC中有关负面caching的TTL应该是什么,所以我猜这是有点武断。 在现实世界中,这些负面logging多久存在?

负面caching的TTL不是任意的。 它来自请求的logging所属区域顶部的SOAlogging,如果存在的话。 例如:

example.org. IN SOA master-ns1.example.org. Hostmaster.example.org. ( 2012091201 43200 1800 1209600 86400 ) 

SOAlogging中的最后一个值(“86400”)是客户被要求在example.org.下caching负面结果的时间example.org.

如果客户请求doesnotexist.example.org. 它会将结果caching86400秒。

这取决于您对“否定查询”的确切定义,但无论哪种情况,这都logging在rfc2308 “DNS查询的负面caching(DNS NCACHE)”中


NXDOMAIN

  • 如果parsing成功,并导致NXDOMAIN ,响应将带有一个SOAlogging,其中将包含NXDOMAIN TTL(传统上称为MINIMUM字段)。 rfc2308#section-4

SERVFAIL

  • 如果parsing不成功,并导致超时( SERVFAIL ) ,那么它可能根本不被caching,并且在任何情况下都不能被caching超过5分钟。 rfc2308#section-7.1

    请注意,在实践中,如果caching服务器偶尔会遇到短暂的连接问题(并且实际上容易受到拒绝服务放大的影响,那么caching完整的可允许的5分钟的结果是减less客户体验的好方法)几秒钟的停机会导致DNS的某些部分在五分钟内停机)。

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

    例如,在您提出问题时以及在2014年之前发布的所有BIND版本中,如果上述提交和SERVFAIL -S1中第一次引入的文档将是BINDrecursionparsing器,则DID不会cachingSERVFAIL相信。

    在最新的BIND中,默认的servfail-ttl1s ,并且该设置被硬编码为30s的上限(取代RFC规定的300s上限)。 90174e6 (2015-10-17)

    此外,以下是关于此事的一些值得注意的引文:

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

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


总之,一个NXDOMAIN响应将被caching,如适用区域的SOA中所指定的那样,而SERVFAIL不太可能被caching,或者如果被caching,它将会是最多两位数的秒数。