是否有任何方法可以允许返回过时的 DNS 结果?过时的意思是,TTL 已过期,但无法获取新记录,这可能是由于名称服务器不可用造成的。
据我所知,至少 bind 9 没有任何机制。我在 bind 10 中也找不到任何相关参考。我无论如何也想不出为什么。DNS 没有理由不能使用与 HTTP 相同的缓存规则和方法。网站可以选择禁用或调整其缓存首选项。
这对我来说似乎很简单,我希望我错过了一些新的进展,有人可以与我分享:)
PS,我知道有一些最终用户工具可以做到这一点(opendns,dnsmasq等),但是这会将所有控制权从域所有者手中夺走,并迫使最终用户对区域文件应如何在其TTL之外缓存做出经常错误的猜测。
答案1
摘自 BIND 9.12 发布说明https://kb.isc.org/article/AA-01554/0/BIND-9.12.0-Release-Notes.html,现已可用。
“当充当递归解析器时,named 现在可以继续返回 TTL 已过期的答案,当权威服务器受到攻击且无法响应时。这由 stale-answer-enable、stale-answer-ttl 和 max-stale-ttl 选项控制。[RT #44790]”