Давайте дружить в Телеграме: рассказываем про новые фичи, общаемся в комментах, прислушиваемся к вашим идеям Подписаться

Настройка DNS-сервера без ISPmanager

Команда Timeweb Cloud
Команда Timeweb Cloud
Наши инженеры, технические писатели, редакторы и маркетологи
14 февраля 2022 г.
522
5 минут чтения
Средний рейтинг статьи: 5

Собственный DNS-сервер пригодится, если провайдер не предоставляет такую услугу или вам не подходят существующие решения. Проще всего настроить его через панель управления. Но можно обойтись и без нее, используя терминал и Linux DNS Server BIND 9.

Настройка Dns Сервера Без ISP manager

Подготовка сервера

Допустим, вы заказали виртуальный сервер на timeweb.cloud и хотите использовать свои DNS servers. Для этого нужно выполнить два условия:

  1. Заказать дополнительный IP-адрес. Для настройки DNS требуется как минимум два айпи.
  2. Открыть DNS-порт 53, который нужен для работы сервера имен.

Ubuntu/Debian

Обновите список пакетов:

apt update

Разрешите в брандмауэре входящие пакеты на порт 53 UDP:

iptables -I INPUT -p udp --dport 53 -j ACCEPT

Сохраните параметры:

iptables-save

CentOS

Установите обновления:

yum update

Установите утилиту для синхронизации времени:

yum install chrony

Настройте временную зону. В данном случае — московское время:

timedatectl set-timezone Europe/Moscow

Разрешите и запустите сервис синхронизации:

systemctl enable chronyd --now

Откройте порт 53:

firewall-cmd --permanent --add-port=53/udp

Примените обновленные параметры:

firewall-cmd --reload

Установка DNS-сервера

В этом руководстве для создания IP DNS будет использован BIND 9.

Ubuntu/Debian

Установите необходимое ПО:

apt-get install bind9 dnsutils

Добавьте его в список автозагрузки:

systemctl enable bind9

Запустите сервис:

systemctl start bind9

Проверьте, что все работает:

systemctl status bind9

В выводе будет указано состояние active.

CentOS

Установите утилиту для организации ДНС:

yum install bind

Разрешите автозапуск:

systemctl enable named

Запустите установленный сервис:

systemctl start named

Проверьте, что он работает:

systemctl status named

В выводе будет указано состояние active.

Базовая настройка DNS-сервера

Параметры нужно указать в файле конфигурации. 

Ubuntu/Debian

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

vi /etc/bind/named.conf.options

В строке listen-on укажите сети, которые необходимо обслуживать. Например:

listen-on {
10.10.10.0/24;
10.1.0.0/16;
...
};

Если нужно, чтобы ДНС работал по всем адресам, не указывайте параметр или задайте ему значение any.

В строке allow-query укажите, кому разрешено выполнять запросы. Можно разрешить всем, вписав any, или добавить конкретные адреса и сети:

allow-query { any; };

Перезапустите службу, чтобы новая конфигурация заработала:

systemctl restart bind9

CentOS

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

vi /etc/named.conf

Найдите строки:

listen-on port 53 { 127.0.0.1; localhost; 192.172.160.14; };
...
allow-query     { any; };

В строке listen-on port 53 после localhost укажите ДНС-адрес. Это IP, на котором хост будет принимать запросы. Если нужно, чтобы ДНС работал по всем адресам, не указывайте параметр или задайте ему any.

В строке allow-query настраиваются разрешения. Значение any разрешает выполнять запросы всем. Можно установить ограничение для конкретной сети, указав, например, 192.172.160.0/24.

Примените конфигурацию:

systemctl restart named

Глобальные опции

Для базовой настройки достаточно указать в файле конфигурации несколько опций. Но есть другие глобальные параметры, которые помогают тонко настроить состояние и поведение хоста.

Аргумент

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

directory

Рабочая директория. Можно не указывать явно, в таком случае будет использован каталог по умолчанию — /var/named

forwarders

На них перенаправляются обращения, не обработанные вашим DNS. Например, можно указать гугловские: 


forwarders {
8.8.8.8;
8.8.4.4;
};

forward

Доступны два состояния — FIRST и ONLY. Если выставить FIRST, то сначала обращение будет перенаправлено, только после неуспешной обработки начнется проверка внутренней базы. При ONLY сервер не ищет совпадения в локальных зонах

listen-on

Интерфейсы, на которых слушает BIND. В нашем случае это порт 53 UDP

allow-transfer

Хосты, на которые разрешаются зонные передачи

allow-query

Серверы, с которых можно отправлять запросы

allow-notify

Хосты, которым можно отправлять уведомления, если настройки зоны изменятся

allow-recursion

Хосты, которые могут делать рекурсивные запросы. По умолчанию рекурсия разрешена без ограничений

Проверка

Чтобы убедиться в том, что ДНС-серверы принимают обращения от клиентов, используйте утилиту nslookup

Отправьте запрос с другого компьютера. Например:

nslookup site-example.com 192.172.160.14

Цель этой команды — узнать IP-адрес сайта site-example.com через ДНС 192.172.160.14.

Можно также использовать утилиту dig. Синтаксис очень похожий:

dig @192.172.160.14 site-example.com 

Здесь проверка DNS выполняется аналогичным образом. Отличается только синтаксис команды.

Зоны BIND

Базовая настройка сервера завершена. Но использовать его можно по-разному. Для этого настраиваются зоны:

  • Первичная — вы пополняете и редактируете базу доменов на текущем хосте.
  • Вторичная — есть сервер с первичной зоной, этот хост забирает с него настройки.
  • Заглушка — хранятся только записи NS, которые используются для перенаправления на хосты.
  • Кеширующая — не хранятся записи, есть только результаты обработанных запросов, которые ускоряют работу при повторных обращениях.

Управление зонами также выполняется в файле конфигурации. Это отдельная большая тема. Создание собственной зоны позволит назначить понятные имена для каждого хоста. Это актуально, когда узлов становится много и обращаться к ним по IP-адресам становится неудобно.

Зарегистрируйтесь и начните пользоваться
сервисами Timeweb Cloud прямо сейчас

15 лет опыта
Сосредоточьтесь на своей работе: об остальном позаботимся мы
165 000 клиентов
Нам доверяют частные лица и компании, от небольших фирм до корпораций
Поддержка 24/7
100+ специалистов поддержки, готовых помочь в чате, тикете и по телефону