DNS-сервер на базе BIND9 на Ubuntu Server VMware Workstation
Я потратил на это в общей сложности 3 месяца и здесь сугубо мой опыт вперемешку с информацией из интернета. Здесь будет рассмотрена настройка Bind9 для виртуальной машины Ubuntu Server. Делаю я это под своими IP.
Установка BIND9
Установим пакеты BIND9 и необходимые инструменты:
sudo apt install bind9 bind9utils bind9-doc -y
Настройка BIND9
После установки необходимо отредактировать файл конфигурации /etc/default/named для настройки параметров, под которыми будет работать служба BIND. Например, нужно установить:
OPTIONS=»-u bind -4»
Это указывает, что сервер будет работать от имени пользователя bind и использовать IPv4. После этого можно перезагрузить named командой:
sudo systemctl restart named
И посмотреть статус командой:
sudo systemctl status named
Теперь, после установки BIND, давайте настроим основной DNS-сервер.
Далее, откроем файл named.conf.options в директории /etc/bind и рассмотрим ключевые параметры:

directory: указывает каталог для хранения файлов зон и кэша.
listen-on: позволяет указать IP-адреса, на которых сервер слушает запросы.
recursion: определяет, разрешены ли рекурсивные запросы.
allow-query: указывает, какие сети могут посылать запросы к серверу.
forwarders: адреса других DNS-серверов для перенаправления запросов.
dnssec-validation: включает/выключает проверку DNSSEC.
Также, это немного другой способ, для более защищенности можно сделать блок acl (список контроля доступа) под именем «trusted» сверху над option, чтобы доступ к DNS серверу могли получать только указанные, «надежные» пользователи.

Соответственно, везде где было { any; }; нужно будет прописать { trusted; };
Для проверки синтаксиса конфигурации используем команду:
named-checkconf /etc/bind/named.conf.options
Настройка локальных зон
Поскольку наши домены будут находиться в домене au-team.irpo, мы будем использовать его в качестве зоны прямого просмотра. Добавим зону прямого просмотра со следующими строками, заменив имя зоны на собственное, и закрытый IP-адрес дополнительного DNS сервера в директиве allow-transfer:

type master: указывает, что сервер является основным для данной зоны.
file: путь к файлу зоны.
Также проверим синтаксис этой конфигурации:
named-checkconf /etc/bind/named.conf.local
Создание директорий для зон
Создадим директорию для хранения файлов зон:
mkdir /etc/bind/zones
Скопируем необходимые шаблоны файлов для настройки:
cp /etc/bind/db.local /etc/bind/zones/db.au-team.irpo
cp /etc/bind/db.127 /etc/bind/zones/db.192.168.100
cp /etc/bind/db.127 /etc/bind/zones/db.192.168.200
Настройка прямой и обратной зон
В файле db.au-team.irpo задаем настройки для прямой зоны, определяя необходимые записи:

SOA: основная информация о зоне.
NS: указывает сервер для зоны.
A: связывает имя с IP-адресом.
CNAME: создает запись для перенаправления поддоменов (для moodle и wiki, ребята с дем. экзамена поймут).
Затем проверим настройки:
named-checkzone au-team.irpo /etc/bind/zones/db.au-team.irpo
В файлах db.192.168.100 и db.192.168.200 настроим обратные зоны, используя запись PTR.

Для проверки конфигурации используем:
named-checkzone 100.168.192.in-addr.arpa /etc/bind/zones/db.192.168.100

Для проверки конфигурации используем:
named-checkzone 200.168.192.in-addr.arpa /etc/bind/zones/db.192.168.200
Перезапустим BIND:
systemctl restart bind9
Далее в конфигурации серверов нужно изменить DNS как показано ниже:

Проверка работы DNS
Для проверки работы dns обратной зоны проведем тестирование с помощью команды nslookup:
nslookup 192.168.100.1
Ответ должен быть такой (или приблизительно такой если у вас были другие ip и названия зон)

Для проверки работы dns прямой зоны пропишем:
nslookup hq-srv.au-team.irpo
Ответ должен быть такой (или приблизительно такой если у вас были другие ip и названия зон)

Исправление возможных проблем
Пока я все это настраивал, я встретился с проблемой, где DNS сервер видит и пингует на все свои клиенты, но сами клиенты его не видят, говоря что сервиса не существует: NXDOMAIN
Я провел следующие действия (они довольно жесткие и возможно понравятся не всем, но у меня все заработало):
Удалил systemd-resolved. После изменений в файле /etc/@resolv.conf и перезагрузки сервиса IP DNS сервера сменялся на 127.0.0.53. Чтобы раз и навсегда исправить этот файл я удалил systemd-resolved командой:
apt remove systemd-resolved
. После удаления файл будет с настроенным нами DNS сервером.Загрузил и настроил UFW. Я долго боролся с тем, чтобы клиенты начали видеть мой DNS, много чего перепробовал, но помогло только это. При загрузке UFW он удалит iptables-persistent, так что надо выбрать что-то одно… Когда добавил правила:
ufw allow bind9
, соседняя машина внезапно начала видеть DNS. Я установил и настроил UFW на HQ-SRV, HQ-RTR и BR-RTR. Причем перед этим мне пришлось скачать bind9 на эти три машины… Очень коряво, но у меня заработало.
Надеюсь последний пункт никому не понадобиться. Желаю удачи :')