Как установить и настроить DNS-сервер BIND на CentOS или Rocky Linux
Используемые термины: DNS, BIND, Linux, CentOS, Rocky Linux.
Мы рассмотрим небольшой обзор по установке DNS-сервера bind на системы типа RPM (Rocky Linux, CentOS, Oracle Linux и так далее).
Подготовка сервера
Установка и запуск
Базовая настройка
Описание глобальных опций
Зоны bind
Решение проблем с помощью log-файлов
Подготовка сервера
Устанавливаем все обновления:
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
Для возможности искать соответствия в собственной базе доменов, необходимо создать и настроить зоны. Существуют следующие типы зон:
- Первичная, она же master, она же локальная. База, которая пополняется и редактируется на текущем сервере. Подробнее как настроить первичную зону bind.
- Вторичная или slave. База копирует настройки с первичной зоны на другом сервере. Подробнее как настроить вторичную зону bind.
- Заглушка или stub. Хранит у себя только записи NS, по которым все запросы переводятся на соответствующие NS-серверы.
- Кэширующая или 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 сервере.