我正在尝试迁移一个已加载数千个区域的 DNS 服务器。named.conf 文件包含大约 17 个不同的包含项,其中一些文件还包含包含项,以及大量注释掉的内容等。真是一团糟!
我想要获取当前已加载到 BIND 中的所有区域的列表。我查看了 rndc dumpdb,但它并没有显示区域。
除了遵循混乱的包含文件之外,有没有更简单的方法来获取 BIND 内部授权区域的列表?谢谢!
答案1
您可以运行rndc dumpdb -zones
来创建一个名为缓存转储.db。该文件将包含所有权威区域,并将在 BIND 的数据目录中创建。
答案2
对于较新版本的 BIND9,例如 9.12.0a1;还named-checkconf -l
可以用简单的格式列出区域,包括主/从状态和视图。
例子:
$ sudo /usr/sbin/named-checkconf -l -t /chroot/bind/
example.com IN external master
otherdomain.com IN external slave
internal.example.com IN internal master
example.com IN internal in-view external
otherdomain.com IN internal in-view external
# this has 2 views: external, internal
# and 3 zones: example.com, otherdomain.com, internal.example.com
# the external view contains: example.com, and slaves otherdomain.com
# the internal view uses in-view statements to show
# the same version of external zones, plus contains a unique zone
答案3
确认 rndc dumpdb 是最好的方法。
就我而言,我发现在同一台服务器上运行了 2 个单独的绑定实例(不要问),一个执行正向 DNS,另一个执行反向 DNS。如果不指定 PID,它就会附加到仅执行反向 DNS 的那个实例,并且只向我显示该实例。
答案4
添加-全部对我来说很管用(在 Ubuntu Ubuntu 16.04.2 LTS (xenial) 上)
sudo rndc dumpdb -all && cat /var/cache/bind/named_dump.db