2.1 Настройка DNS сервера bind

О сервере

В состав репозитория РЕД ОС включен DNS сервер bind, поддерживающий стандарты RFC 1034,1035, 2136. Поддерживает реализацию хост-систем на базе стека протоколов Internet, описанных в RFC 1123. Поддерживает механизм инкрементального переноса зон IXFR, описанный в RFC 1995 и механизм извещения ведомых серверов NOTIFY, RFC 1996.

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

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

# yum update

Устанавливаем утилиту для синхронизации времени, отключаем cronyd и запускаем ntpd

# yum install ntp
# systemctl disable chronyd
# systemctl enable ntpd
# systemctl stop chronyd
# systemctl start ntpd

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

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

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

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

# ntpdate –s time.yandex.ru

Установка и запуск BIND

Устанавливаем DNS-сервер следующей командой:

# yum install bind

Разрешаем автозапуск:

# systemctl enable named

Запускаем сервис имен:

# systemctl start named

И проверяем, что он работает корректно:

# systemctl status named

Базовая настройка DNS-сервера

Открываем на редактирование конфигурационный файл bind:

# vi /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; };

* где 10.10.8.88 и 84.53.206.88— IP-адрес нашего NS-сервера, на котором он будет принимать запросы;

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 86400       ;
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.
        IN      A       192.168.10.20
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. зона обслуживания, адрес корневого сервера для зоны, акаунт её админа.
1; Serial -ее серийный номер DNS записи.
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 "test.local" {
 type master;
 file "master/example.org";
 };

* где test.local — имя зоны, которую будет обслуживать наш DNS-сервер. Это и есть домен, для которого bind будет хранить записи;

Описание опций настройки зоны:

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-адреса сайта rgu.avo.ru через сервер 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 сервера, подробнее смотрите в настройках сетевого адаптера.

Утилита пинг, при указании доменного имени, резолвит его с помощью DNS. Если пинг к хосту, указанному в DNS выполняется, то A запись данного хоста корректна.

С помощью dig или nslookup можно проверить обратные записи или иные специфические записи DNS сервера. Например:

# dig SRV _ldap._tcp.ad.test

Сделает запрос SRV записи на сервере в домене ad.test. Должен вывести ip адрес хоста с LDAP сервисом.

# nslookup 192.168.10.50

Запрос должен вывести хостнейм для введенного ip. Тем самым проверив обратную (PTR) запись.

Если вы нашли ошибку, выделите текст и нажмите Ctrl+Enter.