列出动态添加的 DNS 记录

列出动态添加的 DNS 记录

我不知道如何列出动态添加的 DNS 记录。假设我添加了一条这样的记录:

~$ nsupdate
> update add test.domain.com 3600 A 1.2.3.4
> send

此后,我可以使用以下命令查找子域名 test.domain.com:

~$ dig test.domain.com

我得到了正确的信息。但是此条目没有像手动添加的记录那样显示在区域文件中。

如果我在任何地方都看不到记录,我怎么知道哪些记录被动态添加了?

使用 Bind 9.10.3

答案1

我很抱歉逐字逐句地引用了手册,但他们的文笔可能比我更好https://ftp.isc.org/www/bind/arm95/Bv9ARM.ch04.html

简而言之:区域文件在允许动态更新时并不是绝对的真理。

使用动态更新对区域所做的所有更改都存储在区域的日志文件中。此文件由服务器在第一次动态更新时自动创建。.jnl除非特别覆盖,否则日志文件的名称是通过将扩展名附加到相应区域文件的名称来形成的。日志文件采用二进制格式,不应手动编辑。

服务器还会偶尔将更新后的区域的完整内容写入(“转储”)到其区域文件中。每次动态更新后不会立即执行此操作,因为当一个大区域频繁更新时,这样做会太慢。相反,转储延迟最多 15 分钟,允许进行其他更新。

....

动态区域的区域文件通常不能手动编辑,因为它们不能保证包含最新的动态更改 — 这些更改仅存在于日志文件中。确保动态区域的区域文件是最新的唯一方法是运行rndc stop

如果您必须手动更改动态区域,则以下步骤将起作用:使用 禁用区域的动态更新rndc freeze zone。这还将删除区域的 .jnl 文件并更新主文件。编辑区域文件。运行rndc thaw zone以重新加载更改的区域并重新启用动态更新。

答案2

由于某种原因,Bind 需要重新启动才能显示在区域文件中。重新加载是不够的。

相关内容