我有一个运行bind9 的缓存递归DNS 服务器。对于单个本地区域,我使用type forward
和设置了一个转发器forward only
,效果很好。我想将转发区域的任何缓存限制为 5 秒(正面和负面响应)。我转发到的服务器是本地的,不能被摆弄,而且遗憾的是,它动态生成的记录的缓存 TTL 等的有用值较少(本质上它假设它是所有内容的缓存解析器)。
据我所知,我会使用max-cache-ttl
并保存它,并且仅应用于全局或视图。max-ncache-ttl
max-cache-ttl
max-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 值。