当我使用响应策略区域配置 BIND 以便可以覆盖 LAN 网络的 DNS 时,我注意到此 DNS 服务器返回的 TTL 最大为 5 秒。我可以将 TTL 降低到 1-4 秒,但设置任何高于 5 的值都会停留在 5 秒。(我尝试设置 $TTL 3600 和内联,例如 testdns.domainin.net 3600 IN A xxxx)
我最初在配置了 BIND 的 pfSense 盒上注意到了这一点,但后来我在 Ubuntu 下设置了另一个测试服务器,那里也发生了同样的事情。
我的配置基于https://deteque.com/m3aawg-bind-training/本文档中提到https://www.isc.org/docs/BIND_RPZ.pdf
我花了大量时间测试不同的设置,虽然 DNS 返回正确的记录,但 TTL 时间如上所述是错误的,对于我的目的而言,5 秒实际上是不可用的。
据我所知,唯一能够限制 TTL 的配置是,max-zone-ttl
但这仅适用于与 DNSSEC 结合使用(https://bind9.readthedocs.io/en/v9.18.13/reference.html#namedconf-statement-max-zone-ttl)
就我而言,这会影响版本 9.16 和 9.18。
我是否遗漏了什么,或者这是某种未记录的 RPZ 限制?
感谢所有能对此提供一些启发的人。
答案1
您可以使用语句来执行此max-policy-ttl
操作response-policy
(默认的 5 秒来自那里):
max-policy-ttl:可能出现在响应策略语句的特定区域定义(区域部分)内,在这种情况下它仅影响该区域,或者出现在外部(全局部分),在这种情况下它影响所有区域(除非被任何特定区域定义内的相同参数覆盖)。策略处理的结果会更改解析器缓存中的响应。默认情况下,无论原始响应 TTL 如何,修改后的响应 TTL 都设置为 5 秒。因此,如果您想强制响应在缓存中停留很长时间,则使用参数定义(更长的) ttl 值,例如 max-policy-ttl 172800(以秒为单位定义的 2 天)。但是,请考虑任何更新的 RPZ 区域文件(主或从)都可能修改任何策略触发器或操作的行为,包括将其完全删除。将默认 TTL 值修改为较长的时间段 - 一种表面上有吸引力的策略 - 可能会产生意想不到的后果,即在缓存中遗留不必要的记录。
从https://www.zytrax.com/books/dns/ch7/rpz.html#response-policy (执照共享版权)