К основному контенту

Разворачиваем DNS на CentOS 7

Ну, пускай тут повисит ман, интерпретаций которого тысячи в интернетах. А то чего.

Для создания отказоустойчивого DNS нам нужно 2 ВМ с публичными IP из разных подсетей. Соответственно, 1-ый сервер будет master, а 2-ой — slave.
На обеих системах ставим bind:
yum install bind bind-utils
Настраиваем файл настроек /etc/named.conf на master-сервере:
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
// See the BIND Administrator's Reference Manual (ARM) for details about the
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html
 
options {
 listen-on port 53 { 127.0.0.1; master IP; };
 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";
 allow-query     { any; };
        allow-transfer { IP адрес slave-сервера; 127.0.0.1; };
 forwarders { 8.8.8.8; 77.88.8.8; };
 
 /* 
  - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
  - If you are building a RECURSIVE (caching) DNS server, you need to enable 
    recursion. 
  - If your recursive DNS server has a public IP address, you MUST enable access 
    control to limit queries to your legitimate users. Failing to do so will
    cause your server to become part of large scale DNS amplification 
    attacks. Implementing BCP38 within your network would greatly
    reduce such attack surface 
 */
 recursion yes;
 
 dnssec-enable yes;
 dnssec-validation yes;
 
 /* Path to ISC DLV key */
 bindkeys-file "/etc/named.iscdlv.key";
 
 managed-keys-directory "/var/named/dynamic";
 
 pid-file "/run/named/named.pid";
 session-keyfile "/run/named/session.key";
};
 
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
 
zone "." IN {
 type hint;
 file "named.ca";
};
 
zone "xxx.ru" IN {
                type master;
                file "dns/xxx.ru.zone";
                allow-update { none; };
        };
 
zone "yyy.ru" IN {
                type master;
                file "dns/yyy.ru.zone";
                allow-update { none; };
        };
 
zone "zzz.ru" IN {
                type master;
                file "dns/zzz.ru.zone";
                allow-update { none; };
        };
 
zone "qqq.ru" IN {
                type master;
                file "dns/qqq.ru.zone";
                allow-update { none; };
        };
 
zone "vvv.ru" IN {
                type master;
                file "dns/vvv.ru.zone";
                allow-update { none; };
        };
 
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
Разберём конфиг:
allow-query { any; }; — кому разрешено брать твои зоны
allow-transfer { IP адрес slave-сервера; 127.0.0.1; }; — опция для master-сервера, указываются ip адреса для секондери днс
forwarders { 8.8.8.8; 77.88.8.8; }; — форвардинг запросов на другие днс
Файлы зон в нашем случае находятся по пути /var/named/dns. Рассмотрим и разберём один файл зоны:
$ttl 3600 ; TTL (время жизни зноны) в секундах
ххх.ru.       IN      SOA     ns1.ххх.ru. root.ххх.ru. (
                        2018042501 ; время изменения файла: 25-го апреля 2018-года, файл изменялся 1 раз
                        14400 ; вторичный сервер имён перенимает изменения от первичного каждые четыре часа
                        3600 ; в случае ошибки, вторичный сервер имён предпринимает новую попытку синхронизации через 60 минут 
                        1209600 ; Если вторичный сервер имён не синхронизирован через 14 дней (1209600 секунд), он объявляет домен недействительным
                        3600  ) ; время актуальности записи 1 час
 
;
;  Zone NS records
;
 
  IN NS      ns1.xxx.ru. ; 1-ый ns-сервер
  IN NS      ns2.xxx.ru. ; 2-ой ns-сервер
 
;
;  Zone records
;
 
ns1.ххх.ru.  IN      A IP адрес ns1.ххх.ru
ns2.ххх.ru.  IN A IP адрес ns2.ххх.ru
 
ххх.ru.  IN A IP адрес ххх.ru
 
; поддомены, прописываются по мере необходимости:
www     IN      CNAME   @
p       IN      CNAME   @
pf      IN      CNAME   @
admin   IN      CNAME   @
n       IN      CNAME   @
n2      IN      CNAME   @
mn      IN      CNAME   @
an      IN      CNAME   @
new     IN      CNAME   @
clubs   IN      CNAME   @
*       IN      CNAME   @
Перейдём к настройкам slave-сервера, файл named.conf:
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
// See the BIND Administrator's Reference Manual (ARM) for details about the
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html
 
