- Основные требования
- Подготовка сервера
- Как установить DNS-сервер
- Как настроить DNS-сервер
- Основные глобальные опции BIND
- Тестирование работоспособности
- Типы зон в BIND
- Рекомендации по настройке DNS-сервера без ISPmanager
- Заключение
DNS (Domain Name System) — это система, которая переводит доменные имена (например, example.com) в IP-адреса (например, 203.0.113.5).
Когда вы пользуетесь чужим DNS (например, провайдера или публичного), вы зависите от его производительности, стабильности, ограничений, политики логирования и скорости обновления записей.
Собственный DNS-сервер нужен, если:
- провайдер не предоставляет возможность использования кастомных DNS;
- вы хотите иметь полный контроль над зонами (записями A, MX, CNAME и т.д.);
- нужны приватные внутренние зоны (для вашей инфраструктуры, закрытой сети);
- важна быстрая реакция на изменения записей и отказоустойчивость;
- вы хотите повысить безопасность и гибкость управления (например, фильтрация запросов, ограничения, кеширование).
В этой статье разберем, как самостоятельно создать и настроить DNS-сервер без использования ISPmanager
Основные требования
Перед установкой и настройкой DNS-сервера важно убедиться, что серверная среда соответствует базовым требованиям и правильно подготовлена. От этого зависит стабильность работы и доступность DNS-запросов:
- Выделенный сервер или VPS. Подойдет любая современная версия Linux — чаще всего используют Ubuntu/Debian или CentOS/RHEL.
- IP-адреса. Для полноценной работы DNS желательно иметь как минимум два адреса: один для основного, другой для вторичного сервера.
- Открытый порт 53. DNS работает на порту 53 по протоколам UDP и TCP. Нужно убедиться, что этот порт доступен извне и не блокируется брандмауэром или провайдером.
- Операционная система на базе Linux. Подойдут популярные дистрибутивы вроде Ubuntu, Debian, CentOS или AlmaLinux. Они поддерживают BIND и другие DNS-сервисы.
- Минимальные ресурсы. Для базового DNS достаточно 1 CPU, 512 МБ RAM и 5–10 ГБ дискового пространства. При высокой нагрузке ресурсы следует увеличить.
Подготовка сервера
Ubuntu / Debian
Обновите пакеты:
Разрешите входящие соединения на порт 53:
iptables -I INPUT -p tcp --dport 53 -j ACCEPT
iptables-save
CentOS / RHEL
Выполните обновление системы:
yum update -y
Установите и настройте синхронизацию времени (важно для корректной работы зон):
systemctl enable chronyd --now
timedatectl set-timezone Europe/Moscow # замените на вашу временную зону
Разрешите DNS-трафик в брандмауэре:
firewall-cmd --permanent --add-port=53/tcp
firewall-cmd --reload
Как установить DNS-сервер
Для развертывания собственного DNS чаще всего используется BIND9 — один из самых популярных и стабильных серверов доменных имен. Его установка не занимает много времени, но различается в зависимости от дистрибутива Linux.
Установка на Ubuntu/Debian
Установите необходимые пакеты:
Добавьте сервис в автозагрузку:
Запустите BIND 9:
Проверьте статус:
В выводе должно отображаться состояние active (running).
Установка на CentOS/RHEL
Установите пакет BIND:
Добавьте службу в автозагрузку:
Запустите сервис:
Проверьте статус работы:
В случае успешной установки и запуска статус будет active (running).
Как настроить DNS-сервер
Теперь необходимо выполнить базовую настройку, чтобы сервер начал обрабатывать DNS-запросы. Основные параметры указываются в конфигурационных файлах.
Настройка на Ubuntu/Debian
Откройте основной файл параметров:
Укажите, на каких сетях сервер будет слушать запросы:
10.10.10.0/24;
10.1.0.0/16;
};
Если хотите, чтобы DNS работал на всех интерфейсах, параметр можно опустить или указать any.
Определите, кто может отправлять запросы:
Вместо any можно ограничить доступ, добавив только доверенные сети.
Сохраните изменения и перезапустите службу:
Настройка на CentOS/RHEL
Откройте конфигурацию:
Найдите строку с интерфейсами и укажите IP сервера:
Чтобы сервер отвечал на всех интерфейсах, используйте any.
Задайте правила доступа к запросам:
При необходимости ограничьте доступ для определенной подсети, например:
Примените настройки:
Основные глобальные опции BIND
При настройке DNS-сервера в BIND многие ключевые опции указываются в глобальной конфигурации. Они определяют, как будет работать сервер: какие запросы обрабатывать, куда перенаправлять неопознанные домены и кому разрешать доступ.
Какие есть опции:
Опция | Назначение | Пример |
directory | Рабочая директория, где хранятся файлы зон. Если не указана — используется /var/named | directory "/var/named"; |
forwarders | Серверы, на которые перенаправляются запросы, если DNS не обслуживает их локально | forwarders { 8.8.8.8; 8.8.4.4; }; |
forward | Логика работы с forwarders: FIRST — сначала к форвардерам, потом локальные зоны; ONLY — только форвардеры | forward only; |
listen-on | Интерфейсы и IP-адреса, на которых сервер принимает запросы | listen-on { any; }; |
allow-query | Список клиентов, которым разрешено выполнять запросы | allow-query { any; }; |
allow-transfer | Определяет, каким серверам разрешено получать копии зон | allow-transfer { 192.168.1.2; }; |
allow-notify | Серверы, от которых принимаются уведомления об изменениях зон | allow-notify { 192.168.1.2; }; |
allow-recursion | Клиенты, которым разрешено выполнять рекурсивные запросы. По умолчанию доступ открыт для всех, но рекомендуется ограничивать | allow-recursion { 192.168.1.0/24; }; |
Они позволяют задать базовую политику работы DNS-сервера: ограничить доступ, указать доверенные сети и задать маршрутизацию запросов.
Тестирование работоспособности
После установки и настройки важно проверить, что DNS-сервер корректно отвечает на запросы. Для этого можно использовать стандартные утилиты командной строки — nslookup и dig.
Проверка с помощью nslookup
Отправьте запрос с другого компьютера, указав IP-адрес вашего DNS-сервера:
Эта команда пытается получить IP-адрес домена site-example.com, обратившись напрямую к DNS-серверу по адресу 192.172.160.14. Если все настроено правильно, в ответе вы увидите корректный IP.
Проверка с помощью dig
Утилита dig дает более подробную информацию о работе сервера:
В выводе будут отображены:
- запрошенный домен;
- IP-адрес, который вернул DNS;
- время отклика сервера;
- дополнительная информация (например, TTL записи).
Типы зон в BIND
Поздравляем, вы выполнили базовую настройку DNS-сервера, и теперь он готов к работе. Однако его функциональность определяют зоны.
Зона — это набор записей, которые описывают домены и хосты. В BIND существует несколько типов зон:
- Первичная зона. Основная база домена. Все записи (A, AAAA, MX, CNAME, TXT и другие) редактируются здесь. Этот сервер отвечает за распространение изменений на вторичные DNS. В конфигурации обозначается директивой type master;.
- Вторичная зона. Получает данные от первичного сервера через механизм зонных передач (AXFR или IXFR). Вторичные зоны необходимы для отказоустойчивости и распределения нагрузки. В конфиге указывается type slave; и IP-адрес мастера.
- Зона-заглушка. Хранит только список NS-записей для перенаправления запросов. Это облегченный вариант, который полезен при сложных сетевых схемах или иерархии доменов.
- Кеширующая зона. Не содержит собственных записей, но хранит ответы на выполненные ранее запросы. Это ускоряет повторные обращения и снижает нагрузку на внешние DNS.
- Перенаправляющая зона. Не всегда упоминается, но часто используется на практике. Все запросы передаются на указанные внешние DNS-серверы (например, Google DNS или Cloudflare).
Зоны позволяют структурировать работу DNS и упростить администрирование:
- в локальной сети можно настроить собственный домен (например, corp.local), чтобы обращаться к серверам по именам вместо IP;
- наличие вторичной зоны гарантирует доступность домена даже при падении основного сервера;
- кеширующий сервер помогает ускорить работу пользователей в офисе, уменьшая количество повторных обращений к внешним DNS.
Пример минимальной первичной зоны:
Файл зоны /etc/bind/db.example.com (Ubuntu/Debian)
@ IN SOA ns1.example.com. admin.example.com. (
2025092501 ; serial
3600 ; refresh
1800 ; retry
1209600 ; expire
86400 ) ; minimum
IN NS ns2.example.com.
ns2 IN A 192.0.2.2
www IN A 192.0.2.10
mail IN A 192.0.2.20
IN MX 10 mail.example.com.
Где:
- SOA описывает авторитетный сервер и параметры зоны;
- NS задают список DNS-серверов;
- A связывают имена хостов с IP;
- MX указывает сервер для почты.
Рекомендации по настройке DNS-сервера без ISPmanager
Работая с DNS-сервером напрямую, без панели управления, стоит учитывать несколько практических моментов, которые помогут избежать ошибок и сделают обслуживание удобнее.
- Следите за файлами зон. Лучше всего хранить их в понятной структуре и давать им осмысленные имена. Так проще ориентироваться при изменениях.
- Не забывайте про серийный номер в SOA-записи. При каждом изменении зоны его нужно увеличивать, иначе новые данные не будут подхвачены вторичными серверами.
- Используйте вторичный сервер. Даже если нагрузка невысокая, резервный DNS обеспечит отказоустойчивость и стабильность работы.
- Ограничивайте доступ. Не давайте рекурсивные запросы и зонные передачи всем подряд — указывайте только нужные сети и конкретные адреса.
- Добавьте форвардеры. Укажите несколько внешних DNS (например, Google Public DNS или Cloudflare), чтобы сервер корректно обрабатывал запросы к неизвестным доменам.
- Автоматизируйте рутинные задачи. Перезагрузка службы после изменений, проверка синтаксиса конфигурации и обновления пакетов легко выносятся в скрипты.
- Следите за логами. Ошибки синтаксиса или проблемы с зонами быстро выявляются через журналы системы.
- Делайте резервные копии. Конфигурационные файлы и зоны лучше сохранять отдельно, чтобы в случае сбоя можно было быстро восстановить работу.
- Документируйте настройки. Даже простая заметка с IP-адресами, списком зон и особенностями конфигурации упростит сопровождение в будущем.
Заключение
Создать и настроить собственный DNS-сервер без ISPmanager не так сложно, как может показаться. Достаточно подготовить сервер, установить BIND, внести базовые настройки и проверить работу с помощью простых утилит. Этот сервер даст больше контроля над доменными именами и позволит гибко управлять инфраструктурой.