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

Что такое DNSBIND, Linux и CentOS простыми словами. Версии используемого ПО — CentOS 7, BINВ 9.

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

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

# yum update

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

# yum install ntpdate

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

# \cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime

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

И синхронизируем время с внешним сервером:

# ntpdate ru.pool.ntp.org

Открываем порт в 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

Для проверки работоспособности сервера с другого компьютера сети (например, на 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 хранит логи в файле
/var/named/data/named.run.

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

tail /var/named/data/named.run

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

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

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

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

Да            Нет