Перечисление всех зон, загруженных в BIND

Я пытаюсь перенести DNS-сервер, на котором загружено несколько тысяч зон. Файл named.conf содержит около 17 различных включений, и некоторые из этих файлов также включают в себя, множество комментариев и т. Д. Это чертовски беспорядок!

Я хочу получить список всех зон, загруженных в данный момент в BIND. Я посмотрел на rndc dumpdb, но он не показывает мне только зоны.

Вместо того, чтобы следовать за грязными включаемыми файлами, есть ли более простой способ получить список авторских зон внутри BIND? Спасибо!

6 ответов

Вы можете запустить rndc dumpdb -zones создать файл с именем cache_dump.db. Этот файл будет содержать все официальные зоны и будет создан в каталоге данных BIND.

Для более новых версий 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

Подтверждено, что rndc dumpdb - лучший метод.

В моем случае я обнаружил, что на одном сервере выполняются 2 отдельных экземпляра привязки (не спрашивать), один выполняет пересылку DNS, а другой - переадресацию DNS. Не указав PID, он привязался к тому, который только делал обратный днс и только показал мне это.

Если вы просто хотите, чтобы конфигурация (включая любые включаемые файлы) была напечатана в ее канонической форме, вы можете просто позвонить:

named-checkconf -p (опционально с -t /some/chroot/dir если BIND запускается chrooted и конфиг должен быть прочитан из каталога chroot)

Это сглаживает все включаемые файлы, удаляет все комментарии и аккуратно форматирует все.

Хотя выходные данные будут включать статически настроенные зоны, в нем не будут перечислены динамические зоны, подобные тем, которые были добавлены с помощью rndc addzone,

Добавление -все помогает мне (на Ubuntu Ubuntu 16.04.2 LTS (xenial))

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

Ниже приведена точная команда для отображения зон, которые загружаются во время запуска. Это проверено на 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

Другой альтернативой является использование bind' собственную статистику формата XML, если вы включили statistics-channel и включить статистику зоны (например, в глобальном options { }). Этот метод также позволяет легко выбирать / показывать виды, типы зон и данные зон (например, серийный номер), а также статистику по зонам, конечно.

С помощью wget а также xml (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

(Эта статистика доступна с bind-9.6.0, декабрь 2008 г. /v3/ Используемый выше формат доступен только с bind-9.10, апрель 2014 года. Также может быть доступен формат JSON, так что аналогичное должно быть возможно с jot.)

Другие вопросы по тегам