bind9. Использование директив $ORIGIN, $INCLUDE и @.

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

nokogerra
Сообщения: 83

bind9. Использование директив $ORIGIN, $INCLUDE и @.

Сообщение nokogerra »

Доброго времени суток.
В соседней теме задал кучу теоретических вопросов по DNS, здесь хочу задать пару вопросов синтаксису bind, а в частности по указанным в названии темы директивам.
1. Как все таки работает @ (не уверен что это - переменная?)? Как я это понял на примере:
В named.conf.options указан рабочий каталог "/var/cache/bind"
В named.conf.local:

Код: Выделить всё

zone "targetx.ru" {
        type master;
        file "targetx.ru";

сам файл зоны targetx.ru:

Код: Выделить всё

$TTL 3D
targetx.ru.         IN      SOA     ns.targetx.ru.      aim.targetx.ru.    (
                                        2015020201
                                        8H
                                        2H
                                        2D
                                        1D)

targetx.ru.         IN      NS      ns.targetx.ru.
ns.targetx.ru.      IN      A       x.x.x.x
test.targetx.ru.    IN      A       y.y.y.y

аналогичная запись с использованием @ будет выглядеть так:

Код: Выделить всё

$TTL 3D
@         IN      SOA     ns.targetx.ru.      aim.targetx.ru.    (
                                        2015020201
                                        8H
                                        2H
                                        2D
                                        1D)

@         IN      NS      ns.targetx.ru.
ns      IN      A       x.x.x.x
test    IN      A       y.y.y.y

верно? Если да, то получается что переменная @ содержит в себе "targetx.ru." именно с точкой в конце. Эту строчку она берет из упоминания в named.conf.local? почему не нужно указывать точку после записей "ns" и "test"?

2. $ORIGIN переопределяет имя зоны на указанное. Т.е. если мне нужно указать в моем описании зоны несколько хостов из другой зоны (скажем я делегировал суб зону другому/другим DNS):

Код: Выделить всё

$TTL 3D
@         IN      SOA     ns.targetx.ru.      aim.targetx.ru.    (
                                        2015020201
                                        8H
                                        2H
                                        2D
                                        1D)

@         IN      NS      ns.targetx.ru.
ns      IN      A       x.x.x.x
test    IN      A       y.y.y.y
$ORIGIN sub.targetx.ru.
ns      IN      A       a.a.a.a
ns1    IN      A       b.b.b.b

Верно ли такое использование? Также видел пример использования $ORIGIN - в начале файла зоны используется запись "$ORIGIN .", зачем если @ и так подставляет точку в конце?

3. Может кто-то привести пример использования $INCLUDE в файле зоны?
Спасибо сказали:
Аватара пользователя
skeletor
Сообщения: 1224

Re: bind9. Использование директив $ORIGIN, $INCLUDE и @.

Сообщение skeletor »

п1-2 прочтите http://www.zytrax.com/books/dns/ch8/origin.html . Если что-то будет непонятно - пишите, объясню.
п3. http://www.zytrax.com/books/dns/ch8/include.html
Спасибо сказали:
nokogerra
Сообщения: 83

Re: bind9. Использование директив $ORIGIN, $INCLUDE и @.

Сообщение nokogerra »

Спасибо за ваш ответ.

п. 1 и 2: верно ли я понял, что нет смысла использовать $ORIGIN, если не нужно переопределять имя зоны, заданной в named.conf.local? Также я встречал в примерах запись "$ORIGIN .", но дальше идут записи касающиеся только описываемой зоны, не имеющей отношения к корню, какой смысл в этой записи?

п. 3: Не совсем понял, как работает $ORIGIN с $INCLUDE.
a. если в записи $INCLUDE <filename> [domain-name] не указывать [domain-name], то включенный файл унаследует $ORIGIN от родительского, верно?
b. если в записи $INCLUDE <filename> [domain-name] не указывать [domain-name] И во включенном файле указать новый $ORIGIN, то эта новая директива будет работать только для вложенного файла, верно?
c. если в записи $INCLUDE <filename> [domain-name] указать [domain-name], то включенный файл в качестве $ORIGIN унаследует этот заданный [domain-name], и конкретно этот $ORIGIN будет действовать только для вложенного файла, верно? На примере:
Этот синтаксис

Код: Выделить всё

$ORIGIN test.lala.
$INCLUDE xx.test.lala

Содержимое xx.test.lala:

Код: Выделить всё

$ORIGIN xx.test.lala.
march   IN   A   8.8.8.8


Эквивалентен этому синтаксису:

Код: Выделить всё

$ORIGIN test.lala.
$INCLUDE xx.test.lala xx.test.lala.

Содержимое xx.test.lala:

Код: Выделить всё

march   IN   A   8.8.8.8
Спасибо сказали:
Аватара пользователя
skeletor
Сообщения: 1224

Re: bind9. Использование директив $ORIGIN, $INCLUDE и @.

Сообщение skeletor »

п1-2. Из той же ссылки можно прочесть следующее: "In general, always explicitly define an $ORIGIN directive unless there is a very good reason not to.", что в переводе означает "В общем, всегда явно определяйте директиву $ORIGIN, если нет очень веских причин не делать этого". Иными словами: лучше всегда явно определять $ORIGIN. Это не обязательно, но желательно. Если она вас пугает, можете не использовать.

п3. Я думаю, вам проще провести тесты и понять как оно работает. Лично я так глубоко не закапывался и могу ошибаться.
a) да
b) да
c) скорее всего да, но не уверен.
Спасибо сказали:
nokogerra
Сообщения: 83

Re: bind9. Использование директив $ORIGIN, $INCLUDE и @.

Сообщение nokogerra »

Спасибо.
Спасибо сказали: