仅减少转发区域上的 Bind9 缓存

仅减少转发区域上的 Bind9 缓存

我有一个运行bind9 的缓存递归DNS 服务器。对于单个本地区域,我使用type forward和设置了一个转发器forward only,效果很好。我想将转发区域的任何缓存限制为 5 秒(正面和负面响应)。我转发到的服务器是本地的,不能被摆弄,而且遗憾的是,它动态生成的记录的缓存 TTL 等的有用值较少(本质上它假设它是所有内容的缓存解析器)。

据我所知,我会使用max-cache-ttl并保存它,并且仅应用于全局或视图。max-ncache-ttlmax-cache-ttlmax-ncache-ttl

这是我的配置:

zone "example.local." {
     type forward;
     forward only;
     // max-cache-ttl 5;   <--- does not work here
     // max-ncache-ttl 5;  <--- does not work here
     forwarders {
          192.200.1.10;   // on same LAN
     };
};

理想情况下我不想关闭缓存完全但如果这是我唯一能做的事情,那将是一个选择。

有任何想法吗?

答案1

我不认为有一种简单的方法可以仅通过配置来完成此操作。这个问题关于服务器故障讨论了优点和缺点,并提出了一个涉及修补 BIND 源的建议(但该修补程序不允许您仅对单个区域执行此操作)。

另一种方法是从您要转发到的服务器传输区域,修改 TTL,然后将本地 BIND 配置为该区域的权威。是的,这是一个 hack,但它很容易编写脚本并且会起作用。

如果你没有绑定 BIND,你想要的可以通过未绑定- 参见cache-max-ttl选项:

缓存中 RRset 和消息的最大生存时间。默认值为 86400 秒(1 天)。如果达到最大值,对客户端的响应仍然会根据原始(较大)值递减 TTL。当内部TTL过期时,缓存项就过期了。 可以设置较低以强制解析器经常查询数据,而不信任(非常大的)TTL 值。

相关内容