0

master — slave BIND на CentOS 6

Вот тут подвернулась задача поднять master-slave DNS сервера. Устанавливать буду старый добрый BIND. Почему? На самом деле с существующаей связкой, собранной в бородатом году из исходников существует проблемы и я решил, что проще перенести существующий (не маленький, кстати, конфиг на вновь поднятый сервер)

Итак, есть два сервера:
ns1.jnotes.ru 192.168.192.1 — master
ns2.jnotes.ru 192.168.192.78 — slave

На обоих установлена и обновлена CentOS 6.

Master DNS

Устанавливаю bind:
# yum install bind bind-utils

Привожу конфиг /etc/named.conf к следующему виду:

options {
        // на каких интерфейсах служать запросы
        listen-on port 53 { 127.0.0.1; 192.168.192.1; };
        // на каких интерфейсах слушать ipv6 запросы
//      listen-on-v6 port 53 { ::1; };
        // рабочая директория
        directory       "/var/named";
        // где результат rndc dumpdb
        dump-file       "/var/named/data/cache_dump.db";
        // где результат rndc stats
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        // откуда разрешены запросы к серверу
        allow-query     { localhost; 192.168.0.0/16; };
        // кому разрешен трансфер зон
        allow-transfer { 192.168.192.78; };
        // разрешать ли рекурсивные запросы. Лучше отключать, но в моем они случае нужны.
        recursion yes;

        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";
};
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {
        type hint;
        file "named.ca";
};

// пример зоны
zone "extor.local" IN {
        // тип зоны
        type master;
        // где лежит файл описания зоны
        file "master/extor.local.db";
        // кому разрешено обновлять зону. У меня зона не обновляется динамически.
        allow-update { none; };
        // кому разрешено запрашивать зону (дополнительно ограничить глобальный allow-query)
        allow-query { any; };
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

В /var/named создаю директорию master. Мне так удобно.
# mkdir /var/named/master && chown named:named /var/named/master

Теперь там создаю файл зоны:
vi /var/named/master/extor.lc.db

Пример:

$TTL 7200 ; (2 hours)
@       IN SOA  ns1.jnotes.ru. root.jnotes.ru. (
        2014082102      ; serial
        7200           ; refresh (2 hours)
        1800            ; retry (30 mins)
        1209600         ; expire (2 weeks)
        3600            ; minimum (1 hour)
)
@       IN NS           ns1.jnotes.ru.
@       IN NS           ns2.jnotes.ru.

@       IN A            192.168.192.90

ns1     IN A            192.168.192.1
ns2     IN A            192.168.192.78

www     IN A            192.168.192.10
test    IN A            192.168.192.11

Запускаю сервер:
# chkconfig named on && service named start

Slave DNS

На secondary DNS конфигурационный файл идентичный, за исключением описания зон.

zone "extor.local" IN {
        type slave;
        masters { 192.168.192.1; };
        file "slaves/extor.local.db";
        allow-query { any; };
};

Теперь запускаю slave DNS и проверяю, что зоны удачно передались. (ls /var/named/slaves).
Если зоны не передались надо смотреть лог, а также проверить firewall

Firewall

В правилах firewall надо разрешить входящие udp запросы на 53 порт и исходящие tcp запросы с 53 порта в сторону серверов, участвующих в трансфере:

-A INPUT -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT 
-A INPUT -s 192.168.192.1/32 -p tcp -m tcp --sport 53 -j ACCEPT 

и

-A INPUT -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT 
-A INPUT -s 192.168.192.78/32 -p tcp -m tcp --sport 53 -j ACCEPT

Alexey Egorychev

FreeBSD and Linux sysadmin. Know many systems like mailsystems, DB, WWW stack. Automation with salt, ansible. Monitoring with nagios, zabbix.