为 Linux 持久缓存 DNS 缓存

为 Linux 持久缓存 DNS 缓存

是否有免费的 DNS 代理/缓存软件可以无限期地缓存肯定答案,直到收到新的肯定答案?这意味着只要上游 DNS 服务器不回答或给出否定(NXDOMAIN)答案,缓存的存活时间就应该比收到的 TTL 更长。

这个问题的另一个名字可能是弹性 DNS 缓存因为它可以在停电时提供帮助。

最佳缓存行为是,如果缓存的答案在其 TTL 内可用,则不转发客户端查询,否则转发客户端查询。如果在可配置的超时时间内没有答案,或者上游有否定答案,则缓存内容将返回一些可配置的人工 TTL 值。如果有肯定答案,则将其返回给客户端并保存在缓存中。

答案1

具体来说,你要找的词是“服务过期”或“服务过期”。相当多的 DNS 解析器支持提供旧数据;这个功能实际上已经存在,即使作为IETF 规范

例如,

  • “serve-stale” 已由ISC BIND 9.11(该链接指向一篇博客文章,其中也讨论了该功能的历史);

  • 它被称为“服务已过期”未绑定– 可能与其“预取”功能(自动刷新缓存条目)配合良好;

  • 域名系统在 1.4.0 中添加了“keepStaleData”;

  • 尽管pdns-递归器仍只有一个待处理的功能请求。

然而,这只适用于完全中断的情况。才不是适用于 NXDOMAIN 响应,因为这些响应仍然完全有效的响应 – 虚假的“没有这样的域名”与合法的域名无法区分(除非 DNSSEC 验证失败)。否定回复实际上也是可缓存的。


此外,许多解析器支持对接收的 TTL 设置最小限制,例如,TTL 为 30 秒的回复将被缓存 5 分钟。这在使用不可靠的上游解析器时会有所帮助。

  • Unbound 有“cache-min-ttl”;

  • dnsmasq 有“min-cache-ttl”(限制为 1 小时)。


类似主题:

相关内容