我在 Linux 机器上设置了 BIND9,并且我玩这个nsupdate
命令已经有一段时间了。它对于更改区域的 RR(命令update create
和update delete
)非常有效。我想知道应该如何创建新区域。似乎没有办法nsupdate
做到这一点。
到目前为止,我总是复制现有的区域文件,然后对其进行更改。但是,我正在寻找一种不那么痛苦的方法。我很想知道你们是如何做到这一点的。
答案1
除了复制一些骨架文件之外似乎没有其他办法(不要在此骨架中使用 FQDN,并且相同的文件适合任何新区域)。
较新的 BIND 具有rndc addzone
永久添加区域到绑定配置的命令没有将其添加到 named.conf 而无需重新加载/重新配置 BIND(运行之前区域文件应该已经存在rndc addzone
)。
我使用将区域“骨架”复制到某个新的永久位置然后运行适当的脚本rndc addzone
。
答案2
我总是编写脚本。编写一个骨架区域文件,将区域添加到配置中,重新加载 BIND,就完成了。脚本可以手动触发,也可以通过 SSH、Web 服务或其他任何可以调用命令的自动化方式自动触发。
答案3
我管理着大约 50 个区域,虽然不是很多,但仍然需要手动完成很多工作,因此我决定创建一个工具,使我能够创建类似 .ini 的文件并使用变量,并可以为 Postfix 设置必要的条目(又名 SPF、DMARC、DKIM)。
否则,我不知道有什么好方法可以管理 BIND9 中的文件。不仅如此,这些文件是原始数据。换句话说,您需要知道确切的 DNS 语法,然后才能编辑这些文件。我发现这相当复杂。在我使用这个工具之前,我过去只是复制/粘贴现有区域,编辑它,添加对的引用name.conf.local
并重新加载。无论哪种方式都很繁琐。使用我的工具,我创建非常简单的文件并运行ipmgr
命令¹.
domain=example.com
mail=mail
dynamic=letsencrypt
[mail]
subdomains=mail
key_ttl=30m
[website]
subdomains=${website_subdomains}
默认 TTL、website_subdomains
等在全局文件中定义。所以我所要做的就是复制/粘贴、更改参数domain=...
、运行ipmgr
、完成(请注意,ipmgr
负责根据需要重新启动 BIND9)。
¹ 请注意,由于它有许多依赖项,因此重新编译需要一些工作。如果你使用的是 Ubuntu LTS,你应该能够从电力供应协议。