Настройка сервера имен (DNS-сервер) на VDS без ISPmanager

Иногда для каких-либо проектов необходимо обеспечить работу серверов имен на своем VDS, используя минимальный вариант операционной системы. В этой статье рассказано, как настроить эту конфигурацию. При установке использовались VDS без предустановленного ПО.

Для работы серверов имен требуется два IP-адреса (это требование регистраторов доменов), следовательно, необходимо заказать второй адрес в биллинге для вашего сервера. Заказ выполняется в разделе Виртуальные серверы — кнопка IP-адреса.

BIND — это DNS сервер с открытым исходным кодом, который предоставляет службы DNS в дистрибутивах Linux.

В ОС семейства Windows Server используется встроенная роль 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


Данной утилитой проверяется ответ сервера, то что ему известно про существование зоны и записи в ней.

Этот материал был полезен?