Назад | Перейти на главную страницу

Список всех зон, загруженных в BIND

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Выше показан список всех мастер домены в _дефолт Посмотреть.

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.)