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

Ошибка использования dnssec-signzone в chroot'd bind 9.8, когда файл зоны включает другие файлы

Использование bind 9.8.2 в RHEL 6.5, запуск chroot'd.

У меня есть файл зоны, который включает другие файлы (это зона с большим количеством серверов в разных центрах обработки данных, и есть один включенный файл на каждый центр обработки данных).

Файлы зоны и включенные файлы находятся в

/var/named/chroot/var/named/zones/master/example.com
/var/named/chroot/var/named/zones/master/lax01

На подключаемые файлы ссылаются в файле зоны относительно каталога chroot'd:

$INCLUDE zones/master/lax01

При попытке использовать dnssec-signzone для подписи зоны возникает ошибка, поскольку не удается загрузить включенный файл.

# cd /var/named/chroot/var/named/zones/master
# dnssec-signzone -A -3 $(head -c 1000 /dev/random | sha1sum | cut -b 1-16) \
   -N INCREMENT -o example.com -t example.com
dnssec-signzone: error: dns_master_load: example.com:287: zones/master/lax01: file not found
dnssec-signzone: fatal: failed loading zone from 'example.com': file not found

Есть ли лучший способ указать путь для директивы INCLUDE? Я не вижу способа указать dnssec-signzone учитывать директиву chroot. Нужно ли мне делать это из другого каталога и по-другому ссылаться на пути?

Я не думаю, что ваш chroot имеет к этому какое-то отношение. Даже без chroot я все равно ожидал бы сбоя этой команды. dnssec-signzone не читает из named.conf и не знает рабочий каталог, указанный через directory вариант.

Учитывая, что это так, все включаемые файлы должны относиться к вашему текущему рабочему каталогу. Команда должна работать должным образом, если вы выполните ее так:

# cd /var/named/chroot/var/named
# dnssec-signzone -A -3 $(head -c 1000 /dev/random | sha1sum | cut -b 1-16) \
   -N INCREMENT -o example.com -t zones/master/example.com

Обратите внимание, что каталог, в который мы перешли, фактически является рабочим каталогом вашего сервера BIND во время выполнения.