是什么触发了使用否定时间来保存DNS SOA记录值的时间?


8

我正在阅读以下dns教程,并且其中包含以下示例:

domain.com.  IN SOA ns1.domain.com. admin.domain.com. (
                                        12083   ; serial number
                                        3h      ; refresh interval
                                        30m     ; retry interval
                                        3w      ; expiry period
                                        1h      ; negative TTL
)

为说明negative TTL值这样说:

1h:这是如果名称服务器在此文件中找不到请求的名称,则该名称服务器将缓存名称错误的时间。

有什么条件可以触发服务器缓存这样的名称错误?一个例子真的很有帮助。

Answers:


11

SOA当权威服务器指示所请求的记录不存在时,负缓存间隔就会发挥作用。具体情况是:

  • 回复响应代码为NXDOMAIN
  • NODATA综合状态答复,但仅在有SOA记录的地方形成。(NOERRORrcode,0个答案,SOA授权部分中的1条记录+可选NS记录)

服务器软件通常会在此值上强制在本地配置最大值,因此即使您86400不存在TTL为负,远程递归服务器也不一定要缓存那么长时间。

如果您想进一步阅读,这些情况将在RFC 2308节中介绍。阅读第2节作为入门,然后阅读5-6。


IIUC如果我从权威服务器请求“ not.available.example.com”,那么它将被缓存到负生存时间?
Ole

正确。完全递归服务器将可靠地缓存不存在的服务器,但是存根解析器(例如OS解析器库)的行为将有所不同。例如Windows。您会发现“名称不存在”。在的输出中ipconfig /displaydns,它代表NXDOMAIN。您还将在该输出中找到“,类型为X的记录”的实例,它对应于NODATA。大多数基于UNIX的系统确实没有,因为他们没有在所有缓存,无需额外配置。(nscd启用缓存,本地递归服务器并使用127.0.0.1进行DNS查找等)
Andrew B

因此,如果我正确地设想了此目的,是否可以再次检查整个递归服务器是否确实不提供“ not.available.example.com”?换句话说,如果我没有IP地址,我可以在/ displaydns端点之类的服务器上查询服务器,并且结果应包含该地址确实不存在的确认?
Ole

ipconfig /displaydns可以告诉您本地存根解析器缓存的内容。不多不少。管理员可能想要处理的信息是开放式的。
安德鲁B

@Ole目的是防止一旦服务器已经告知解析器该名称不存在,就重复查询该名称。就像其他缓存一样。
Barmar
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.