Как установить и настроить DNS-сервер BIND на CentOS или Rocky Linux

Используемые термины: DNSBIND, LinuxCentOS, Rocky Linux.

Мы рассмотрим небольшой обзор по установке DNS-сервера bind на системы типа RPM (Rocky Linux, CentOS, Oracle Linux и так далее).

Подготовка сервера

Устанавливаем все обновления:

yum update

Устанавливаем утилиту для синхронизации времени:

yum install chrony

Настраиваем временную зону:

timedatectl set-timezone Europe/Moscow

* в данном примере выбрано московское время. 

Разрешаем и запускаем сервис для синхронизации времени:

systemctl enable chronyd —now

Открываем порт в firewall:

firewall-cmd —permanent —add-port=53/udp

И перечитываем настройки сетевого экрана:

firewall-cmd —reload

Установка и запуск BIND

Устанавливаем DNS-сервер следующей командой:

yum install bind

Разрешаем автозапуск:

systemctl enable named

Запускаем сервис имен:

systemctl start named

И проверяем, что он работает корректно:

systemctl status named

Базовая настройка DNS-сервера

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

vi /etc/named.conf

и редактируем следующее:

listen-on port 53 { 127.0.0.1; localhost; 192.168.166.155; };

allow-query     { any; };

* где 192.168.166.155 — IP-адрес нашего NS-сервера, на котором он будет принимать запросы; allow-query разрешает выполнять запросы всем, но из соображений безопасности можно ограничить доступ для конкретной сети, например, вместо any написать 192.168.166.0/24.

Для применения настроек выполните команду:

systemctl restart named

Для начала проверим работу сервиса с локального компьютера. Для этого установим nslookup и выполним команду:

yum install bind-utils

nslookup dmosk.ru 127.0.0.1

Если вы предпочитаете использовать dig, то:

dig dmosk.ru @127.0.0.1

Для проверки работоспособности сервера с другого компьютера сети (например, на Windows) выполняем команду:

nslookup dmosk.ru 192.168.166.155

* данной командой мы пытаемся узнать IP-адреса сайта dmosk.ru через сервер 192.168.166.155.

Должно получиться, примерно, следующее:

Описание глобальных опций

Перечисленные ниже параметры являются глобальными по отношению к DNS и всем настроенным зонам. Они задаются в конфигурационном файле named.conf, директиве options {}.

Опции Описания
directory Указывает рабочий каталог сервера bind. Если не указан, /var/named
forwarders Перечисляет серверы, на которые будет переведен запрос, в случае, если наш сервер не сможет его обработать (нет соответствующей зоны.)
forward Переопределяет способ обработки запроса. Принимает два значения — ONLY или FIRST. Первое указывает на то, что сервер не будет пытаться искать совпадения среди локальных зон. Второе — сервер сначала будет перенаправлять запрос и если он не будет успешно обработан, искать соответствия во внутренней базе.
listen-on На каких интерфейсах будет слушать bind
allow-transfer Указание на список серверов на которые будут разрешены зонные передачи (репликация на вторичные NS)
allow-query Список узлов, с которых разрешено обращаться к серверу. Если не задана, разрешено всем.
allow-notify Перечисленным серверам разрешает отправку уведомлений об изменениях в настройках зоны.
allow-recursion Задает список хостов, для которых разрешены рекурсивные запросы, остальным — будут разрешены итеративные. Если не задана, для всех рекурсивно.

Пример глобальных настроек

options {
        directory "/var/named";
        forwarders { 192.168.0.10; 77.88.8.8; 8.8.8.8; };
        listen-on { 127.0.0.1; localhost; 192.168.166.155; };
        allow-transfer { 192.168.1.15; 192.168.0.0/24; };
        allow-query { 192.168.1.0/24; 192.168.0.2; 192.168.0.3; };
        allow-notify { 192.168.0.15; };
        allow-recursion { any; };
}

Зоны bind

Для возможности искать соответствия в собственной базе доменов, необходимо создать и настроить зоны. Существуют следующие типы зон:

  1. Первичная, она же master, она же локальная. База, которая пополняется и редактируется на текущем сервере. Подробнее как настроить первичную зону bind.
  2. Вторичная или slave. База копирует настройки с первичной зоны на другом сервере. Подробнее как настроить вторичную зону bind.
  3. Заглушка или stub. Хранит у себя только записи NS, по которым все запросы переводятся на соответствующие NS-серверы.
  4. Кэширующая или hint. Не хранит на сетбе никаких записей — только результаты уже обработанных запросов для ускорения ответов на повторные обращения.

Решение проблем с помощью log-файлов

По умолчанию, сервер Bind под CentOS хранит логи в файле /var/named/data/named.run.

Для его непрерывного просмотра вводим следующую команду:

tail -f /var/named/data/named.run

Степень детализации логов можно настроить в конфигурационном файле:

vi /etc/named.conf

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

* где file — путь к log-файлу; severity — уровень чувствительности к возникающим событиям. Возможны следующие варианты для severity:

  • critical — критические ошибки.
  • error — ошибки и выше (critical).
  • warning — предупреждения и выше. Предупреждения не говорят о наличии проблем в работе сервиса, однако это такие событтия, которые могут привести с ошибкам, поэтому не стоит их игнорировать.
  • notice — уведомления и выше.
  • info — информация.
  • debug — отладка (подробный лог).
  • dynamic — тот же debug.

Напротив, чтобы отключить ведение лога, в конфигурационном файле должна быть настройка:

logging {
        category default { null; };
};

После изменения конфигурационного файла перезапускаем сервис:

systemctl restart named

Лог запросов

Если мы хотим также видеть в логе все запросы, которые приходят на bind, в командной строке вводим:

rndc querylog

Для отключения еще раз повторяем команду:

rndc querylog

Читайте также

Дополнительная информация по bind:

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

2. Как создать и настроить вторичную (slave) зону в BIND сервере.

3. Настройка Stub зоны на сервере Bind.

4. Настройка DNSSEC на BIND.

5. Настройка Split DNS на одном сервере Bind.

Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *