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 серверу могли получать только указанные, «надежные» пользователи.

20c433eba63054298d209ffccc9ed83d.png

Соответственно, везде где было { any; }; нужно будет прописать { trusted; };

Для проверки синтаксиса конфигурации используем команду:

named-checkconf /etc/bind/named.conf.options

Настройка локальных зон

Поскольку наши домены будут находиться в домене au-team.irpo, мы будем использовать его в качестве зоны прямого просмотра. Добавим зону прямого просмотра со следующими строками, заменив имя зоны на собственное, и закрытый IP-адрес дополнительного DNS сервера в директиве allow-transfer:

/etc/bind/named.conf.local
/etc/bind/named.conf.local
  • 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 задаем настройки для прямой зоны, определяя необходимые записи:

db.au-team.irpo
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.

db.192.168.100

Для проверки конфигурации используем:

named-checkzone 100.168.192.in-addr.arpa /etc/bind/zones/db.192.168.100

db.192.168.200

Для проверки конфигурации используем:

named-checkzone 200.168.192.in-addr.arpa /etc/bind/zones/db.192.168.200

Перезапустим BIND:

systemctl restart bind9

Далее в конфигурации серверов нужно изменить DNS как показано ниже:

netplan
netplan

Проверка работы DNS

Для проверки работы dns обратной зоны проведем тестирование с помощью команды nslookup:

nslookup 192.168.100.1

Ответ должен быть такой (или приблизительно такой если у вас были другие ip и названия зон)

e2ca4875fff2fef6100c3cb19ea1a176.png

Для проверки работы dns прямой зоны пропишем:

nslookup hq-srv.au-team.irpo

Ответ должен быть такой (или приблизительно такой если у вас были другие ip и названия зон)

8174dfada5b741a9bd8c690ca1810545.png

Исправление возможных проблем

Пока я все это настраивал, я встретился с проблемой, где DNS сервер видит и пингует на все свои клиенты, но сами клиенты его не видят, говоря что сервиса не существует: NXDOMAIN

Я провел следующие действия (они довольно жесткие и возможно понравятся не всем, но у меня все заработало):

  1. Удалил systemd-resolved. После изменений в файле /etc/@resolv.conf и перезагрузки сервиса IP DNS сервера сменялся на 127.0.0.53. Чтобы раз и навсегда исправить этот файл я удалил systemd-resolved командой: apt remove systemd-resolved. После удаления файл будет с настроенным нами DNS сервером.

  2. Загрузил и настроил UFW. Я долго боролся с тем, чтобы клиенты начали видеть мой DNS, много чего перепробовал, но помогло только это. При загрузке UFW он удалит iptables-persistent, так что надо выбрать что-то одно… Когда добавил правила: ufw allow bind9, соседняя машина внезапно начала видеть DNS. Я установил и настроил UFW на HQ-SRV, HQ-RTR и BR-RTR. Причем перед этим мне пришлось скачать bind9 на эти три машины… Очень коряво, но у меня заработало.

Надеюсь последний пункт никому не понадобиться. Желаю удачи :')

© Habrahabr.ru