Как установить и настроить 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.

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

Результат проверки bind сервера командой nslookup

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

Перечисленные ниже параметры являются глобальными по отношению к 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.

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

Да            Нет