在 BIND9 中自动将区域文件序列号增加一的方法

在 BIND9 中自动将区域文件序列号增加一的方法

我有一台包含许多区域的 BIND9 服务器,我需要将区域文件的序列号增加一。有些区域使用 YYYYMMDDXX 格式,但其他区域只是将其增加一,因为它们是动态 DNS 区域,因此对我来说,更新所有区域只需要增加一即可。

有办法吗?我试过,sed但我缺乏自动执行此操作的知识。

答案1

这在“sed”中很难做到,但在“awk”中却相当容易。

 awk '{ if ( $0 ~ /[\t ]SOA[\t ]/ ) $7=$7+1; print}'

如果它是 SOA 行(“SOA”,前后有空格或制表符),则增加字段 7(序列号)。打印每一行。

这仅会增加所要求的序列号,但是您仍然需要触发重新加载并通知辅助服务器以传播更改。

答案2

由于绑定区域格式非常灵活,任何简单的文本操作工具都可能有点危险。

实现目标的一种方法可能是为所有区域启用动态更新,并使用 acl 限制仅从本地计算机进行访问。然后只需添加,然后使用 nsupdate 在每个区域中删除临时记录。Bind 将为您处理序列的更新。

答案3

如果您正在处理一次性事件并需要强制传输,那么rndc retransfer忽略序列号并直接执行传输是首选工具。这种方法不应用于日常工作(它会影响序列号的准确性),但有时带外工作的需求更大。

按照下面的循环应该可以达到目的:
rndc -s ${someslave} -k ${yourkey} retransfer ${i}.example.com

(附注:这也是在未来增加序列号时修复序列号的首选方法)

答案4

我使用了一个叫做操作 BIND 区域文件。我第一次了解它是在 O'Reilly DNS 和 BIND 一书中。您需要“-y”选项。

相关内容