如何防止绑定动态更新更改原始区域文件?

如何防止绑定动态更新更改原始区域文件?

我正在使用 certbot DNS 插件颁发 Let's Encrypt 证书。Certbot 使用动态 DNS 更新添加一条TXT记录以供验证。Bind.jnl为该区域创建一个文件。此TXT记录仅存在 30 秒,然后被 certbot 删除。当该过程完成后,一切都应该恢复正常。

副作用是 bind 会覆盖我原来的区域文件(所有者为root)并将其另存为named。此外,区域文件的内容完全被重新格式化,我不喜欢这种方式。

有没有办法阻止 bind 尝试更改原始区域文件?有什么方法可以告诉 bind 此动态更新是临时的、仅保留在内存中还是其他什么?

还有一个不太重要的问题。如果 bind 无法保存.jnl没有named所有权的文件,但它却可以轻松覆盖拥有的区域文件,那么它为什么会给出权限被拒绝的错误root

答案1

一旦使用动态 DNS,您就不应该期望区域文件采用任何特定格式,而应该让 bind 来管理它。这就是为什么您有rndc命令freezethaw

在您的情况下,您应该拆分关注点。_acme-challenge在您的区域中创建,作为CNAME指向另一个区域的。然后,此区域可以不受动态更新的影响,您可以按照自己喜欢的方式拥有区域文件。

在另一个区域,您启用动态更新并确保TXT在那里添加记录。

但它可以轻松覆盖 root 拥有的区域文件?

编辑(包括删除)文件的权限取决于文件所在的目录所有权/权限,而不是文件本身的权限。想象一下,一个目录以一个文件开始,其内容是其中的文件列表……

相关内容