notes/bind9
Долгий Артём 0f091b1f1d add multizone 2022-07-04 09:08:15 +03:00
..
multi_zones add multizone 2022-07-04 09:08:15 +03:00
dav.lan.rzone add bind 2022-07-01 10:09:37 +03:00
dav.lan.zone add bind 2022-07-01 10:09:37 +03:00
named.conf add bind 2022-07-01 10:09:37 +03:00
named.conf.dav.lan add bind 2022-07-01 10:09:37 +03:00
named.conf.options add bind 2022-07-01 10:09:37 +03:00
readme.md add bind 2022-07-01 10:09:37 +03:00

readme.md

Настройка сервера разрешения имён BIND

1. Установка

Debian, Ubuntu

sudo apt install bind9 bind9-doc dnsutils python-ply-doc

при этом, можно ограничится установкой основного пакета bind, однако установщик предлагает и дополнительные пакеты

Cent OS Stream

sudo dnf install bind bind-utils

В результате установки в системе появится служба named.sevice

2. Запуск службы

После установки необходимо перечитать список демонов системы

sudo systemctl daemon-reload

и выполнить запуск службы named

sudo systemctl enable --now named.service

3. Основной конфигурационный файл BIND

Конфигурационный файлы расположены:

Debian, Ubuntu - /etc/bind
Cent OS - /etc

Основным файлом настройки является - named.conf
Для проверки корректности конфигурации служит утилита - named-checkconf

Кроме, непосредственно, самой настройки сервера, файл named.conf может включать ссылки на другие конфигурационные файлы, которые указываются в директиве include, например

include "/etc/bind/named.conf.options";

Таким образом, файл named.conf может содержать исключительно ссылки на другие конфигурационные файлы

da2001@ns:/etc/bind $ cat /etc/bind/named.conf

include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";

В конфигурационных файлах bind можно использовать комментарии различных стилей:
стиль C: /* */
стиль C++: // до конца строки
стиль Unix: # до конца строки

4. Кэширующий режим работы

По умолчанию конфигурация настраивается на работу в режиме кэширующего сервера. В этом режиме bind только сохраняет в своём кэше ответы от вышестоящих DNS серверов и транслирует их клиентам. За счёт этого, при повторном запросе, ответ клиенту выдаётся из записи в кэше, соответственно и ответ клиент получает быстрее, т.к. нет обращения к внешним серврерам имён. Всё, что для этого требуется - это добавить IP адреса DNS вышестоящих серверов в секции forwarders

Пример настройки - /etc/bind/named.conf.options

options {
    directory "/var/cache/bind";

    // интерфейсы, на которых принимаются DNS запросы
    listen-on port 53 {
        127.0.0.1;
        192.168.13.2; // IP адрес интерфейса сервера
    };

    listen-on-v6 port 53 {
        any;
    };

    // кто может обращаться за DNS запросами к этому серверу. { any; } значит любой
    allow-query {
        any;
    };

    // вышестоящие DNS-сервера, на которые будет переадресован запрос при отсутствии ответа
    forwarders {
        // NS сервера Яндекса
        77.88.8.8;
        77.88.8.1;
    };

	  dnssec-validation auto;

};

После внесения изменений в конфигурацию, необходимо выполнить проверку синтаксиса с помощью утилиты named-checkconf. Если будут обнаружены ошибки, утилита укажет на строки с ошибками и предложит варианты исправления.

5. Firewall

Если на сервере активирован межсетевой экран, необходимо разрешить работу DNS:

Cent OS (firewalld)

sudo firewall-cmd --add-service=dns --permanent
sudo firewall-cmd --reload

Проверить разрешения

sudo firewall-cmd --list-services

или

sudo firewall-cmd --list-all

Ubuntu (ufw)

sudo ufw allow dns

Проверить разрешения

sudo ufw status verbose

Перезапуск службы для применения внесенных изменений в конфигурацию

sudo systemctl restart named.service

6. Проверка работы BIND

Для проверки работы сервера в режиме кэширования можно запросить разрешение имени с помощью утилиты nslookup. Эта утилита входит в состав пакета dnsutils.

С клиента в одной локальной сети с сервером BIND выполним запрос разрешения имени ubuntu.com

nslookup ubuntu.com ns

ns - имя сервера BIND в локальной сети
Если всё настроено верно, в ответ получим

[da2001@fedora ~]$ nslookup ubuntu.com ns
Server:		ns
Address:	192.168.13.2#53

Non-authoritative answer:
Name:	ubuntu.com
Address: 185.125.190.20
Name:	ubuntu.com
Address: 185.125.190.21
Name:	ubuntu.com
Address: 185.125.190.29
Name:	ubuntu.com
Address: 2620:2d:4000:1::27
Name:	ubuntu.com
Address: 2620:2d:4000:1::26
Name:	ubuntu.com
Address: 2620:2d:4000:1::28

