Создание и настройка первичной зоны в BIND

Обновлено Обновлено: Опубликовано Опубликовано:

Прежде, чем приступить к настройке зоны, необходимо установить и предварительно настроить bind (инструкции для CentOS или Ubuntu).

Создание и настройка локальной зоны

Открываем конфигурационный файл bind.

В CentOS / Red Hat:

vi /etc/named.conf

В Ubuntu / Debian:

vi /etc/bind/named.conf.local

И добавляем следующее:

zone "test.local" {
        type master;
        file "master/test.local";
        allow-transfer { 192.168.0.15; };
        allow-update { none; };
};

* где test.local — имя зоны, которую будет обслуживать наш DNS-сервер. Это и есть домен, для которого bind будет хранить записи;

Описание опций настройки зоны:

Опция Описание
type тип зоны (в нашем случае первичная — значит master). Другие варианты — slave, stub, forward.
file Путь к файлу с записями зоны. В данном примере указан относительный путь — то есть файл находится по пути master/test.local, который начинается относительно рабочей директории (по умолчанию — /var/named/). Таким образом, полный путь до файла — /var/named/master/test.local.
allow-transfer Список других DNS-серверов (вторичных) для передачи им зоны. В нашем случае, зонные передачи разрешены серверу 192.168.0.15. Можно указывать подсети.
allow-update Список хостов, с которых разрешено обновление записей в зоне (для DDNS). Можно указать подсети.

Чтобы настройки применились, необходимо перезапустить службу.

В CentOS / Red Hat:

systemctl reload named

В Ubuntu / Debian:

systemctl reload bind9

Создание файла зоны и настройка записей

Создаем каталог master (если он отсутствует).

В CentOS / Red Hat:

mkdir /var/named/master

В Ubuntu / Debian:

mkdir /var/cache/bind/master

И создаем файл зоны (в нашем примере test.local).

CentOS / Red Hat:

vi /var/named/master/test.local

Ubuntu / Debian:

vi /var/cache/bind/master/test.local

Приводим его к следующему виду:

$TTL 14400

test.local.     IN      SOA     ns1.test.local. admin.test.local. (
        2017082401      ; Serial
        10800           ; Refresh
        3600            ; Retry
        604800          ; Expire
        604800          ; Negative Cache TTL
)

                IN      NS      ns1.test.local.
                IN      NS      ns2.test.local.

                IN      MX 10   mx.test.local.
                IN      MX 20   mx2.test.local.

@               IN      A       192.168.1.1
localhost       IN      A       127.0.0.1
ns1             IN      A       192.168.1.2
ns2             IN      A       192.168.1.3
mx              IN      A       192.168.1.4
mail            IN      A       192.168.1.5

www             IN      CNAME   test.local.

Формат записей: <имя узла> <класс (всегда ставится IN)> <тип записи> <значение>.

Немного подробнее:

Параметр Описание
$TTL Время актуальности записей в секундах. Необходим, чтобы указать другим DNS-серверам, как долго стоит хранить запись у себя в кэше. Слишком малое значение увеличит нагрузку на сервер, а большое приведет к слишком длительному процессу изменения записи.
SOA-запись В данном примере эта запись идет сразу после параметра TTL. Ее стоит описать отдельно. Она хранит общие настройки для зоны.
  • Serial — порядковый номер изменения. Его необходимо каждый раз менять вручную при редактировании файла. С помощью него вторичный сервер (если такой есть), может определить, что были изменения и начать процесс копирования настроек.
  • Refresh указывает вторичным серверам, через какой промежуток времени они должны сделать запрос на обновление зоны.
  • Retry говорит вторичным серверам, как часто повторять попытки на обновление зоны, если первичный сервер не смог дать ответ (сервис был недоступен).
  • Expire — время в секундах, которое может работать вторичный сервер, если недоступен первичный. Если данный период истечет, а вторичный сервер так и не смог обновить зону, он должен прекратить отвечать на запросы. 
<имя узла> Собственно доменное имя хоста. Может записываться без домена (как в данном примере) — он будет дописан автоматически. Также может быть записан полностью с доменом — в таком случае необходимо поставить точку на конце, например, mail.test.local. Если не указывается или обозначается знаком собаки (@), запись создается для имени зоны (в данном случае, test.local).
<класс> Всегда используется IN (Internet). Указывает на тип сети.
<тип записи>

Основные типы записей, использующиеся в DNS:

  1. A — сопоставляет имени узла соответствующий IP-адрес.
  2. NS — указатель на DNS-сервера, которые обслуживают данную зону.
  3. MX — почтовая запись. Указывает на почтовые сервера, которые обслуживают домен. Поддерживает приоритизацию — при указании нескольких записей, клиент будет ориентироваться на значение той, для которой указано меньшее число.
  4. CNAME — aliase или псевдоним. Перенаправляет запрос на другую запись.
  5. TXT — произвольная запись. Чаще всего используется для настройки средств повышения качества отправки почтовых сообщений.
<значение> Используется IP-адрес, имя узла, текстовая запись.

Чтобы зона начала работать, перечитываем ее:

rndc reload

Проверка

С другого компьютера вводим команду:

nslookup mail.test.local 192.168.0.15

* где 192.168.0.15 — наш настроенный DNS-сервер.
** сервер должен вернуть IP-адрес для запрошенного узла — а именно 192.168.1.5

# Linux # NGINX # UNIX # Безопасность # Серверы
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет