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

BIND DNS: как переопределить RR, созданный директивой $ GENERATE?

Я использую авторитетный сервер имен для обратной зоны / 16, где каждый IP-адрес сопоставляется с настраиваемым поддоменом. Это достигается файлом зоны с 256 $GENERATE директивы, например (подсеть 11.22.0.0/16):

$GENERATE 0-255 $.1 PTR $.1.22.11.rev.example.com.
$GENERATE 0-255 $.2 PTR $.2.22.11.rev.example.com.
(...)

Это работает нормально, единственная проблема заключается в том, что всякий раз, когда мы добавляем «значимую» обратную запись (4.3.22.11.in-addr.arpa. IN PTR www.example.com.) это приведет к ситуации, когда есть 2 записи PTR для одного и того же IP-адреса:

4.3.22.11.in-addr.arpa. IN PTR www.example.com.
4.3.22.11.in-addr.arpa. IN PTR 4.3.22.11.rev.example.com.

По большей части это нормально, но в некоторых случаях нам нужна единственная запись PTR.

Решение было «развернуть» $GENERATE блокировать в отдельные записи PTR и заменять вызывающую нарушение. Есть ли способ переопределить сгенерированную запись без расширения всего диапазона?

Этот сервер имен запускает BIND 9.8.2 на RHEL6.

В $GENERATE Директива есть только две формы для ассортимент: старт-стоп или старт-стоп / шаг. Из-за этого вы не можете исключить один IP-адрес из диапазона, но вы должны соответственно разделить диапазон, например

$ORIGIN 22.11.in-addr.arpa.
$GENERATE 0-3   $.3  PTR  $.3.22.11.rev.example.com.
                4.3  PTR  www.example.com.
$GENERATE 5-255 $.3  PTR  $.3.22.11.rev.example.com.

К сожалению, это невозможно сделать. Вы застряли в "разворачивании".

В памяти директива $ GENERATE вызывает создание отдельных записей PTR. Это можно увидеть, просмотрев файл зоны, полученный вторичными серверами после передачи зоны, который не содержит директивы $ GENERATE. Не существует синтаксиса, позволяющего выборочно переопределять отдельные записи PTR.

Альтернатива упоминается в Глава 8 DNS для ученых-ракетчиков, который должен добавить шаг использования named-checkzone чтобы разобрать директиву $ GENERATE и заменить ее отдельными записями PTR:

Оператор $ GENERATE выполняется при загрузке файла зоны и приводит к тому, что расширенная версия зоны в памяти используется BIND9 оперативно, в то время как сам файл зоны остается неизменным. Если вы хотите увидеть расширение (вы не доверяете результату или хотите его отредактировать), утилита связывания с именем-checkzone позволит создать расширенный файл зоны (включая директиву (и) $ GENERATE), который можно использовать в качестве шаблона (или скелета) с последующим редактированием. В качестве побочного эффекта использования named-checkzone любые неквалифицированные метки (имена) также будут расширены до полных доменных имен, а любая директива $ TTL будет использоваться для заполнения отдельных RR TTL. Это может быть или не быть полезным побочным эффектом. Предполагая, что файл зоны, содержащий директиву $ GENERATE, - 192.168.199.rev (в соответствии с соглашением об именах файлов зоны в этом руководстве) и имя зоны - 199.168.192.IN-ADDR.ARPA, тогда следующая команда выведет расширенный файл зоны в 192.168.199.rev.exp.

named-checkzone -D -o 192.168.199.rev.exp 199.168.192.IN-ADDR.ARPA 192.168.199.rev

Обратной стороной, естественно, является тот факт, что ваш файл зоны на главном сервере становится намного больше. На данный момент вы используете $ GENERATE только для создания начальной обратной зоны для вас, чтобы отдельные записи PTR не нужно было вводить вручную, и сценарий оболочки мог бы легко достичь того же конечного результата.

Вероятно, это не то решение, на которое вы надеялись, но, к сожалению, так обстоят дела. :(