Перейти к основному содержанию

Bind — настройка первичной (master) зоны

DNS

Считаем что перед настройкой зоны мы установили и настроили сервер Bind. Работаем в Debian 11.

Установка Bind в Debian 11

Зона DNS — это определенная часть пространства имен DNS, размещенного на DNS-сервере. Зона DNS содержит записи ресурсов, а DNS-сервер отвечает на запросы записей в этом пространстве имен.

Пусть у нашего DNS сервера будет IP 1.2.3.4.

Настройка первичной зоны

Рассмотрим настройку первичной зона DNS, она же master-зона, она же основная зона.

Редактируем /etc/bind/named.conf.local, добавляем настройки для зоны:

zone "example.com" {
       type master;
       file "/etc/bind/zones/db.example.com";
       allow-transfer { 1.2.3.5; };
       allow-update { none; };
       allow-query { any; };
};
  • example.com — Имя первичной зоны, которую будет обслуживать DNS-сервер. Это наш домен.
  • type — Тип зоны. Поскольку мы настраиваем первичную зону, то тип: master. Другие возможные типы: slave, stub, forward.
    Master — первичная зона, её и настраиваем. DNS-сервер, на котором размещена основная зона, является основным источником для получения сведений об этой зоне.
    Slave — вторичная зона. Вторичная зона — это копия только для чтения, первичной зоны. Если зона, на котором размещается этот DNS-сервер, является вторичной зоной, этот DNS-сервер является вторичным источником для получения сведений об этой зоне. Зона на этом сервере должна быть получена с другого удаленного компьютера DNS-сервера, на котором также размещена зона.
    Stub — зона заглушки. Зона заглушки содержит только сведения о доверенных серверах имен для зоны.
    Forward — служит для перенаправления DNS-запросов определенной зоны на определенный DNS-сервер.
  • file — Путь к файлу с записями зоны. Его нужно будет позже создать.
  • allow-transfer — Список IP адресов вторичных DNS-серверов, которым можно передавать копию зоны. Могут быть указаны подсети. Вместо или дополнительно к адерсам может быть указан ключ передачи, владельцу которого также можно передавать зону.
  • allow-update — Список адресов или подсетей, с которых разрешено обновление записей в зоне (для DDNS). 
  • allow-query — Кому разрешено выполнять запросы. Данный параметр можно указать и в named.conf.options. 

Перечитываем конфиг службы:

systemctl reload bind9

Создание файла зоны

Создадим файл зоны по ранее указанному пути /etc/bind/zones/db.example.com. Пользователь bind должен иметь право на чтение файла зоны.

mkdir /etc/bind/zones/
touch /etc/bind/zones/db.example.com
chown -R bind\: /etc/bind/zones/

Редактируем /etc/bind/zones/db.example.com, пример зоны:

$ORIGIN example.com
$TTL 3600

example.com.  3600  IN  SOA  ns1.example.com. admin.example.com. (
       202602241       ; Serial
       1800            ; Refresh
       900             ; Retry
       604800          ; Expire
       1200            ; Negative Cache TTL
)
IN  NS  ns1.example.com.
IN  NS  ns2.example.com.
IN MX 10 mx1.example.com.
IN MX 20 mx2.example.com.
              
@               IN      A       1.2.3.4
ns1             IN      A       1.2.3.4
ns2             IN      A       1.2.3.5
mx1             IN      A       11.22.33.44
mx2             IN      A       11.22.33.55

www             IN      CNAME   example.com.

Разберём что внутри.

$ORIGIN example.com

Определяет базовое доменное имя (origin) для последующих записей. Любое имя, не заканчивающееся точкой (.), будет автоматически дополнено этим значением. Например, запись ns1 будет преобразована в ns1.example.com. Запись example.com. с точкой на конце указывает на абсолютное имя и не требует добавления $ORIGIN.

$TTL 3600

Устанавливает Time To Live (TTL) по умолчанию для всех записей зоны, если у конкретной записи не указан свой TTL. Значение 3600 означает, что другие DNS-серверы могут кэшировать информацию об этой записи на 3600 секунд (1 час).

Запись SOA (Start of Authority)

Это самая важная запись зоны, описывающая её основные параметры. example.com. 3600 IN SOA ns1.example.com. admin.example.com. ( ... )

  • example.com.: Имя домена, к которому относится запись (корень зоны)
  • 3600: TTL для самой записи SOA (1 час)
  • IN: Класс записи (Internet)
  • SOA: Тип записи (Start of Authority).
  • ns1.example.com.: Primary Master — имя основного (авторитативного) DNS-сервера для этой зоны
  • admin.example.com.: Responsible Party — email администратора зоны. Символ @ в email заменен на точку (обычно это admin@example.com).

Параметры в скобках:

  1. 202602241 (Serial): 
    Серийный номер зоны. Используется вторичными (slave) DNS-серверами для проверки, обновлялась ли зона. Если серийный номер на мастер-сервере стал больше, чем на slave, slave инициирует передачу новой копии зоны (трансфер зоны).
    Формат: Обычно используется формат ГГГГММДДВВ (год, месяц, день, версия изменений за день). Здесь: 2026 год, 02 месяц (февраль), 24 день, версия 1.
  2. 1800 (Refresh):
    Интервал обновления. Как часто (в секундах) вторичный DNS-сервер должен проверять у первичного, не изменился ли серийный номер зоны (30 минут).
  3. 900 (Retry):
    Интервал повторных попыток. Если вторичный сервер не смог связаться с первичным во время Refresh, он будет пытаться снова с этим интервалом (15 минут).
  4. 604800 (Expire):
    Срок хранения. Время (в секундах), в течение которого вторичный сервер может отвечать на запросы об этой зоне, если ему не удается связаться с первичным сервером. После истечения этого срока (7 дней) зона на вторичном сервере перестанет обслуживаться.
  5. 1200 (Negative Cache TTL):
    Отрицательный TTL. Время (в секундах), в течение которого другие серверы могут кэшировать информацию о том, что запись не существует (например, ответ NXDOMAIN) (20 минут).

NS записи (Name Server)

Указывают авторитативные DNS-серверы для домена.

IN NS ns1.example.com.
IN NS ns2.example.com.

Так как перед IN не указано имя, подставляется значение из последней незакрытой директивы или $ORIGIN. Это эквивалентно записям example.com. IN NS ns1.example.com. (где ns1 потом преобразуется в полное доменное имя).

MX записи (Mail Exchange)

Определяют серверы, принимающие почту для домена example.com.

IN MX 10 mx1.example.com.
IN MX 20 mx2.example.com.

Приоритет (10, 20): Чем меньше число, тем выше приоритет сервера. Почта всегда будет пытаться доставиться сначала на mx1 (приоритет 10), и только если он недоступен — на mx2 (приоритет 20).

A записи (Address)

Сопоставляют имя хоста с IPv4-адресом.

  • @ IN A 1.2.3.4:
    Символ @ — это сокращение, обозначающее текущий $ORIGIN (т.е. example.com.). Указывает, что сам домен example.com (без www) имеет IP-адрес 1.2.3.4.
  • ns1 IN A 1.2.3.4:
    Имя ns1 дополняется $ORIGIN до ns1.example.com. и привязывается к адресу 1.2.3.4.
  • ns2 IN A 1.2.3.5
    mx1 IN A 11.22.33.44
    mx2 IN A 11.22.33.55

Важное замечание: В реальной конфигурации ns1 и www часто имеют один IP, а почтовые сервера (mx1, mx2) обычно имеют "внешние" публичные адреса. Указанный здесь адреса, это просто пример.

CNAME запись (Canonical Name)

Создает псевдоним для другого имени.

  • www IN CNAME example.com.
    Это означает, что www.example.com — это просто псевдоним (алиас) для example.com. Когда кто-то запрашивает www.example.com, DNS-сервер вернет CNAME-запись, указывающую, что нужно искать A-запись для example.com (которая ведет на 1.2.3.4).

Здесь указаны не все возможные типы записей. Конфигурация приведена для примера.

Перечитываем файл зоны:

rndc reload

Заключение

Можем проверить работу нашего DNS сервера.

nslookup mx1.example.com 1.2.3.4

Должны получить указанный в зоне IP адрес 11.22.33.44.

Ссылки

BIND 9 Administrator Reference Manual (9.21.19-dev)

Теги

 

Похожие материалы

Создать жёсткую ссылку в Linux

Все жёсткие ссылки — это отдельные файлы, но ведут к одному участку жёсткого диска, где расположены данные файла. Файл можно перемещать между каталогами, все ссылки останутся рабочими.

Теги

Установка Postgresql 10 на Ubuntu 18.04 LTS

Установим Postgresql 10 на сервер с операционной системой Ubuntu 18.04 LTS. Это вертуальная машина, по хорошему postgresql лучше устанавливать на отдельный диск, поэтому примонтирую новый диск к виртуалке.

Теги