Иногда для каких-либо проектов необходимо обеспечить работу серверов имен на своем VDS, используя минимальный вариант операционной системы. В этой статье рассказано, как настроить эту конфигурацию. При установке использовались VDS без предустановленного ПО.
Для работы серверов имен требуется два IP-адреса (это требование регистраторов доменов), следовательно, необходимо заказать второй адрес в биллинге для вашего сервера. Заказ выполняется в разделе Виртуальные серверы — кнопка IP-адреса.
BIND — это DNS сервер с открытым исходным кодом, который предоставляет службы DNS в дистрибутивах Linux.
В ОС семейства Windows Server используется встроенная роль DNS сервера.
Содержание
- Настройка DNS в системе Debian
- Настройка DNS в системе Ubuntu
- Настройка DNS в системе CentOS/AlmaLinux/RockyLinux
- Настройка DNS в Windows Server 2019
- Проверка работоспособности DNS-сервера
Настройка DNS в системе Debian
В шаблоне debian следует установить пакет bind (предварительно синхронизировав информацию о пакетах).
# apt update # apt -y install bind9
Отредактируйте файл /etc/bind/named.conf
добавив в него описание вашей зоны (предположим, что домен называется example.com).
zone "example.com" { type master; file "/etc/bind/example.com"; };
Отредактируйте файл /etc/bind/example.com
добавив в него строки:
$TTL 3600 @ IN SOA ns1.example.com. root.example.com. (2012000001 10800 3600 604800 86400) @ IN NS ns1 @ IN NS ns2 ns1 IN A 1.1.1.1 ns2 IN A 2.2.2.2 @ IN A 1.1.1.1 www IN A 1.1.1.1
Здесь 1.1.1.1 и 2.2.2.2 — ваши IP-адреса, example.com — ваш домен.
Не забудьте проверить права на файл /etc/bind/example.com
и поправить их в случае необходимости:
# chown bind:bind /etc/bind/example.com
После чего можно перечитать конфигурацию DNS-сервера:
# rndc reload
После приведенной настройки можно указывать серверы имен ns1.example.com/1.1.1.1 и ns2.example.com/2.2.2.2 у регистратора. В Личном кабинете следует указывать записи через символ /, у регистраторов может быть меню Child Nameservers где указывается данное соответствие.
Настройка DNS в системе Ubuntu
Иногда пакет bind9 уже установлен в шаблоне Ubuntu, его необходимо запустить и добавить в автозапуск:
# systemctl start bind9 # systemctl enable bind9
Если bind9 не установлен, установка такая же, как для системы Debian.
# apt update # apt -y install bind9
Дальнейшая настройка выполняется точно также как в случае настройки на Debian
Настройка DNS в системе CentOS/AlmaLinux/RockyLinux
Иногда DNS сервер уже предустановлен в шаблоне ПО Сentos/AlmaLinux/RockyLinux. Его следует настроить и запустить. Если его нет, то нужно предварительно установить:
# dnf -y install bind # yum -y install bind (для Centos 7)
Запускаем DNS сервер и добавляем его в автозагрузку:
# systemctl start named # systemctl enable named
Отредактируйте /etc/named.conf
и удалите или закомментируйте символами // строки:
listen-on port 53 { 127.0.0.1; }; allow-query { localhost; };
После чего необходимо в конец блока options
добавить параметр allow-transfer
и указать IP-адреса:
allow-transfer { 1.1.1.1; 2.2.2.2;};
В результате блок options
файла /etc/named.conf
будет выглядеть примерно так:
options { // listen-on port 53 { 127.0.0.1; }; // listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; recursing-file "/var/named/data/named.recursing"; secroots-file "/var/named/data/named.secroots"; allow-query { localhost; }; // recursion yes; dnssec-enable yes; dnssec-validation yes; /* Path to ISC DLV key */ bindkeys-file "/etc/named.root.key"; managed-keys-directory "/var/named/dynamic"; pid-file "/run/named/named.pid"; session-keyfile "/run/named/session.key"; allow-transfer { 1.1.1.1; 2.2.2.2;}; };
Следующий шаг (создание и настройка использования rndc.key) можно пропустить, если не будете пользоваться командой rndc, — в таком случае перезапустите DNS-сервер командой:
# systemctl restart named/etc/init.d/named restart
Создайте ключ /etc/rndc.key
командой:
# rndc-confgen -a
Добавьте в /etc/named.conf
:
key "rndc-key" { algorithm hmac-md5; secret "sUUony71pdPDHSZjNrkDFQ=="; }; controls { inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { "rndc-key"; }; };
Где строку secret
:
secret "sUUony71pdPDHSZjNrkDFQ==";
следует брать из файла /etc/rndc.key
.
Запустите named и добавьте его в автозапуск:
# systemctl start named # chkconfig named --level 2345 on
Настройка зоны производится аналогично настройке на Debian / Ubuntu со следующими отличиями:
- файл конфигурации DNS-сервера
/etc/named.conf
- зоны расположены в каталоге
/var/named
Настройка DNS в Windows Server 2019
Зайдите в Диспетчер серверов — Управление — нажмите Добавить роли и компоненты и добавьте DNS-сервер.


Далее в Диспетчере серверов переходим в Средства — DNS.

Нажимаем на имя сервера, на кнопку Действие — Настроить DNS сервер. Откроется мастер настройки DNS сервера. Нажимаем Далее и выбираем Зону прямого просмотра.

Вводим имя зоны и жмем Далее.

Запрещаем динамическое обновление.

После можно настроить пересылку запросов определенным DNS серверам, либо оставить распознавание имен при помощи корневых серверов. Жмем Далее — Готово.
Осталось добавить DNS-записи. Выбираем Зоны прямого просмотра, нажимаем на созданную нами зону и нажимаем на кнопку Тип записи ресурса. Ищем тип записи Узел (типа А или АААА), выбираем его и создаем запись.

В появившемся окне добавляем А-записи. У первой записи Узел остается пустой. Указываем IP и создаем запись.
Аналогичным образом создаем остальные А-записи, при этом указывая название в поле Узел.

Редактируем запись Сервер имен (NS).

Выбираем имя сервера и нажимаем на кнопку Изменить. В открывшемся окне меняем имя NS (в нашем случае ns1.example.com.). Не забудьте в конце добавить точку!

Ниже указываем соответствующий IP (в нашем случае 1.1.1.1) и нажимаем ОК.
Первое имя NS настроено, добавляем второе. В окне нажимаем на Добавить, а затем таким же способом добавляем второе имя NS (в нашем случае это ns2.example.com. и IP 2.2.2.2). Получим такую картину:

Теперь отредактируем начальную зону (SOA) аналогичным способом. Указываем первичный NS зоны и email администратора (в email вместо символа @ нужно поставить точку, т.е. если почта admin@example.com — указываем admin.example.com).

Аналогично А-записям можно добавить другие, например, MX или TXT.
Проверка работоспособности DNS-сервера
Проверить работоспособность полученной конфигурации можно используя команду dig. В Debian/Ubuntu устанавливается через apt-get пакет dnsutils.
# apt -y install dnsutils
В CentOS/AlmaLinux/RockyLinux установка dig производится через менеджер пакетов dnf или yum (для CentOS 7) — пакет bind-utils.
# dnf -y install bind-utils # yum -y install bind-utils (для CentOS 7)
Для проверки запускаем команду dig:
# dig @1.1.1.1 example.com
В случае успеха ответ будет таким:
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.10 <<>> @1.1.1.1 exapmle.com ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54919 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;example.com. IN A ;; ANSWER SECTION: ns1.example.com. 3600 IN A 1.1.1.1 ns2.example.com. 3600 IN A 2.2.2.2 ;; Query time: 0 msec ;; SERVER: 1.1.1.1#53(1.1.1.1) ;; WHEN: Вс янв 15 18:08:36 MSK 2023 ;; MSG SIZE rcvd: 60
Данной утилитой проверяется ответ сервера, то что ему известно про существование зоны и записи в ней.