3.5.2.2 Настройка DNS-сервера bind
О сервере
Подготовка сервера
Установка и запуск BIND
Базовая настройка DNS-сервера
Создание локальных зон DNS
Логирование Bind
Проверка работоспособности
Окружение
- Версия РЕД ОС: 8
- Конфигурация: Сервер минимальный
- Версия bind: bind-9.16.16
О сервере
В состав репозитория РЕД ОС включен DNS-сервер bind, поддерживающий стандарты RFC 1034, 1035, 2136. Поддерживает реализацию хост-систем на базе стека протоколов Internet, описанных в RFC 1123. Поддерживает механизм инкрементального переноса зон IXFR, описанный в RFC 1995 и механизм извещения ведомых серверов NOTIFY, RFC 1996.
Подготовка сервера
Устанавливаем все обновления:
sudo dnf update
Установка и запуск BIND
Устанавливаем DNS-сервер следующей командой:
sudo dnf install bind
Разрешаем автозапуск:
systemctl enable named --now
Проверяем, что он работает корректно:
systemctl status named
Базовая настройка DNS-сервера
Открываем на редактирование конфигурационный файл bind:
sudo nano /etc/named.conf
Редактируем следующее в блоке options:
listen-on port 53 { 127.0.0.1; 192.168.0.1; };
listen-on-v6 port 53 { none; };
allow-query { any; };
forward first;
forwarders { 8.8.8.8; };
* 192.168.0.1 — IP-адрес нашего DNS-сервера, на котором он будет принимать запросы;
allow-query разрешает выполнять запросы всем, но из соображений безопасности можно ограничить доступ для конкретной сети, например, вместо any написать 10.10.1.0/24;
listen-on-v6 port 53 присвоим значение none, тем самым отключив ipv6;
forward с параметром first указывает, DNS-серверу пытаться разрешать имена с помощью DNS-серверов, указанных в параметре forwarders, и лишь в случае, если разрешить имя с помощью данных серверов не удалось, то будет осуществлять попытки разрешения имени самостоятельно;
forwarders перенаправляем запросы на DNS-сервер, где можно получить информацию.
Создание локальных зон DNS
Создайте папку с мастер зонами:
sudo mkdir /var/named/master
Прямая DNS зона
Создайте прямую DNS-зону.
sudo nano /var/named/master/example.org
Пример её содержимого с описанием ниже.
$TTL 604800 ;
example.org. IN SOA ns01.example.org. root.example.org. (
1 ; Serial
600 ; Refresh
3600 ; Retry
1w ; Expire
360 ; Minimum TTL
)
IN NS ns01.example.org.
IN NS ns02.example.org.
IN NS ns03.example.org.
ns01 IN A 192.168.10.50
ns02 IN A 192.168.10.60
ns03 IN A 192.168.10.70
test IN A 192.168.10.12
Рассмотрим подробнее параметры:
- $TTL 604800 — время жизни (Time to Live, TTL) для всех записей зоны. Значение 604800 секунд означает, что кэшированные данные будут храниться 7 дней. По достижении установленного времени, кеширующий сервер запрашивает DNS-сервер, содержащий доменную зону, информацию о зоне. И при необходимости обновляет записи;
- SOA (Start of Authority) — запись SOA определяет авторитетную информацию о зоне DNS;
- ns01.example.org. — первичный DNS-сервер для этой зоны;
- root.example.org. — адрес электронной почты администратора зоны;
- 1; Serial — серийный номер зоны, который увеличивается при каждом изменении записи;
- 600; Refresh — указывает подчиненным DNS-серверам как часто им обращаться, для поиска изменений к master-серверу (600 секунд);
- 3600; Retry — интервал повторной попытки запроса изменений после неудачной попытки обновления (1 час);
- 1w; Expire — срок жизни зоны на вторичном сервере (1 неделя). Если зона не обновляется в течение этого срока, она считается недействительной;
- 360; Minimum TTL — минимальный TTL для записей, которые не имеют явного значения TTL (6 минут);
- NS ns01.example.org. — первый DNS-сервер;
- NS ns02.example.org. — второй DNS-сервер;
- NS ns03.example.org. — третий DNS-сервер;
- A-записи — эти записи связывают имена хостов с IP-адресами;
- ns01 IN A 192.168.10.50 — имя хоста ns01 привязано к IP-адресу 192.168.10.50;
- ns02 IN A 192.168.10.60 — имя хоста ns02 привязано к IP-адресу 192.168.10.60;
- ns03 IN A 192.168.10.70 — имя хоста ns03 привязано к IP-адресу 192.168.10.70;
- test IN A 192.168.10.12 — тестовый хост test имеет IP-адрес 192.168.10.12.
Назначьте владельца и права.
chown -R root:named /var/named/master chmod 0640 /var/named/master/*
В конфигурационный файл named.conf добавьте следующее:
zone "example.org" {
type master;
file "master/example.org";
};
* где example.org — имя зоны, которую будет обслуживать наш DNS-сервер. Это и есть домен, для которого bind будет хранить записи. Должен совпадать по имени с файлом зоны в папке master.
Описание опций настройки зоны:
type <тип зоны> (в нашем случае первичная — значит master). Другие варианты — slave, stub, forward.
file <путь_к_файлу> с записями зоны. В данном примере указан относительный путь — то есть файл находится по пути master/test.local, который начинается относительно рабочей директории (по умолчанию — /var/named/). Таким образом, полный путь до файла — /var/named/master/test.local.
Для каждой зоны создайте свой блок zone.
Чтобы настройки применились, необходимо перезапустить службу.
systemctl restart named
Для проверки работоспособности сервера с другого компьютера сети выполняем команду:
nslookup test.example.org 192.168.0.1
* данной командой мы пытаемся узнать IP-адреса сайта test.example.org через сервер 192.168.0.1.
Должно получиться, примерно, следующее:
Server: 192.168.0.1 Address: 192.168.0.1#53 Name: test.example.org Address: 192.168.10.12
Создание обратной зоны
В конфигурационный файл named.conf добавьте следующее:
zone "10.168.192.in-addr.arpa" {
type master;
file "master/10.168.192.zone";
};
Создайте обратную DNS-зону.
sudo nano /var/named/master/10.168.192.zone
Пример её содержимого с описанием ниже.
$TTL 3600 ;
@ IN SOA example.org. root.example.org (
20060204 ; Serial
3600 ; Refresh
900 ; Retry
3600000 ; Expire
3600 ; Minimum
)
@ IN NS localhost.
50 IN PTR ns01
60 IN PTR ns02
70 IN PTR ns03
20 IN PTR www
12 IN PTR test
Чтобы настройки применились, необходимо перезапустить службу.
systemctl restart named
Логирование Bind
Способ 1
По умолчанию, сервер Bind хранит логи в файле: /var/named/data/named.run.
Для его непрерывного просмотра вводим следующую команду:
sudo tail -f /var/named/data/named.run
Степень детализации логов можно настроить в конфигурационном файле:
logging { channel default_debug { file "data/named.run"; severity dynamic; }; };
* где file — путь к log-файлу; severity — уровень чувствительности к возникающим событиям.
Возможны следующие варианты для severity:
- critical — критические ошибки;
- error — ошибки и выше (critical);
- warning — предупреждения и выше. Предупреждения не говорят о наличии проблем в работе сервиса, однако это такие событтия, которые могут привести с ошибкам, поэтому не стоит их игнорировать;
- notice — уведомления и выше;
- info — информация;
- debug — отладка (подробный лог);
- dynamic — тот же debug.
Способ 2
Создайте каталог для логов:
sudo mkdir /var/log/bind
В разделе logging задаются 2 параметра channel (можно и больше двух), эти параметры дословно можно назвать "канал" записи. Каждый канал определяет имя канала и настройки параметров записи (что записывать, а что — нет и куда писать).
Директива category задает какую категорию сообщений в какой канал отправлять.
Исходя из этого, мы имеем: запись стандартной информации в канал misc, а приходящие запросы посылаются в канал query. При этом, если файлы журнала достигают 4Мб (size 4m), он переименовывается добавлением к имени .1 и начинается запись в новый журнал, числа в конце других журналов увеличиваются. Журналы с номером, более указанного в version (в нашем случае 4) удаляются.
Параметры print* определяют заносить ли в журнал время появления, важность и категорию информации. Более подробно про настройки раздела logging можно почитать в man (5) named.conf.
Добавьте конфигурацию логирования в файл /etc/named.conf:
// настройки логирования logging { channel "misc" { file "/var/log/bind/misc.log" versions 4 size 4m; print-time yes; print-severity yes; print-category yes; }; channel "query" { file "/var/log/bind/query.log" versions 4 size 4m; print-time yes; print-severity no; print-category no; }; category default { "misc"; }; category queries { "query"; }; };
Проверка работоспособности
Для проверки работоспособности и правильной конфигурации DNS-сервера, нужно сделать к нему несколько запросов. Для этого можно воспользоваться консольными утилитами ping, dig или nslookup.
Клиент, на котором выполняются запросы должен быть настроен на использование вашего DNS сервера, подробнее смотрите в настройках сетевого адаптера.
Утилита ping, при указании доменного имени, резолвит его с помощью DNS. Если пинг к хосту, указанному в DNS, выполняется, то A запись данного хоста корректна.
С помощью dig или nslookup можно проверить обратные записи или иные специфические записи DNS-сервера. Например:
dig SRV _ldap._tcp.ad.test
Сделает запрос SRV-записи на сервере в домене ad.test. Должен вывести ip-адрес хоста с LDAP сервисом.
nslookup 192.168.10.50
Запрос должен вывести hostname для введенного ip. Тем самым проверив обратную (PTR) запись.
Дата последнего изменения: 09.04.2025
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.