options {
 listen-on port 53 { 127.0.0.1; slave IP; };
 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";
 allow-query     { any; };
        allow-transfer { IP адрес master-сервера; 127.0.0.1; };
        forwarders { 8.8.8.8; 77.88.8.8; };
 
 /* 
  - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
  - If you are building a RECURSIVE (caching) DNS server, you need to enable 
    recursion. 
  - If your recursive DNS server has a public IP address, you MUST enable access 
    control to limit queries to your legitimate users. Failing to do so will
    cause your server to become part of large scale DNS amplification 
    attacks. Implementing BCP38 within your network would greatly
    reduce such attack surface 
 */
 recursion yes;
 
 dnssec-enable yes;
 dnssec-validation yes;
 
 /* Path to ISC DLV key */
 bindkeys-file "/etc/named.iscdlv.key";
 
 managed-keys-directory "/var/named/dynamic";
 
 pid-file "/run/named/named.pid";
 session-keyfile "/run/named/session.key";
};
 
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
 
zone "." IN {
 type hint;
 file "named.ca";
};
 
zone "xxx.ru" IN {
 type slave;
 masters { IP адрес master-сервера; };
 file "slaves/xxx.ru.zone";
};
 
zone "yyy.ru" IN {
 type slave;
 masters { IP адрес master-сервера; };
 file "slaves/yyy.ru.zone";
};
 
zone "zzz.ru" IN {
 type slave;
 masters { IP адрес master-сервера; };
 file "slaves/zzz.ru.zone";
};
 
zone "qqq.ru" IN {
 type slave;
 masters { IP адрес master-сервера; };
 file "slaves/qqq.ru.zone";
};
 
zone "vvv.ru" IN {
 type slave;
 masters { IP адрес master-сервера; };
 file "slaves/vvv.ru.zone";
};
 
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
Как видим, файл настроек почти идентичен файлу настроек master-сервера, тут просто явно видно, что сервер slave. Зоны будут созданы при синхронизации в директорию /var/named/slaves
Не забываем, при изменениях файла зоны на master-сервере менять серийный номер и выполнять service named reload
Таким образом, получаем собственный DNS-сервер, который проходит все валидации на том жеhttps://mxtoolbox.com/SuperTool.aspx#

Комментарии

Популярные сообщения из этого блога

Неттоп как медиацентр

Всё-таки сбылась мечта идиота. использовать неттоп в качестве медиаплеера была отличной идеей. Да, обычный медиаплеер раза в 2 дешевле, но и гибкости у него меньше. А тут полноценный компьютер который спокойно скушает любой формат аудио и видео. Nvidia ion для воспроизведения тяжёлого видео идеальное решение.

Jabber от РБК

Зарегистрировал я себе домен. Ну и, естественно, захотел прикрутить туда почту, джаббер, блог.. С почтой прекрасно справляется Google Apps. Я попробовал воспользоваться всеми его сервисами, но наткнулся на неприятность, которая многим знакома по Google Talk — отсутствие метаконтактов, закладок, вменяемой информации о пользователе и, конечно, отправке статуса каждые пять минут от моего аккаунта. Немного погуглив, я узнал о нескольких Российских хостинговых компаниях, которые на данный момент предоставляют Jabber при аренде у них виртуального хостинга, либо как отдельную услугу. Отдельно Jabber оказалось возможным заказать только на hc.ru, при этом пока это бесплатно и вряд ли в дальнейшем цена будет превышать 50-100 рублей в месяц, а географическое местоположение серверов предоставляет более быстрый коннект, нежели Google. Подробно о регистрации под катом.

Настройка IPSec

Ман написан в 2011 году, про актуальность его в 2018 ничего не могу сказать. IPSec (сокращение от IP Security ) — набор протоколов для обеспечения защиты данных, передаваемых по межсетевому протоколу IP, позволяет осуществлять подтверждение подлинности и/или шифрование IP-пакетов. IPsec также включает в себя протоколы для защищённого обмена ключами в сети Интернет. Делюсь с тем, с чем предоставилось познакомиться в ходе обучения на работе. Тут, конечно, далеко не всё, но я постарался расписать подробно, чтобы была ясна логика работы IPSec . Система —  Debian 6.0.2.1. Ставим на машины  ipsec-tools ,  racoon . Для анализа сетевого трафика можно поставить  tcpdump . 2 вида соединения: туннельный и транспортный. Туннельный режим  предполагает шифрование всего пакета, включая заголовок сетевого уровня. Туннельный режим применяется в случае необходимости скрытия информационного обмена организации с внешним миром. Транспортный режим  используется для шифрования поля данных