Когда я впервые столкнулась с задачей развернуть свой 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
named.conf.options
named.conf.local
- Зональные файлы в или
/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-сервером!