我在 Debian 上有一个 BIND 服务器,想知道有哪些选项可以让我缓存域请求,以便提供的查询可以暂时存储在 RAM 中,而无需询问外部服务器以获取数据。
我的设置是仅转发器的 BIND。我查看的所有指南都谈到了缓存,但没有明确的选项,只有如何使用绑定的教程。
BIND 中的缓存部分是否以隐式方式完成,或者我可以以某种方式对其进行调整?
我确实有一个用于阻止的 RPZ 区域,那个区域很快,但是根据我的测试,根据查询速度判断,转发的域没有被缓存。
答案1
在 BIND 中,缓存是自动且始终开启的,就像所有 DNS 解析器一样。但是,它会遵守响应中指示的 TTL – 如果记录的 TTL 为 60 秒,则只会缓存 60 秒,尽管更常见的是一小时到一天。
(因为你正在查询另一个缓存,所以回复的 TTL你的解析器收到的金额将减少该记录在上游缓存,因此它可能比原始的低得多;例如,如果您的上游已经将 60 秒的回复缓存了 15 秒,那么您的 BIND 将使用 45 秒的 TTL 接收它!因此,使用转发器实际上可能会适得其反。)
如果使用 进行测试dig
,TTL 是每个应答记录的第二个字段中的数字(以秒为单位)。使用 Windows 上的 nslookup,尝试该-d
选项。
其他一些解析器可以选择强制执行最小 TTL根据该页面,BIND 没有此功能;但如果我没记错的话,最近的版本确实有一个serve-stale
选项,其工作方式略有不同,但应该可以达到相同的效果。