Инструменты пользователя

Инструменты сайта


rias:dnsdebian11

Это старая версия документа!


Настройка DNS сервера BIND9 в Debian 11

1. Установка DNS сервера BIND9

1.1. Требования к ЭВМ

В данной главе приводятся минимальные требования для ЭВМ, используемой в лабораторной работе:

– Операционная система: Debian 11 «bullseye», базовая конфигурация;
– ЦПУ: достаточно 1 процессора (для ускорения процесса установки и настройки рекомендуется временно установить 2 процессора);
– ОЗУ: достаточно 1 ГБ;
– ПЗУ: достаточно 10 ГБ.

1.2. Настройка сетевого интерфейса

Перед установкой DNS сервера необходимо провести настройку сетевого интерфейса. Настройку необходимо провести в соответствии с дополнительной инструкцией.

1.3. Установка DNS сервера BIND9

Далее обновляем список пакетов и устанавливаем BIND9. Для обновления необходимо выполнить две команды от суперпользователя (далее все команды выполняются от суперпользователя):

# apt update
# apt upgrade
root@debian:/home/user# apt update\\
Пол:1 http://security.debian.org/debian-security bullseye-security InRelease [48,4 kB]\\
Суш:2 http://deb.debian.org/debian bullseye InRelease\\
Пол:3 http://deb.debian.org/debian bullseye-updates InRelease [44,1 kB]\\
Пол:4 http://security.debian.org/debian-security bullseye-security/main Sources [174 kB]\\
Получено 266 kB за 1с (205 kB/s)\\
Чтение списков пакетов... Готово\\
Построение дерева зависимостей... Готово\\
Чтение информации о состоянии... Готово\\
Все пакеты имеют последние версии.\\
root@debian:/home/user#

root@debian:/home/user# apt upgrade
Чтение списков пакетов… Готово
Построение дерева зависимостей… Готово
Чтение информации о состоянии… Готово
Расчёт обновлений… Готово
Обновлено 0 пакетов, установлено 0 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
root@debian:/home/user#

После обновления системы, непосредственно установим BIND9, для этих целей выполним:

# apt install bind9
root@debian:/home/user# apt install bind9\\
Чтение списков пакетов... Готово\\
Построение дерева зависимостей... Готово\\
Чтение информации о состоянии... Готово\\
Будут установлены следующие дополнительные пакеты:\\
  bind9-utils dns-root-data python3-ply\\
Предлагаемые пакеты:\\
  bind-doc resolvconf ufw python-ply-doc\\
Следующие НОВЫЕ пакеты будут установлены:\\
  bind9 bind9-utils dns-root-data python3-ply\\
Обновлено 0 пакетов, установлено 4 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.\\
Необходимо скачать 994 kB архивов.\\
После данной операции объём занятого дискового пространства возрастёт на 2 361 kB.\\
Хотите продолжить? [Д/Н]

1.4. Настройка межсетевого экрана

DNS сервер работает сразу после установки. Однако, на только что установленной системе отсутствуют какие-либо средства обеспечения безопасности. Для устранения этого недостатка включим межсетевой экран:

# ufw enable
root@debian:/home/user# ufw enable\\
Firewall is active and enabled on system startup\\
root@debian:/home/user#

Межсетевой экран включен. По умолчанию в нём отсутствуют какие-либо правила. Первое что мы сделаем это запретим все входящие соединения:

# ufw default deny incoming
root@debian:/home/user# ufw default deny incoming\\
Default incoming policy changed to 'deny' (be sure to update your rules accordingly)\\
root@debian:/home/user#

Далее разрешаем работу DNS сервера через межсетевой экран, для этого включаем предустановленные правила:

# ufw allow Bind9
root@debian:/home/user# ufw allow Bind9\\
Rule added\\
Rule added (v6)\\
root@debian:/home/user#

1.5. Настройка BIND9

Основные настройки BIND9 находятся в файле: /etc/bind/named.conf.options

Откроем его в режиме редактирования.

Рассмотрим некоторые из доступных опций.

