列出BIND中加载的所有区域


13

我正在尝试迁移已加载了数千个区域的dns服务器。named.conf文件包含大约17个不同的包含,其中一些文件中也包含包含,并且有很多注释等。这真是一团糟!

我想获取当前加载到BIND中的所有区域的列表。我看着rndc dumpdb,但它不仅仅显示区域。

除了遵循凌乱的include文件之外,还有没有更简单的方法来获取BIND内部授权区域的列表?谢谢!

Answers:


15

您可以运行rndc dumpdb -zones以创建一个名为cache_dump.db的文件。该文件将包含所有权威区域,并将在BIND的数据目录中创建。


那也是我的想法,但它只向我显示了反向dns arpa地区
DuPie 2012年

我将检查日志文件以获取更多信息。如果仅反向ARPA区域位于转储文件中,我会说只有这些区域被加载到DNS服务器中。
弗拉基米尔·布拉斯科夫(Fladimir Blaskov)2012年

1
BIND的数据目录在哪里?
钱琛

在大多数发行版中,它要么为要么(/var/named或者/var/named/chroot/var/named,如果您使用chroot的是'ed BIND),但是里程数可能会因所使用的发行版而异。
弗拉基米尔·布拉斯科夫(Fladimir Blaskov)2016年

1
在Debian jessie上,文件以/var/cache/bind/named_dump.db结尾
Calimo 2016年

2

确认rndc dumpdb是最好的方法。

以我为例,我发现在同一台服务器上运行2个单独的绑定实例(不要问),一个实例执行正向dns,另一个执行反向dns。在没有指定PID的情况下,它仅附加到执行反向dns的那一处,并仅向我显示。


2

如果只想以标准格式打印配置(包括任何包含文件),则可以简单地调用:

named-checkconf -p(可选,-t /some/chroot/dir如果BIND运行chroot,并且需要从chroot目录读取配置)

这将整理所有包含文件,删除所有注释并整齐地格式化所有内容。

虽然输出将包括静态配置的区域,但不会列出动态区域(如所添加的区域)rndc addzone


1

添加-all可以帮到我(在Ubuntu Ubuntu 16.04.2 LTS(xenial)上)

sudo rndc dumpdb -all && cat /var/cache/bind/named_dump.db

1

对于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

0

以下是列出启动过程中加载的区域的确切命令。这已在RHEL6.7 x86_64上进行了测试。

/usr/sbin/named-checkconf -z -t /var/named/chroot | grep loaded

例:

[root@dnsserver ~]# /usr/sbin/named-checkconf -z -t /var/named/chroot | grep loaded
zone 0.0.127.in-addr.arpa/IN: loaded serial 2008040700
zone 19.58.10.in-addr.arpa/IN: loaded serial 2008040701
zone 11.54.10.in-addr.arpa/IN: loaded serial 2008040700
zone example.com/IN: loaded serial 2008040702
zone ./IN: loaded serial 2008040700

2
请解释更多。
斯文

请参考编辑后的答案。
Sasikumar K

0

如果已启用并启用了区域统计信息(例如,在global中)bind'另一种选择是使用自己的XML格式统计信息。该方法还使您可以轻松地选择/显示视图,区域类型和区域数据(例如序列号),当然还可以选择每个区域的统计信息。statistics-channeloptions { }

使用wgetxml(xmlstarlet):

wget -O - http://127.0.0.1:1080/xml/v3/zones | 
  xml select -I -t -m '/statistics/views/view[@name="_default"]/zones/zone[type="master"]' \
    -v @name -nl

上面显示了_default视图中所有域的列表。

wget ... |
  xml select -I -t -m '/statistics/views/view/zones/zone' \
   -v @name -o , -v ../../@name -o , -v type -o , -v serial -nl

上面以CSV格式显示了所有区域:区域,视图,类型,序列。

要仅选择特定的视图区域类型

 wget ... |
   xml select -I -t -m '/statistics/views/view[@name="_bind"]/zones/zone[type="builtin"]' \
     -v @name -nl

(此统计功能自2008年12月的bind-9.6.0起可用。/v3/上面使用的格式仅自2014年4月的bind-9.10起可用。JSON格式也可能可用,因此可以使用类似的格式jot。)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.