7. Разрешение имён в локальной сети.

Для разреешения имён в локальной сети, необходимо определить зоны прямого и обратного просмотра:

  • зона прямого просмотра выпоняет разрешение доменных имён в IP адреса
  • зона обратного просмотра выполняет разрешения IP адресов в имена

Зона прямого просмотра

Необходимо создать файл описания зоны и указать его в основном конфигурационном файле named.conf

в Ubuntu это можно сделать следующими командами:

sudo touch /etc/bind/named.conf.dav.lan

sudo bash -c "echo 'include \"/etc/bind/named.conf.dav.lan\";' >> /etc/bind/named.conf"

в Cent OS в команде необходимо изменить пути размещения файлов на /etc/named.conf

Содержимое файла описания зоны прямого просмотра

da2001@ns:~ $ cat /etc/bind/named.conf.dav.lan
zone "dav.lan" {
    type master;
    file "/etc/bind/zone.dav.lan";
    };

теперь необходимо выполнить непосредственное описание зоны

da2001@ns:~ $ cat /etc/bind/zone.dav.lan
$TTL             604800
@                IN      SOA     dav.lan. root.dav.lan. (
                              2022070101         ; Serial
                                  604800         ; Refresh
                                   86400         ; Retry
                                 2419200         ; Expire
                                  604800 )       ; Negative Cache TTL

@                IN      NS      ns
@                IN      AAAA    ::1
ns               IN      A       192.168.13.2

zidoo            IN      A       192.168.13.3
voip             IN      A       192.168.13.4

где,
$TTL 604800 - время жизни записи в кэше
dav.lan. - название зоны, root.dav.lan. - эл.адрес администратора, но вместо @ указана точка. Точки в конце названия зоны и адреса администраторы ОБЯЗАТЕЛЬНЫ
Serial - указан номер версии конфигурации, может быть задан произвольно, обычно в нём указывают дату изменения и порядковый номер изменения
@ IN NS ns - указание на DNS сервер
@ IN A 192.168.13.2 - сопоставление имени и IPv4 адреса DNS сервера
@ IN AAAA ::1 - сопоставление имени и IPv6 локального адреса DNS сервера

Далее можно добавлять записи сопоставления адресов других хостов в сети.

После внесения всех изменений в конфигурацию, стоит проверить корректность описания файла зоны утилитой named-checkzone, утилите необходимо передать в качестве аргументов имя зоны и файл описывающий зону

da2001@ns:~ $ named-checkzone dav.lan /etc/bind/zone.dav.lan
zone dav.lan/IN: loaded serial 2022070101
OK

Зона обратного просмотра

Для указания файла описания заны обратного просмотра, добавим его в ранее созданный файл named.conf.dav.lan

da2001@ns:~ $ cat /etc/bind/named.conf.dav.lan
zone "dav.lan" {
    type master;
    file "/etc/bind/zone.dav.lan";
    };

zone "13.168.192.in-addr.arpa" {
    type master;
    file "/etc/bind/zone.192.168.13";
    };

и опишем зону обратного просмотра

$TTL    604800
@       IN      SOA     dav.lan. root.dav.lan. (
                     2022070101         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL

@       IN      NS      ns.
2       IN      PTR     ns.dav.lan.
3       IN      PTR     zidoo.dav.lan.
4       IN      PTR     voip.dav.lan.

от описания прямой зоны, обратная зона отличается типом записей, в ней указываем записи PTR.

Формат PTR записи
3 IN PTR zidoo.dav.lan.
3 - последний октет IPv4 адреса
zidoo.dav.lan. - FQDN, точка в конце обязательна

После описания обратной зоны, проверим корректность внесения данных

da2001@ns:/etc/bind $ sudo named-checkzone 13.168.192.in-addr.arpa dav.lan.rzone
zone 13.168.192.in-addr.arpa/IN: loaded serial 2022070101
OK

8. Проверка разрешения имён в локальной сети.

Проверка зоны прямого просмотра

С клиента в локальной сети запросим разрешение имени в IPv4 адрес существующего хоста в локальной сети, при этом укажем, что разрешать имя в адрес необходимо нашим DNS сервером

[da2001@fedora ~]$ nslookup voip ns
Server:		ns
Address:	192.168.13.2#53

Name:	voip.dav.lan
Address: 192.168.13.4

Проверка зоны обратного просмотра

С клиента в локальной сети запросим разрешение IPv4 адреса существующего хоста в локальной сети в его FQDN, также, с указанием коркретного DNS сервера

[da2001@fedora ~]$ nslookup 192.168.13.5 ns
5.13.168.192.in-addr.arpa	name = qnap.dav.lan.