3.5.2.2 Настройка DNS-сервера bind
Скачать документ Окружение
- Версия РЕД ОС: 8
- Конфигурация: Сервер минимальный
- Версия bind: bind-9.16.16
О сервере
В состав репозитория РЕД ОС включен DNS-сервер bind, поддерживающий стандарты RFC 1034,1035, 2136. Поддерживает реализацию хост-систем на базе стека протоколов Internet, описанных в RFC 1123. Поддерживает механизм инкрементального переноса зон IXFR, описанный в RFC 1995 и механизм извещения ведомых серверов NOTIFY, RFC 1996.
Подготовка сервера
Устанавливаем все обновления:
dnf update
Установка и запуск BIND
Устанавливаем DNS-сервер следующей командой:
dnf install bind
Разрешаем автозапуск:
systemctl enable named --now
И проверяем, что он работает корректно:
systemctl status named
Базовая настройка DNS-сервера
Открываем на редактирование конфигурационный файл bind:
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
Создайте папку с мастер зонами:
mkdir /var/named/master
Прямая DNS зона
Создайте прямую DNS-зону.
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 www IN A 192.168.10.20 test IN A 192.168.10.12
Рассмотрим подробнее написанное:
$TTL 3600 — Time to live время жизни, по умолчанию 1 день. По достижении установленного времени, кеширующий сервер запрашивает DNS сервер, содержащий доменную зону, информацию о зоне. И при необходимости обновляет записи.
example.org IN SOA ns01.example.org. root.example.org. зона обслуживания, адрес корневого сервера для зоны, акаунт её админа.
2022112801; Serial - серийный номер версии таблицы dns. Самый лучший формат - ГГГГММДДNN, где NN - номер изменения таблицы за текущий день;
600; Refresh-указывает подчиненным DNS серверам как часто им обращаться, для поиска изменений к master серверу.
3600; Retry — говорит о том, сколько Slave сервер должен подождать, прежде чем повторить попытку.
1w; Expire — Максимальный срок жизни записей, после которой они потеряют актуальность (1 неделя)
300; Minimum TTL -минимальный срок жизни записи 5 мин.
NS ns01.example.org.-NS сервер который обслуживает эту зону
NS ns02.example.org.-NS сервер который обслуживает эту зону
NS ns03.example.org.-NS сервер который обслуживает эту зону
A 192.168.10.20 -если требуется попасть по адресу example.org, то клиенту будет выдан этот IP
ns01 A 192.168.10.50 — Записи для поиска наших NS серверов
ns02 A 192.168.10.60
ns03 A 192.168.10.70
test A 192.168.10.12 -Если клиент запрашивает адрес test.example.org, DNS выдаст 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
Для проверки работоспособности сервера с другого компьютера сети (например, на Windows) выполняем команду:
> 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-зону.
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
Для его непрерывного просмотра вводим следующую команду:
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
Создайте каталог для логов:
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) запись.
Дата последнего изменения: 23.09.2024
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.