listen-on (listen-on-v6) позволяет указать сети, которые будет обслуживать DNS сервер. Для работы по всем адресам не указывайте параметр или же задайте any.

Обратите внимание на строку listen-on-v6 { any; }; если у Вас включен IPv6, то Bind9 будет слушать на всех адресах IPv6. Если необходимо этого избежать, то закомментируйте эту строку или укажите конкретный адрес. Не рекомендуется слушать на всех адресах, особенно которые напрямую смотрят в интернет, так как существует масса атак на DNS сервера.

allow-query указывает, кому разрешено выполнять запросы. BIND9 по умолчанию разрешает только локальные запросы, поэтому добавьте необходимые IP-адреса или пропишите any;, чтобы разрешить все запросы.

forwarders – серверы пересылки, содержат IP-адреса DNS серверов, на которые перенаправляется запрос в случае, если наш сервер не содержит необходимых данных.

Полное руководство по BIND9 можно найти в BIND 9 Administrator Reference Manual https://bind9.readthedocs.io/_/downloads/en/latest/pdf/

В лабораторной работе наши DNS сервера будут принимать запросы от любого клиента находящегося в сети 10.0.0.0/8, IP-адреса наших DNS серверов в этой сети первичный: 10.0.10.10, вторичный: 10.0.20.10. При отсутствии необходимых данных о зонах, наши DNS сервера будут перенаправлять запросы на DNS сервера университета 94.232.137.104 и 94.232.137.105. Сеть IPv6 обслуживаться не будет.

Поправим файл настроек named.conf.options в соответствии с нашими требованиями.

options {
        directory "/var/cache/bind";
        // If there is a firewall between you and nameservers you want
        // to talk to, you may need to fix the firewall to allow multiple
        // ports to talk.  See http://www.kb.cert.org/vuls/id/800113
        // If your ISP provided one or more IP addresses for stable.
        // nameservers, you probably want to use them as forwarders...
        // Uncomment the following block, and insert the addresses replacing.
        // the all-0's placeholder.
        forwarders {
                94.232.137.104;
                94.232.137.105;
        };
        //=============================================================
        // If BIND logs error messages about the root key being expired,
        // you will need to update your keys.  See https://www.isc.org/bind-keys
        //===============================
        dnssec-validation auto;
        //listen-on-v6 { any; };
        listen-on {
                10.0.10.10;
        };
        allow-query {
                10.0.0.0/8;
        };
};

Сохраните и закройте файл. Проверьте настройку:

# named-checkconf
root@debian:/home/user# named-checkconf\\
root@debian:/home/user#

Если ошибок не появилось, значит все в порядке. Выполните перезапуск службы, чтобы изменения вступили в силу.

# systemctl restart bind9

Настройка DNS сервера закончена. При такой базовой настройке DNS сервер работает как перенаправляющий DNS сервер, т. е. перенаправляет полученные рекурсивные запросы вышестоящему серверу в виде рекурсивных запросов.

После завершения процесса установки вы можете проверить работу BIND9 выполнив команду:

# nslookup google.com 10.0.10.10

Если вы увидели похожий вывод, то процесс установки прошёл успешно.

2. Настройка BIND9 первичным DNS сервером (Primary DNS)

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

В лабораторной работе будет использоваться доменная зона lab.local.

2.1.1. Создание зоны прямого просмотра

Для создания зоны необходимо добавить информацию о зоне в файл конфигурации /etc/bind/named.conf.local. В результате должно получиться:

// Do any local configuration here
// Consider adding the 1918 zones here, if they are not used in your
// organization
// include "/etc/bind/zones.rfc1918";
zone "lab.local" {
        type master;
        file "/etc/bind/db.lab.local";
};

Рассмотрим некоторые из доступных опций:

  • type — master, slave, forward или hint;
  • file — указывает путь к файлу новой зоны;
  • allow-transfer — список DNS серверов, которым разрешено передавать зону (пока мы не используем);
  • also-notify — первичный DNS сервер будет уведомлять эти серверы об изменениях зоны (пока мы не используем).

В файле /etc/bind/db.lab.local будут храниться сведения о доменах нашей доменной зоны.

2.1.2. Конфигурационный файл зоны

