Bind9:TTL 604800 超出配置的最大区域 TTL 86400

Bind9:TTL 604800 超出配置的最大区域 TTL 86400

我在 Debian 上运行 bind 9.16.33 名称服务器。它一直运行良好,但突然间几个域停止工作。命名日志显示:

dns_master_load: ki9.us.db:3: TTL 604800 exceeds configured max-zone-ttl 86400
dns_master_load: ki9.us.db:3: out of range
zone ki9.us/IN: loading from master file ki9.us.db failed: out of range
zone ki9.us/IN: not loaded due to errors.

这件事是在半夜突然发生的,并未经过任何改变。

答案1

自上次 dnssec 密钥重新签名以来的某个时间点,我添加了一些 TTL 为 604800 的新记录。这max-zone-ttl是 的一部分dnssec-policy。根据v9.18 文档

这指定了区域的最大允许 TTL 值。加载区域文件时,任何 TTL 值高于 max-zone-ttl 的记录都会导致区域被拒绝。

这可确保在滚动到新的 DNSKEY 时,旧密钥将保持可用,直到 RRSIG 记录从缓存中过期。max-zone-ttl 选项可确保区域中的最大 TTL 不高于已知且可预测的值。

因此,直到密钥被旋转后,问题才出现。我一直使用默认值dnssec-policy,其max-zone-ttl值显然是 86400。

我没有改变我的记录,而是决定增加 中的最大值named.conf.local。当它不起作用时,情况如下:

zone "ki9.us" {
    dnssec-policy default;
    ....
}

我把它改成了这样:

dnssec-policy "bigttl" {
  max-zone-ttl 604800;
}
zone "ki9.us" {
    dnssec-policy bigttl;
    ....
}

然后重新启动 bind,问题就解决了。新的“bigttl”策略只需定义一次,然后就可以在我的每个域的区域部分中引用它。

相关内容