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

TheHost DNS BIND Banner

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

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

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

В этом руководстве мы рассмотрим процесс установки и базовой настройки BIND9 на чистом сервере Ubuntu 22.

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

1. Обновите систему:

sudo apt update && sudo apt upgrade -y

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

sudo apt install bind9 bind9utils bind9-doc -y

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

sudo systemctl status bind9

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

sudo systemctl start bind9

Настройка конфигурации зоны

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

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

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

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

Объяснение:

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

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

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-записями с помощью инструкции.

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

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

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

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

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

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

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. на необходимые Вам значения.

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

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

sudo named-checkconf

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

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

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

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

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

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

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

Перезапуск службы

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

sudo systemctl restart bind9

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

sudo systemctl status bind9

Тестирование

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

dig @192.0.2.1 example.com

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

dig @192.0.2.1 -x 192.0.2.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 работает успешно, Вам все еще необходимо выполнить алгоритм привязки описанный в следующей статье.