Создайте файл зоны /etc/bind/db.lab.local и откройте его.

Для создания файла используется команда:

# touch /etc/bind/db.lab.local

root@debian:/home/user# touch /etc/bind/db.lab.local
root@debian:/home/user# _

Добавьте в файл сведения о зоне lab.local.

Формат записей: <имя узла> <класс (всегда ставится IN)> <тип записи> <значение>.

Немного подробнее:

Параметр Описание
$TTL Время актуальности записей в секундах. Необходим, чтобы указать другим DNS-серверам, как долго стоит хранить запись у себя в кэше. Слишком малое значение увеличит нагрузку на сервер, а большое приведет к слишком длительному процессу изменения записи.
SOA-запись В данном примере эта запись идет сразу после параметра TTL. Она хранит общие настройки для зоны.
Serial (2301141855) — порядковый номер изменения. Его необходимо каждый раз менять вручную при редактировании файла. С помощью него вторичный сервер (если такой есть) может определить, что были изменения и начать процесс копирования настроек. Как правило, данная запись отражает текущую дату и время, в примере: 23 (2023 г.) 01 (январь) 14 (14 число) 1855 (соответственно 18:55). Рекомендуется придерживаться этому правилу.
Refresh (604800) указывает вторичным серверам, через какой промежуток времени они должны сделать запрос на обновление зоны. Время в секундах.
Retry (86400) говорит вторичным серверам, как часто повторять попытки на обновление зоны, если первичный сервер не смог дать ответ (сервис был недоступен).
Expire (604800) — время в секундах, которое может работать вторичный сервер, если недоступен первичный. Если данный период истечет, а вторичный сервер так и не смог обновить зону, он должен прекратить отвечать на запросы.
<имя узла> Собственно доменное имя хоста. Может записываться без домена (как в данном примере) — он будет дописан автоматически. Также может быть записан полностью с доменом — в таком случае необходимо поставить точку в конце, например, ns1.lab.local. Если не указывается или обозначается знаком собаки (@), запись создается для имени зоны (в данном случае, lab.local).
<класс> Всегда используется IN (Internet). Указывает на тип сети.
<тип записи> Основные типы записей, использующиеся в DNS:
1. A — сопоставляет имени узла соответствующий IP-адрес.
2. NS — указатель на DNS-сервера, которые обслуживают данную зону.
3. MX — почтовая запись. Указывает на почтовые сервера, которые обслуживают домен. Поддерживает приоритизацию — при указании нескольких записей, клиент будет ориентироваться на значение той, для которой указано меньшее число.
4. CNAME — alias или псевдоним. Перенаправляет запрос на другую запись.
5. TXT — произвольная запись. Чаще всего используется для настройки средств повышения качества отправки почтовых сообщений.
<значение> Используется IP-адрес, имя узла, текстовая запись.

В получившемся конфигурационном файле:

$TTL 604800
@       IN      SOA     lab.local. admin.lab.local. (
                        2301141855      ; Serial
                        604800          ; Refresh
                        86400           ; Retry
                        2419200         ; Expire
                        604800 )        ; Negative Cache TTL
;
@       IN      NS      ns1.lab.local.
@       IN      A       10.0.0.1
ns1     IN      A       10.0.10.10

• зоне lab.local установлен IP-адрес: 10.0.0.1
• узлу ns1.lab.local установлен IP-адрес: 10.0.10.10

2.1.3. Проверка работоспособности DNS сервера

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

Перезапуск DNS сервера:

# systemctl reload bind9

Для перезагрузки зон используется утилита rndc (RNDC – это утилита, позволяющая управлять демоном named).

rndc <options> <command> <command-options>

При выполнении rndc на правильно настроенном DNS сервере доступны следующие команды:

  • halt — немедленно останавливает демон named.
  • querylog — регистрирует все запросы, сделанные к этому серверу имен.
  • refresh — обновляет базу данных сервера имен.
  • reload — перезагружает файлы зоны, но сохраняет все остальные ранее кэшированные ответы. Эта команда также позволяет вносить изменения в файлы зон без потери всех сохраненных разрешений имен. Если внесенные изменения затрагивают только определенную зону, перезагрузите только эту конкретную зону, добавив название зоны после команды перезагрузки.
  • stats — сбрасывает текущую статистику named в файл /var/named/named.stats.
  • stop — останавливает сервер named, сохраняя все данные динамического обновления и инкрементной передачи зон (IXFR) перед выходом.

