Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.
Кратко о задаче
Допустим, вы заказали виртуальный сервер на Simple-Server и хотите использовать свои DNS servers. Для этого нужно выполнить два условия:
- Заказать дополнительный IP-адрес. Для настройки DNS требуется как минимум два айпи.
- Открыть DNS-порт 53, который нужен для работы сервера имен.
Разрешите в брандмауэре входящие пакеты на порт 53 UDP:
iptables -I INPUT -p udp --dport 53 -j ACCEPTУстановите утилиту для синхронизации времени:
Настройте временную зону. В данном случае — московское время:
timedatectl set-timezone Europe/MoscowРазрешите и запустите сервис синхронизации:
systemctl enable chronyd --now
firewall-cmd --permanent --add-port=53/udpПримените обновленные параметры:
В этом руководстве для создания IP DNS**** будет использован BIND 9.
Установите необходимое ПО:
apt-get install bind9 dnsutilsДобавьте его в список автозагрузки:
Проверьте, что все работает:
В выводе будет указано состояние active.
Установите утилиту для организации ДНС:
Запустите установленный сервис:
Проверьте, что он работает:
В выводе будет указано состояние active.
Базовая настройка DNS-сервера
Параметры нужно указать в файле конфигурации.
Откройте файл конфигурации:
vi /etc/bind/named.conf.optionsВ строке listen-on укажите сети, которые необходимо обслуживать. Например:
listen-on {
10.10.10.0/24;
10.1.0.0/16;
...
};Если нужно, чтобы ДНС работал по всем адресам, не указывайте параметр или задайте ему значение any.
В строке allow-query укажите, кому разрешено выполнять запросы. Можно разрешить всем, вписав any, или добавить конкретные адреса и сети:
Перезапустите службу, чтобы новая конфигурация заработала:
Откройте файл конфигурации:
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.
Для базовой настройки достаточно указать в файле конфигурации несколько опций. Но есть другие глобальные параметры, которые помогают тонко настроить состояние и поведение хоста.
| Аргумент | Что настраивает |
|---|---|
| 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 | Хосты, которые могут делать рекурсивные запросы. По умолчанию рекурсия разрешена без ограничений
Рабочая директория. Можно не указывать явно, в таком случае будет использован каталог по умолчанию — /var/named
На них перенаправляются обращения, не обработанные вашим DNS. Например, можно указать гугловские:
forwarders {
8.8.8.8;
8.8.4.4;
};Доступны два состояния — FIRST и ONLY. Если выставить FIRST, то сначала обращение будет перенаправлено, только после неуспешной обработки начнется проверка внутренней базы. При ONLY сервер не ищет совпадения в локальных зонах
Интерфейсы, на которых слушает BIND. В нашем случае это порт 53 UDP
Хосты, на которые разрешаются зонные передачи
Серверы, с которых можно отправлять запросы
Хосты, которым можно отправлять уведомления, если настройки зоны изменятся
Хосты, которые могут делать рекурсивные запросы. По умолчанию рекурсия разрешена без ограничений
Чтобы убедиться в том, что ДНС-серверы принимают обращения от клиентов, используйте утилиту 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**** выполняется аналогичным образом. Отличается только синтаксис команды.
Базовая**** настройка сервера**** завершена. Но использовать его можно по-разному. Для этого настраиваются зоны:
- Первичная — вы пополняете и редактируете базу доменов на текущем хосте.
- Вторичная — есть сервер с первичной зоной, этот хост забирает с него настройки.
- Заглушка — хранятся только записи NS, которые используются для перенаправления на хосты.
- Кеширующая — не хранятся записи, есть только результаты обработанных запросов, которые ускоряют работу при повторных обращениях.
Управление зонами также выполняется в файле конфигурации. Это отдельная большая тема. Создание собственной зоны позволит назначить понятные имена для каждого хоста. Это актуально, когда узлов становится много и обращаться к ним по IP-адресам становится неудобно.
Нужен сервер для практики? Арендуйте VPS/VDS в России — root-доступ, NVMe, DDoS-защита и поддержка 24/7.