Установка DNS-сервера BIND на CentOS 6

В этом руководстве речь пойдёт об установке и настройке DNS-сервера BIND.

Для выполнения инструкций рекомендуется настроить как минимум два облачных сервера для запуска серверов имен (nameservers); наличие нескольких серверов имён позволяет использовать запасные ресурсы в случае возникновения ошибки. Также можно рассмотреть возможность использования двух разных точек присутствия (POP). Предполагается использование первичного (мастер) и вторичного сервера имен (слейв).

Стоит отметить, что при управлении большим количеством доменов это может оказаться не самым эффективным решением, так как вам придётся вручную добавить домены и на мастер, и на слейв. С учетом сказанного, запуск собственных серверов имен – отличный способ обеспечить прямой контроль над хостинговой инфраструктурой и записями DNS.

Как всегда, для начала важно убедиться, что система находится в актуальном состоянии. Проверьте наличие обновлений с помощью yum:

yum update -y

Установка BIND

Чтобы установить пакеты BIND и bind-utils, используйте yum:

yum install bind bind-utils -y

Затем откройте конфигурационный файл BIND и внесите в него некоторые коррективы.

nano -w /etc/named.conf

В файле найдите раздел options, который выглядит так (вместо 2.2.2.2 – IP-адрес второго сервера):

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";
allow-query { any; };
allow-transfer     { localhost; 2.2.2.2; };
recursion no;
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};

Директива listen-on должна быть закомментирована для прослушивания доступных интерфейсов. Директива recursion должна иметь значение off, чтобы предотвратить reflection DDoS-атаки. Директива allow-transfer добавляет в белый список IP-адрес вторичного сервера. кроме того, нужно изменить значение директивы allow-query на any, чтобы предоставить пользователям доступ к зонам.

Затем нужно добавить новую зону для первого домена. Для этого поместите в конце файла named.conf следующий код:

zone "mydomain.com" IN {
type master;
file "mydomain.com.zone";
allow-update { none; };
};

Сохраните изменения в named.conf. После этого можно приступать к созданию файла описания зоны (zone-файла).

Настройка зон BIND

Для начала нужно открыть zone-файл, указав имя, внесённое в предыдущий конфигурационный файл (mydomain.com.zone).

nano -w /var/named/mydomain.com.zone

Внесите в файл нижеприведённый код. Замените условные IP-адреса адресами ваших серверов (1.1.1.1 – IP-адрес первого сервера, 2.2.2.2 – IP-адрес второго сервера, 3.3.3.3 – IP, на который нужно направить домен (например, веб-сервер)). При необходимости внесите в код другие поправки.

$TTL 86400
@   IN  SOA     ns1.mydomain.com. root.mydomain.com. (
2013042201  ;Serial
3600        ;Refresh
1800        ;Retry
604800      ;Expire
86400       ;Minimum TTL
)
; Specify our two nameservers
IN           NS                          ns1.mydomain.com.
IN           NS                          ns2.mydomain.com.
; Resolve nameserver hostnames to IP, replace with your two droplet IP addresses.
ns1                        IN           A                            1.1.1.1
ns2                        IN           A                            2.2.2.2
; Define hostname -> IP pairs which you wish to resolve
@                           IN           A                            3.3.3.3
www                    IN           A                            3.3

Запустите named. Запуск может занять несколько минут, поскольку при первом запуске named создаёт файл rndc.key.

service named restart

После успешного запуска демона named нужно убедиться, что он включён как сервис:

chkconfig named on

Теперь первичный сервер имён полностью готов. Чтобы убедиться в том, что BIND работает должным образом, запустите следующую команду, указав IP сервера вместо 1.1.1.1:

dig @1.1.1.1 mydomain.com

Если полученный результат содержит разделы answer и authority, значит, настройка выполнена правильно.

Настройка слейв сервера

Итак, мастер сервер готов к работе. Теперь нужно настроить вторичный сервер имён на втором облачном сервере.

Убедитесь, что система находится в актуальном состоянии.

yum update -y

Установите BIND и его утилиты на второй облачный сервер:

yum install bind bind-utils -y

Откройте named.conf и внесите в него такие же коррективы, как и на первом сервере, пропустив директиву allow transfer – эта директива не нужна, поскольку записи буду передаваться только с первичного сервера имен.

nano -w /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";
allow-query { any; };
recursion no;
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};

Добавьте зоны, настроенные на предыдущем сервере, заменив значение директивы type на slave. Укажите IP первого сервера вместо 1.1.1.1:

zone "mydomain.com" IN {
type slave;
masters { 1.1.1.1; };
file "mydomain.com.zone";
};

Настроив зону slave, запустите демон named. Опять же, на это может уйти несколько минут, поскольку при первом запуске на сервере демон создаёт файл rndc.key.

service named start

Как и на первом облачном сервере, проверьте, работает ли демон named:

chkconfig named on

Вторичный сервер имён теперь готов к работе. Чтобы убедиться, что он работает должным образом, используйте следующую команду, заменив 2.2.2.2 IP-адресом второго облачного сервера.

dig @2.2.2.2 mydomain.com

После внесения каких-либо изменений в файлы зоны первичного сервера необходимо перезагрузить BIND. Помните, что вам также нужно увеличить директиву serial, чтобы обеспечить синхронную работу первичного и вторичного сервера.

Чтобы перезапустить файлы зоны, используйте следующую команду сначала на мастере, а потом на слейве:

rndc reload

BIND в окружении chroot

Кроме того, рекомендуется установить дополнительный пакет bind-chroot, который передаёт BIND окружение chroot.

В системе CentOS это очень просто. Нужно только отметить, что активные пути BIND будут заменены на chroot-эквиваленты (к примеру, var/named станет /var/named/chroot/var/named). В CentOS 6 не нужно перемещать никаких файлов, поскольку пакет самостоятельно создаст символьные ссылки на не-chroot каталоги.

Чтобы включить эту функцию, используйте:

yum install bind-chroot -y
service named restart

Tags: , , ,

Добавить комментарий