Для перезагрузки зон выполним:

# rndc reload

Затем проверим работу DNS сервера (IP-адрес нашего DNS 10.0.10.10) по обслуживанию зон прямого просмотра. Для этих целей будем использовать утилиту nslookup. Nslookup - это программа для опроса серверов доменных имен. Nslookup имеет два режима: интерактивный и неинтерактивный. Интерактивный режим позволяет пользователю запрашивать у серверов имен информацию о различных хостах и доменах или печатать список хостов в домене. Неинтерактивный режим используется для печати только имени и запрашиваемой информации для хоста или домена.

nslookup [-option] [name | -] [server]

Где, name — запрашиваемое имя, server — DNS сервер.

Для проверки работоспособности DNS сервера, выполним:

# nslookup lab.local 10.0.10.10
# nslookup ns1.lab.local 10.0.10.10
root@ns1:/home/user# nslookup lab.local 10.0.10.10\\
Server: 10.0.10.10\\
Address: 10.0.10.10#53\\
\\
Name: lab.local\\
Address: 10.0.0.1\\
\\
root@ns1:/home/user# nslookup ns1.lab.local 10.0.10.10\\
Server: 10.0.10.10\\
Address: 10.0.10.10#53\\
\\
Name: ns1.lab.local\\
Address: 10.0.10.10\\
root@ns1:/home/user#

Если вы увидели похожий вывод, то процесс настройки зоны прямого просмотра прошёл успешно.

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

2.2.1. Создание зоны обратного просмотра

Процесс настройки зоны обратного просмотра проходит аналогично зоне прямого просмотра.

Добавьте информацию о зоне в файл конфигурации /etc/bind/named.conf.local

// Do any local configuration here
// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";
zone "lab.local" {
        type master;
        file "/etc/bind/db.lab.local";
};
zone "10.in-addr.arpa" {
        type master;
        file "/etc/bind/db.10.in-addr.arpa";
};

2.2.2. Конфигурационный файл зоны

Создайте файл зоны /etc/bind/db.10.in-addr.arpa и откройте его.

Для создания файла используется команда:

# touch /etc/bind/db.10.in-addr.arpa

Добавьте в файл сведения о зоне 10.in-addr.arpa.

$TTL 604800
@       IN      SOA     lab.local. admin.lab.local. (
                        2301141855      ; Serial
                        604800          ; Refresh
                        86400           ; Retry
                        2419200         ; Expire
                        604800 )        ; Negative Cache TTL
;
@       IN      NS      ns1.lab.local.
1.0.0   IN      PTR     lab.local.
10.10.0 IN      PTR     ns1.lab.local.

Так как наша зона 10.0.0.0/8, то первый байт не указывается.

В итоге получается:

  • IP-адресу 10.0.0.1 соответствует зона lab.local
  • IP-адресу 10.0.10.10 соответствует узел ns1.lab.local

2.2.3. Проверка работоспособности DNS сервера

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

Перезапуск DNS сервера:

# systemctl reload bind9

Перезагрузка зон:

# rndc reload

root@debian:/home/user# systemctl reload bind9
root@debian:/home/user# rndc reload
server reload successful
root@debian:/home/user#

Затем проверим работу DNS сервера (IP-адрес нашего DNS 10.0.10.10) по обслуживанию зон обратного просмотра:

# nslookup 10.0.0.1 10.0.10.10
# nslookup 10.0.10.10 10.0.10.10

root@ns1:/home/user# nslookup 10.0.0.1 10.0.10.10
1.0.0.10.in-addr.arpa name = lab.local.

root@ns1:/home/user# nslookup 10.0.10.10 10.0.10.10
10.10.0.10.in-addr.arpa name = ns1.lab.local.
root@ns1:/home/user#

