BIND9 配置,允许同时进行 DDNS 更新和配置管理更新吗?

BIND9 配置,允许同时进行 DDNS 更新和配置管理更新吗?

不确定是否可行,但我正在尝试寻找此类设置的解决方案:

  • BIND9 服务器,由 Puppet 管理(https://github.com/ajjahn/puppet-dns)Puppet 为所有静态主机填充区域文件
  • 除了 Puppet,我们还有一组由 Ansible 管理的网络设备,我们希望在那里动态生成 DNS 记录,并使用 nsupdate_module 更新 DNS

rndc freeze我已经找到使用/来更新 DDNS 启用区域的方法rndc thaw,但我的问题是,在thawBIND9 不想使用日志这一步,它只显示这样的错误:

journal file is out of date: removing journal file

我找到了另一个选项,ixfr-from-differences但是有了这个选项,之后rndc thaw,所有动态变化都会消失。

即看起来这种冻结/修改/解冻方法在手动更改下运行良好,但不符合配置管理模式,因为在修改步骤中,Puppet 正在从目录中重新创建所有静态 DNS 记录并丢弃 ddns 主机。

因此,也许有人看到了更多的技巧,如何解决这样的问题,或者也许我遗漏了什么?

答案1

BIND 中的动态区域是日志记录的(类似于数据库和文件系统):更新不会立即重新生成实际的区域文件(对于大型区域,这可能非常耗时或耗费 I/O);它们仅附加到 .jnl 文件中,直到发生某些定期同步。

如果我没记错的话,在较旧的 BIND 版本中rndc freeze会自动刷新日志,但现在它不再这样做了——它只会让服务器拒绝新的更新,并且不对已经接收到日志但还未刷新的消息执行任何操作。

因此,您需要rndc sync -clean在冻结之后但在进行编辑之前运行,以保留所有动态更改。

相关内容