Я использую авторитетный сервер имен для обратной зоны / 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 не нужно было вводить вручную, и сценарий оболочки мог бы легко достичь того же конечного результата.
Вероятно, это не то решение, на которое вы надеялись, но, к сожалению, так обстоят дела. :(