Если вы увидели похожий вывод, то процесс настройки зоны обратного просмотра прошёл успешно.

3. Настройка BIND9 вторичным DNS сервером (Secondary DNS)

3.1. Настройка BIND9

Необходимо настроить основные настройки BIND9, находящиеся в файле:

/etc/bind/named.conf.options

Откроем его в режиме редактирования:

options {
        directory "/var/cache/bind";
        // If there is a firewall between you and nameservers you want
        // to talk to, you may need to fix the firewall to allow multiple
        // ports to talk.  See http://www.kb.cert.org/vuls/id/800113
        // If your ISP provided one or more IP addresses for stable.
        // nameservers, you probably want to use them as forwarders...
        // Uncomment the following block, and insert the addresses replacing.
        // the all-0's placeholder.
        forwarders {
                94.232.137.104;
                94.232.137.105;
        };
        //==============================================================
        // If BIND logs error messages about the root key being expired,
        // you will need to update your keys.  See https://www.isc.org/bind-keys
        //===============================
        dnssec-validation auto;
        //listen-on-v6 { any; };
        listen-on {
                10.0.20.10;
        };
        allow-query {
                10.0.0.0/8;
        };
};

3.2. Настройка зон прямого и обратного просмотра первичного DNS сервера

Первое что необходимо сделать это добавить в файл конфигурации зоны первичного сервера сведения о вторичном сервере. Для этого редактируем файл конфигурации /etc/bind/named.conf.local первичного DNS сервера (ns1). Необходимо внести изменения как указано на иллюстрации:

// Do any local configuration here
// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";
zone "lab.local" {
        type master;
        file "/etc/bind/db.lab.local";
        allow-transfer {
                10.0.20.10;
        };
        also-notify {
                10.0.20.10;
        };
};
zone "10.in-addr.arpa" {
        type master;
        file "/etc/bind/db.10.in-addr.arpa";
        allow-transfer {
                10.0.20.10;
        };
        also-notify {
                10.0.20.10;
        };
};

И перезапускаем DNS сервер:

# systemctl reload bind9

3.3. Настройка зон прямого и обратного просмотра вторичного DNS сервера

Теперь необходимо добавить информацию о зоне в файл конфигурации /etc/bind/named.conf.local вторичного DNS сервера. Мы должны указать типы зоны как slave, и IP-адрес первичного DNS сервера. В результате должно получиться:

// Do any local configuration here
// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";
zone "lab.local" {
        type slave;
        file "db.lab.local";
        masters {
                10.0.10.10;
        };
};
zone "10.in-addr.arpa" {
        type slave;
        file "db.10.in-addr.arpa";
        masters {
                10.0.10.10;
        };
};

Обратите внимание, что конфигурационные файлы зон не имеют полного пути db.lab.local и db.10.in-addr.arpa, как у первичного DNS сервера. Это связано с тем, что демон named не может писать в каталог /etc/bind, а только в каталог /var/cache/bind указанный в файле конфигурации.

3.4. Проверка работоспособности вторичного DNS сервера

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

Перезапуск DNS сервера:

# systemctl reload bind9

Перезагрузка зон:

# rndc reload

root@debian:/home/user# systemctl reload bind9
root@debian:/home/user# rndc reload
server reload successful
root@debian:/home/user#

Затем проверим работу DNS сервера (IP-адрес нашего вторичного DNS 10.0.20.10):

# nslookup lab.local 10.0.20.10
# nslookup ns1.lab.local 10.0.20.10
# nslookup 10.0.0.1 10.0.20.10
# nslookup 10.0.10.10 10.0.20.10

Если вы увидели похожий вывод, то процесс настройки вторичного DNS сервера прошёл успешно.

Далее самостоятельно добавьте сведения о доменном имени вторичного DNS сервера: ns2.lab.local, IP: 10.0.20.10. Помните, что при внесении каких-либо изменений в зоны, необходимо изменять в большую сторону их серийный номер, иначе эти изменения не будут восприняты вторичным DNS сервером.

rias/dnsdebian11.1779396382.txt.gz · Последнее изменение: — admin1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki