Именованная версия: BIND 9.10.3-P4 (последняя), версии ОС: CentOS 6.3, CentOS 6.7
Мне нужно использовать общие зоны в разных представлениях, поскольку 9.10 ISC Bind не поддерживает использование одного и того же файла для одной и той же зоны в разных представлениях. Попытка сделать это приведет к ошибке:
/etc/named.conf:21: writeable file 'slaves/example.db': already in use: /etc/named.conf:8
Документация предлагает использовать ввиду заявление. Брэндон Ксавье в serverfault рекомендует то же самое. Однако я потерпел неудачу. Вот упрощенный файл конфигурации, который я пытаюсь загрузить:
view "internal" {
zone example.com {
type slave;
file "slaves/example.db";
masters { 192.168.1.1; };
};
};
view "external" {
zone example.com {
in-view "internal";
};
};
Удаление зоны example.com из внешнего вида позволяет запустить named. Также работает настройка его в отдельный файл:
zone example.com {
type slave;
file "slaves/example2.db";
masters { 192.168.1.1; };
};
Но указывать на другой файл не вариант - здесь я привожу только пример реальной конфигурации. Кроме того, когда Bind пытается запустить, нет вывода с сообщением об ошибке или чего-либо в журналах:
# /etc/init.d/named restart
Stopping named: [ OK ]
Starting named:
Error in named configuration:
[FAILED]
Разве это не приятно? Named-checkconf не показывает ошибок (запятые и скобки я убрал специально - checkconf работает). Я также взял файлы конфигурации из 9.10.3-P4 sources.tar.gz (bin / test / system / ..), и результат был таким же. Я должен сообщить об ошибке?
Давайте посмотрим, что /usr/sbin/named-checkconf
делает и возвращается. Этот человек говорит: «named-checkconf возвращает статус выхода 1, если были обнаружены ошибки, и 0 в противном случае».
Хорошо, давайте напишем скрипт для проверки возвращаемых значений на действительный названная конфигурация:
#!/bin/bash
/usr/sbin/named-checkconf -z /etc/named.conf >/dev/null 2>&1
echo $?
/usr/sbin/named-checkconf /etc/named.conf >/dev/null 2>&1
echo $?
Выход будет 1 и 0. Если мы поместим ошибку в named.conf
(например, отсутствует точка с запятой), результаты будут 1 и 1. Что это означает? Это означает, что код возврата равен 1, даже если в конфигурации нет ошибок, но используется ключ -z - любой вывод считается ошибкой. Удаление 2>&1
оставить только stderr не имеет никакого эффекта, поэтому самое простое временное решение этой проблемы - удалить -z
вариант, поместив следующую директиву в /etc/sysconfig/named
DISABLE_ZONE_CHECKING="yes"
P.S. Запуск вышеупомянутого скрипта на BIND 9.10.1-RedHat-9.10.1-0.el6
полученные результаты 0 и 0 на допустимой именованной конфигурации. И вывод: это ошибка в named-checkconf
возвращаемые значения, когда нормальный вывод дает 1 код возврата. Ошибка с объяснением, тестами и конфигурацией будет отправлена в ISC.
NB! Это временное решение, пока не будет выполнено исправление. При отключенной проверке зоны не будут обнаружены ошибки в зонах, отсутствующие файлы объявлений и т. Д. Отключите ее, только если вы используете in-view
директива.
На CentOS 6 работает без проблем
# ./named -v
BIND 9.10.3-P4 <id:ebd72b3>
# ./named -V
BIND 9.10.3-P4 <id:ebd72b3>
built by make with '--prefix=/opt/bind-9.10.3-P4' '--with-libtool' '--with-dlz-stub' '--with-dlz-filesystem' '--with-dlopen' '--without-idn'
compiled by GCC 4.4.7 20120313 (Red Hat 4.4.7-16)
compiled with OpenSSL version: OpenSSL 1.0.1e 11 Feb 2013
linked to OpenSSL version: OpenSSL 1.0.1e-fips 11 Feb 2013
compiled with libxml2 version: 2.7.6
linked to libxml2 version: 20706
# ./rndc status
version: BIND 9.10.3-P4 <id:ebd72b3>
boot time: Mon, 21 Mar 2016 11:44:26 GMT
last configured: Mon, 21 Mar 2016 11:44:26 GMT
CPUs found: 4
worker threads: 4
UDP listeners per interface: 2
number of zones: 3
debug level: 3
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/0/1000
tcp clients: 0/100
server is up and running
P.S.
# lsb_release -a
LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID: CentOS
Description: CentOS release 6.7 (Final)
Release: 6.7
Codename: Final