Поднимаем свой DNS

25.04.2020

В один "прекрасный момент" Руцентр сделал услугу Управление ДНС платной, что повлекло за собой трудности, например, с настройкой почты для домена от Яндекса.

Для себя я решил эту проблему, подняв свой DNS сервер на linux. Настройки будут для Centos 7, но отличие от других систем только в процессе установки пакетов и их именах.

Легенда

Сразу определимся с "легендой", что бы примеры понятными:

  • NAME.site - домен, который и нужно припарковать.

  • 1.1.1.1 - белый IP сервера, к которому паркуем домен (Сервер, на котором будет работать сайт).

  • 2.2.2.2 - белый IP сервера, на котором будет установлен DNS сервер.

  • OLD.site - уже существующий и работающий домен которому нужно будет создать пару поддоменов: ns1.OLD.site и
    ns2.OLD.site - про это расскажу ниже.

Установка и настройка "bind9" AKA "named"

Сам DNS поднимем на bind9 также известном как named:

 
yum install -y bind bind-utils

После установки нужно внести в конфиг (/etc/named.conf) пару изменений:

 
    listen-on port 53 { 127.0.0.1;2.2.2.2; };
    allow-query { any; };

Также, в этом же файле, создаем зону:

 
zone "NAME.site" IN {
    type master;
    file "NAME.site.zone";
    allow-update { none; };
};

Настраиваем зону:

Теперь нужно создать конфигурационный файл, для нашего домена: /var/named/NAME.site.zone

 
$TTL 86400
@   IN  SOA     ns1.NAME.site. root.NAME.site (
        2014130401  ;Serial 
        3600        ;Refresh
        1800        ;Retry
        604800      ;Expire
        86400       ;Minimum TTL
)
; Указываем два name сервера
		IN	NS		ns1.NAME.site.
		IN	NS		ns2.NAME.site.
; Определяем IP адреса name серверов
ns1		IN	A		2.2.2.2
ns2		IN	A		2.2.2.2

; Define hostname -> IP нашего сервера для этого домена
@		IN	A		1.1.1.1
www		IN	A		1.1.1.1

По хорошему, нужно создавать два NS сервера (один мастер, а второй слейв), для отказоустойчивости, но для текущей задачи это не нужно, т.к. данный ДНС будет использоваться только до момента подтверждения прав на домен у Яндекса.

Но если все же решите настроить еще и слейв, то стоит учесть, что число в строчке Serial нужно увеличивать при каждом изменении в файле, иначе slave сервер обновлять данные не будет.

Запускаем сервис:

 
systemctl enable named
systemctl start named

Тестирование:

Для проверки нужно выполнить в консоли:

 
dig @2.2.2.2 NAME.site. axfr

- в ответе должен придти IP адрес 1.1.1.1 (адрес к которому паркуем домен).

Если dig в системе нет, то устанавливаем:

 
yum -y install bind-utils

Финал:

Руцент не хочет принимать вместо адреса ДНС сервера IP, поэтому нужно будет настроить два поддомена ns1.NAME.site и ns1.NAME.site (Обычные записи типа A), ссылающиеся на 2.2.2.2 (сервер, на котором поднят bind 9)


Категории: Web, Linux, Centos
Яндекс.Метрика