我正在使用 certbot DNS 插件来颁发 Let's Encrypt 证书。Certbot 使用动态 DNS 更新来添加TXT
记录以进行验证。Bind 为区域创建一个.jnl
文件。该TXT
记录仅存在 30 秒,然后被 certbot 删除。该过程完成后,一切都应该恢复正常。
副作用是 bind 过度写入我的原始区域文件(由 拥有root
)并将其保存为归named
. 加上区域文件的内容以我不喜欢的方式完全重新格式化。
有没有办法阻止绑定尝试更改原始区域文件?有什么方法可以告诉绑定这个动态更新是临时的,只保存在内存中还是什么?
还有一个问题,但不是那么重要。如果它无法在.jnl
没有所有权的情况下保存文件,它如何绑定给出权限被拒绝错误named
,但它可以轻松覆盖由 拥有的区域文件root
?
一旦您使用动态 DNS,您不应该期望您的 zonefile 采用任何特定格式并让 bind 管理它。这就是为什么你有
rndc
命令freeze
和thaw
.在您的情况下,您应该拆分关注点。
_acme-challenge
在您的区域中创建,以CNAME
将其指向另一个区域。然后这个区域可以没有动态更新,你可以按照你喜欢的方式拥有你的区域文件。在另一个区域中,您启用动态更新并确保
TXT
在那里添加记录。编辑(包括删除)文件的权限取决于文件所在的目录所有权/权限,而不是文件本身的权限。想象一个目录开始一个文件,其内容是其中的文件列表......