Настройка DNS-сервера с Bind9 на VPS: пошаговое руководство

ГлавнаяНастройка DNS-сервера с Bind9 на VPS: пошаговое руководство

Содержание

Когда я впервые столкнулась с задачей развернуть свой DNS-сервер на VPS, мне показалось, что это что-то из мира сетевой магии. Но на деле — всё гораздо проще, особенно если выбрать проверенное решение, такое как Bind9. В этой статье я расскажу, как настроить DNS-сервер на Ubuntu с помощью Bind9, на что обратить внимание и как избежать типичных ошибок. Всё проверено на собственном опыте.


Зачем вообще свой DNS-сервер?

Обычно VPS уже работает с DNS от провайдера, но иногда возникает необходимость в собственном DNS-сервере:

  • Вы хотите полную автономность и не зависеть от внешних служб;
  • Нужно развернуть приватную сеть или VPN с внутренними доменами;
  • Есть необходимость управлять зонами DNS вручную (например, при работе с корпоративным доменом);
  • Хотите повысить скорость отклика для локальных клиентов или интегрировать DNS в систему мониторинга и безопасности.

Что такое Bind9 и почему он?

Bind9 — один из самых старых и стабильных DNS-серверов в Linux-среде. Поддерживает:

  • DNSSEC;
  • Зоны прямого и обратного разрешения;
  • IPv6;
  • Slave/Primary архитектуру;
  • Высокую гибкость конфигурации.

Если вам нужно надёжное, хорошо документированное решение — Bind9 для Ubuntu или Debian подойдёт идеально.


Установка Bind9 на Ubuntu VPS

Первым делом подключаемся к нашему серверу по SSH и обновляем систему:

sudo apt update && sudo apt upgrade -y

Теперь устанавливаем Bind9 и утилиты для работы с DNS:

sudo apt install bind9 bind9utils bind9-doc -y

Проверим, что сервис запущен:

sudo systemctl status bind9

Если всё в порядке — переходим к настройке.


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

Файлы конфигурации хранятся в /etc/bind. Главное, что нам нужно:

  1. named.conf.options
  2. named.conf.local
  3. Зональные файлы в /var/cache/bind или /etc/bind/zones

Создаём директорию для зон, если её нет:

sudo mkdir /etc/bind/zones
Пример: настройка прямой зоны

Редактируем named.conf.local:

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

Создаём файл зоны:

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

Пример содержимого:

$TTL 604800
@   IN  SOA ns1.example.local. admin.example.local. (
            2 ; Serial
        604800 ; Refresh
         86400 ; Retry
       2419200 ; Expire
        604800 ) ; Negative Cache TTL
;
@       IN  NS      ns1.example.local.
ns1     IN  A       192.168.1.10
www     IN  A       192.168.1.20

Проверяем синтаксис:

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

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

sudo systemctl restart bind9

Настройка DNS клиента на Ubuntu

Если вы хотите, чтобы сам сервер использовал локальный DNS, пропишите его в netplan или в /etc/systemd/resolved.conf, либо напрямую в /etc/resolv.conf (хотя он может быть перезаписан):

nameserver 127.0.0.1

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

sudo nano /etc/systemd/resolved.conf

И задайте:

DNS=127.0.0.1
FallbackDNS=1.1.1.1 8.8.8.8

Перезапустите службу:

sudo systemctl restart systemd-resolved

Установка обратной зоны (Reverse DNS)

Если вы хотите настроить PTR-записи, добавьте в named.conf.local:

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

И создайте файл зоны db.192:

$TTL 604800
@       IN      SOA     ns1.example.local. admin.example.local. (
                              1         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      ns1.example.local.
10      IN      PTR     ns1.example.local.
20      IN      PTR     www.example.local.

Проверка и отладка

После настройки проверьте работу DNS:

dig @127.0.0.1 example.local

или

nslookup www.example.local 127.0.0.1

Проверьте лог ошибок:

sudo journalctl -u bind9

Возможные проблемы

  • “permission denied” при запуске — проверьте права и SELinux (если используете CentOS или AlmaLinux).
  • “zone not loaded” — ошибка в конфигурации зоны или пути к файлу.
  • 127.0.0.1 не отвечает — убедитесь, что bind9 слушает на localhost, проверьте файл named.conf.options и настройку интерфейсов.

Так что…

Настроить DNS-сервер на VPS с помощью Bind9 — задача вполне по силам даже для начинающих. Главное — не бояться копаться в конфигурации, проверять всё пошагово и не забывать перезапускать службы после изменений.

Свой DNS-сервер даёт контроль, скорость и независимость — особенно если вы разворачиваете инфраструктуру с несколькими сервисами или хотите повысить устойчивость.


Если вы дошли до этого момента — вы точно готовы управлять своим DNS-сервером!