6.12 Установка DNS-сервера на примере BIND9
BIND9 – это мощное и широко используемое программное обеспечение для DNS-серверов. Оно позволяет управлять доменными именами и их разрешением в IP-адреса, что является ключевым элементом работы интернета.
Установка и настройка DNS-сервера также является обязательной частью для выполнения привязки Вашего виртуального сервера к нашим NS, чтобы управлять записями домена непосредственно на сервере все еще используя наши NS даже без панели управления. Детальнее про сам процесс в инструкции, про требования к настройке во втором параграфе этой статьи.
Пошаговая инструкция на примере Ubuntu 22.04
В этом руководстве мы рассмотрим процесс установки и базовой настройки BIND9 на чистом сервере Ubuntu 22.04. Также актуальна для Ubuntu 16.04, Ubuntu 18.04, Ubuntu 20.04 и Ubuntu 24.04.
Для установки потребуется доступ root.
Обновление системы и установка сервиса
Первым шагом обновите уже существующие системные пакеты:
sudo apt update && sudo apt upgrade -y
Установите BIND9 и необходимые утилиты:
sudo apt install bind9 bind9utils bind9-doc -y
После чего, убедитесь, что служба BIND9 запущена:
sudo systemctl status bind9
Если служба не активна, запустите её:
sudo systemctl start bind9
Настройка брандмауэра
Откройте порт 53 для DNS-запросов:
sudo ufw allow 53/tcp
sudo ufw allow 53/udp
sudo iptables -I INPUT -p tcp -m tcp --dport 53 -j ACCEPT
sudo iptables -I INPUT -p udp -m tcp --dport 53 -j ACCEPT
Учтите: процесс открытия портов может отличаться в зависимости от используемого брандмауэра. Порты также могут быть закрыты со стороны провайдера услуг (у нас они открыты).
Перезапуск сервиса
Перезапустите BIND9:
sudo systemctl restart bind9
Убедитесь, что служба работает корректно с помощью проверки статуса:
sudo systemctl status bind9
Настройка DNS-конфигурации домена
Откройте основной файл конфигурации:
sudo nano /etc/bind/named.conf.local
Добавьте блок зоны, указав Ваш домен и путь к файлу зоны:
zone "example.com" {
type master;
file "/etc/bind/zones/db.example.com";
};
Объяснение:
"example.com"
– имя Вашего домена.type master
указывает, что сервер является главным для этой зоны.file
указывает путь к файлу, где хранится информация о зоне.
Создайте папку для файлов зон (если её нет):
sudo mkdir -p /etc/bind/zones
Создайте файл зоны:
sudo nano /etc/bind/zones/db.example.com
И заполните его следующим образом:
$TTL 604800
@ IN SOA ns1.thehost.ua. admin.example.com. (
2024101001 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
; Name servers
@ IN NS ns1.thehost.ua.
@ IN NS ns2.thehost.net.
@ IN NS ns3.thehost.biz.
@ IN NS ns4.thehost.pro.
; A records
example.com. IN A 192.0.2.1
www IN A 192.0.2.2
Замените example.com.
, 192.0.2.1
, и 192.0.2.2
на Ваш домен, и IP-адреса. Если Вы не используете на сервере наши NS, также смените их список и ns1.thehost.ua.
в SOA-записе.
Совет: при необходимости, можете сразу заполнить файл зоны и другими DNS-записями с помощью инструкции.
Проверка конфигурации
Проверьте синтаксис конфигурации:
sudo named-checkconf
Проверьте зоны:
sudo named-checkzone example.com /etc/bind/zones/db.example.com
Система оповестит Вас в случае наличия ошибок в конфигурации.
Настройка обратной зоны (PTR-записи)
Внимание: раздел о настройке PTR является НЕАКТУАЛЬНЫМ для любых из наших услуг и носит образовательный характер. Если Ваша услуга размещена у нас, управление PTR выполняется по инструкции.
Обратная зона используется для преобразования IP-адресов в имена доменов (PTR-записи). Это полезно для работы с системами, которым необходимо удостовериться в обратном соответствии (например, почтовыми серверами).
В файле /etc/bind/named.conf.local
добавьте блок:
zone "2.0.192.in-addr.arpa" {
type master;
file "/etc/bind/zones/db.192.0.2";
};
Создайте файл обратной зоны:
sudo nano /etc/bind/zones/db.192.0.2
Заполните его:
$TTL 604800
@ IN SOA ns1.example.com. admin.example.com. (
2024101001 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
; Name servers
@ IN NS ns1.example.com.
; PTR records
0 IN PTR ns1.example.com.
1 IN PTR www.example.com.
Замените www.example.com.
иns1.example.com.
на необходимые Вам значения.
Проверить целостность файла обратной зоны можно следующей командой:
sudo named-checkzone 2.0.192.in-addr.arpa /etc/bind/zones/db.192.0.2
Последний тест
Проверьте разрешение доменного имени:
dig @127.0.0.1 example.com
Проверьте PTR-запись:
dig @127.0.0.1 -x 127.0.0.1
Привязка к нашим NS на VPS
Наличие работающего DNS-сервера на Вашем виртуальном сервере позволяет привязать и синхронизировать его работу с нашими NS.
Для выполнения привязки от Вашего DNS-сервера требуется соблюсти следующие условия:
- Наши неймсервера. Для выполнения привязки у домена должны быть указаны наши неймсервера в соответствующих файлах конфигурации.
- Директива allow-transfer. Директива
allow-transfer
в файлах конфигурации в файле/etc/bind/named.conf.options
(и в файлах зон) должна быть НЕ указана. Либо, в крайнем случае, указано следующим образом:
allow-transfer {
91.223.180.14;
46.4.57.177;
176.111.63.45;
94.130.133.155;
2a0c:f00::1:14;
2a01:4f8:140:14c8::7;
2a01:4f8:13b:365b::155;
};
Что не рекомендуется из-за маловероятной, но возможной смены списка IP-адресов наших NS.
- Привязка в панели VM-Cloud. Если вышеуказанные условия соблюдены и сервис BIND работает успешно, Вам все еще необходимо выполнить алгоритм привязки описанный в следующей статье.
После выполнения алгоритма действий описанного в статье, панель управления виртуальным сервером сможет вытягивать актуальные записи доменов сделанные локально на Вашем VPS и транслировать их на наши NS. В самой панели успешно припаркованный домен будет выглядеть следующим образом: