6.12 Установка DNS-сервера на примере BIND9

TheHost DNS Banner

BIND9 – это мощное и широко используемое программное обеспечение для DNS-серверов. Оно позволяет управлять доменными именами и их разрешением в IP-адреса, что является ключевым элементом работы интернета.

Установка и настройка DNS-сервера также является обязательной частью для выполнения привязки Вашего виртуального сервера к нашим NS, чтобы управлять записями домена непосредственно на сервере все еще используя наши NS даже без панели управления. Детальнее про сам процесс в инструкции, про требования к настройке во втором параграфе этой статьи.

Пошаговая инструкция на примере Ubuntu 22.04

В этом руководстве мы рассмотрим процесс установки и базовой настройки BIND9 на чистом сервере Ubuntu 22.04. Также актуальна для Ubuntu 16.04, Ubuntu 18.04, Ubuntu 20.04 и Ubuntu 24.04.

Для установки потребуется доступ root.

Обновление системы и установка сервиса

Первым шагом обновите уже существующие системные пакеты:

sudo apt update && sudo apt upgrade -y

Установите BIND9 и необходимые утилиты:

sudo apt install bind9 bind9utils bind9-doc -y

После чего, убедитесь, что служба BIND9 запущена:

sudo systemctl status bind9

Если служба не активна, запустите её:

sudo systemctl start bind9

Настройка брандмауэра

Откройте порт 53 для DNS-запросов:

Пример для UFW
sudo ufw allow 53/tcp
sudo ufw allow 53/udp
Пример для Iptables
sudo iptables -I INPUT -p tcp -m tcp --dport 53 -j ACCEPT
sudo iptables -I INPUT -p udp -m tcp --dport 53 -j ACCEPT

Учтите: процесс открытия портов может отличаться в зависимости от используемого брандмауэра. Порты также могут быть закрыты со стороны провайдера услуг (у нас они открыты).

Перезапуск сервиса

Перезапустите BIND9:

sudo systemctl restart bind9

Убедитесь, что служба работает корректно с помощью проверки статуса:

sudo systemctl status bind9

Настройка DNS-конфигурации домена

Откройте основной файл конфигурации:

sudo nano /etc/bind/named.conf.local

Добавьте блок зоны, указав Ваш домен и путь к файлу зоны:

zone "example.com" {
    type master;
    file "/etc/bind/zones/db.example.com";
};

Объяснение:

  • "example.com" – имя Вашего домена.
  • type master указывает, что сервер является главным для этой зоны.
  • file указывает путь к файлу, где хранится информация о зоне.

Создайте папку для файлов зон (если её нет):

sudo mkdir -p /etc/bind/zones

Создайте файл зоны:

sudo nano /etc/bind/zones/db.example.com

И заполните его следующим образом:

$TTL    604800
@       IN      SOA     ns1.thehost.ua. admin.example.com. (
                          2024101001 ; Serial
                          604800     ; Refresh
                          86400      ; Retry
                          2419200    ; Expire
                          604800 )   ; Negative Cache TTL

; Name servers
@       IN      NS      ns1.thehost.ua.
@       IN      NS      ns2.thehost.net.
@       IN      NS      ns3.thehost.biz.
@       IN      NS      ns4.thehost.pro.

; A records
example.com.     IN      A       192.0.2.1
www     IN      A       192.0.2.2

Замените example.com., 192.0.2.1, и 192.0.2.2 на Ваш домен, и IP-адреса. Если Вы не используете на сервере наши NS, также смените их список и ns1.thehost.ua. в SOA-записе.

Совет: при необходимости, можете сразу заполнить файл зоны и другими DNS-записями с помощью инструкции.

Проверка конфигурации

Проверьте синтаксис конфигурации:

sudo named-checkconf

Проверьте зоны:

sudo named-checkzone example.com /etc/bind/zones/db.example.com

Система оповестит Вас в случае наличия ошибок в конфигурации.

Настройка обратной зоны (PTR-записи)

Внимание: раздел о настройке PTR является НЕАКТУАЛЬНЫМ для любых из наших услуг и носит образовательный характер. Если Ваша услуга размещена у нас, управление PTR выполняется по инструкции.

Обратная зона используется для преобразования IP-адресов в имена доменов (PTR-записи). Это полезно для работы с системами, которым необходимо удостовериться в обратном соответствии (например, почтовыми серверами).

В файле /etc/bind/named.conf.local добавьте блок:

zone "2.0.192.in-addr.arpa" {
    type master;
    file "/etc/bind/zones/db.192.0.2";
};

Создайте файл обратной зоны:

sudo nano /etc/bind/zones/db.192.0.2

Заполните его:

$TTL    604800
@       IN      SOA     ns1.example.com. admin.example.com. (
                          2024101001 ; Serial
                          604800     ; Refresh
                          86400      ; Retry
                          2419200    ; Expire
                          604800 )   ; Negative Cache TTL

; Name servers
@       IN      NS      ns1.example.com.

; PTR records
0       IN      PTR     ns1.example.com.
1       IN      PTR     www.example.com.

Замените www.example.com. иns1.example.com. на необходимые Вам значения.

Проверить целостность файла обратной зоны можно следующей командой:

sudo named-checkzone 2.0.192.in-addr.arpa /etc/bind/zones/db.192.0.2

Последний тест

Проверьте разрешение доменного имени:

dig @127.0.0.1 example.com

Проверьте PTR-запись:

dig @127.0.0.1 -x 127.0.0.1

Привязка к нашим NS на VPS

Наличие работающего DNS-сервера на Вашем виртуальном сервере позволяет привязать и синхронизировать его работу с нашими NS.

Для выполнения привязки от Вашего DNS-сервера требуется соблюсти следующие условия:

  • Наши неймсервера. Для выполнения привязки у домена должны быть указаны наши неймсервера в соответствующих файлах конфигурации.
  • Директива allow-transfer. Директива allow-transfer в файлах конфигурации в файле /etc/bind/named.conf.options (и в файлах зон) должна быть НЕ указана. Либо, в крайнем случае, указано следующим образом:
allow-transfer {
    91.223.180.14;
    46.4.57.177;
    176.111.63.45;
    94.130.133.155;
    2a0c:f00::1:14;
    2a01:4f8:140:14c8::7;
    2a01:4f8:13b:365b::155;
};

Что не рекомендуется из-за маловероятной, но возможной смены списка IP-адресов наших NS.

  • Привязка в панели VM-Cloud. Если вышеуказанные условия соблюдены и сервис BIND работает успешно, Вам все еще необходимо выполнить алгоритм привязки описанный в следующей статье.

После выполнения алгоритма действий описанного в статье, панель управления виртуальным сервером сможет вытягивать актуальные записи доменов сделанные локально на Вашем VPS и транслировать их на наши NS. В самой панели успешно припаркованный домен будет выглядеть следующим образом:

Привязка к NS, VM-CLOUD