Вы находитесь здесь: Главная > Разное > Создание хостинга. Часть 8. Автоматическая синхронизация Primary и Secondary DNS bind

Создание хостинга. Часть 8. Автоматическая синхронизация Primary и Secondary DNS bind

. . . . .

Всем доброго времени суток!

хостинг

Сегодняшний пост будет про автоматическое создание файла новой доменной зоны на вторичном dns сервере.

Напомню, что при создании новой зоны в Bind, необходимо внести изменения в конфигурационный файл на первичном и вторичном dns серверах.
Со временем возникает ситуация когда количество зон dns поддерживаемых наdns сервере растет. В связи с этим приходится проделывать больше рутинных операций, но на спасет автоматизация добавления новой зоны на вторичном dns сервере! 🙂
Я долго искал подходящий способ автоматизировать синхронизацию dns серверов. В один прекрасный день наткнулся на статью в .kz и реализовал на своих серверах. Сегодня я поделюсь этим способом с вами. К сожалению ссылку на перво источник найти не могу, если кто наткнется на статью-оригинал, скиньте, пожалуйста, ссылку мне, я ее с удовольствием тут размещу.
Решение проблемы основывается на парсинге лога notify bind’а. Для этого включим в named.conf логирование notify-сообщений на вторичном dns сервере (предварительно создав каталог /var/log/bind и сменив владельца каталога на пользователя bind):

logging {
    channel notify_log {
       file "/var/log/bind/bind-notify.log" versions 3 size 1M;
       severity info;
       print-category yes;
       print-severity yes;
       print-time yes;
    };
    category notify       { notify_log; };
};

Далее настроим обмен ключами между primary и secondary dns, на основе записи о этом ключе в notify-логе и будет происходить автоматическое добавление новой зоны. Настройки named.conf первичного dns сервера:

key "key1" {
        algorithm hmac-md5;
        secret "secretkey123"; # пароль
        };
server 192.168.0.69 { #ip адрес вторичного dns сервеа
        keys {
        key1;
    };
};

Перезапустим bind на primary dns сервер:

debian:/etc/bind# /etc/init.d/bind9 restart

Настройки на вторичном dns сервере:

key "key1" {
    algorithm hmac-md5;
    secret "secretkey123"; #пароль
};
server 192.168.0.68 { #ip адрес первичного dns сервера
    keys {
      key1;
   };
};

Перезапустим bind на secondary dns сервер:

1
debian-2:/etc/bind# /etc/init.d/bind9 restart

Теперь необходимо установить perl скрипт zoneadd, который и будет делатьавтоматическое добавление новых доменных зон на вторичном dns сервере. Для этого скопируем его в каталог /etc/init.d/. Далее сделаем необходимые настройки в скрипте:

my %cfg=(notifylog=>'/var/log/bind/bind-notify.log',
        'named.conf'=>'/etc/bind/named.conf', #путь до конфигурационного файла bind
        restart_cmd=>'/etc/init.d/bind9 reload', #команда для перечитывания конфига binda
        mail_cmd=>'echo "%zone created by %server at %time" |mail -s "%zone created by %server at %time" root@hosting-notes.ru', #команда для отправки уведомления на email о создании новой зоны. не забываем указывать свой емейл 🙂
        failed_mail_cmd=>'echo "ALARM: DNS server NOT RESTARTED" |mail -s "ALARM: DNS server NOT RESTARTED" root@hosting-notes.ru', #команда для отправки сообщения о проблеме  перезапуска named
        interval=>10,
        daemon=>1, #1-  режим демона, 0 - режим отладки
        allowed=>['192.168.0.68'],
        keynames=>{
                '192.168.0.68'=>'key1', # указываем соответствие первичного сервера ключу.
        },pattern=>"//added: %time\n"
                ."zone \"\%zone\" {\n"
                ."\ttype slave;\n"
                ."\tfile \"/etc/bind/slave/\%zone\";\n"
                ."\tmasters { \%server; };\n"
                ."\tallow-query { localhost; 0.0.0.0/0; };\n"
                ."\tallow-notify { \%server; };\n"
                ."\tallow-transfer { \%server; };\n};\n");

Не забудем добавить скрипт в rc.d:

debian-2:~# update-rc.d zoneadd defaults

И запустим скрипт автоматического добавления зоны на вторичном dns сервре:

debian-2:~# /etc/init.d/zoneadd

Если все ок, то увидем zoneadd в процессах:

debian-2:~# ps ax | grep zone
 2417 ?        Ss     0:00 zoneadd

Установку и настройку закончили, приступим к тестированию. Для этого создадим новую зону hosting-2.local на первичном dns сервере. Для этого создадим файл /etc/bind/hosting-2.local с таким содержанием:

$TTL    3600
hosting-2.local.        IN      SOA     localhost. root.localhost. (1 10800 3600 604480 86400 )
hosting-2.local.        IN      NS      ns.hosting-2.local.
hosting-2.local.        IN      NS      ns2.hosting-2.local.
hosting-2.local.        IN      A       192.168.0.68
ns.hosting-2.local.     IN      A       192.168.0.68
ns2.hosting-2.local.    IN      A       192.168.0.69

И добавим описание зоны в /etc/bind/named.conf:

zone "hosting-2.local" {
        type master;
        file "/etc/bind/hosting-2.local";
        notify yes;
        allow-transfer { 192.168.0.69;};
};

Ну что-же, проверим как работает синхронизация secondary с primary dns. Релоадим конфигурацию на первичном dns:

debian:/etc/bind# /etc/init.d/bind9 reload

На вторичном должен появитьcя файл /etc/bind/slave/hosting-2.local, а /etc/bind/named.conf секция:

zone "hosting-2.local" {
            type slave;
            file "/etc/bind/slave/hosting-2.local";
            masters { 192.168.0.68; };
            allow-query { localhost; 0.0.0.0/0; };
            allow-notify { 192.168.0.68; };
            allow-transfer { 192.168.0.68; };
};

Также создается бэкап named.conf и отсылается уведомление обавтоматическом создании новой доменной зоны на вторичном dns сервере на email.

Также на эту тему:
Создание хостинга. Часть 7. Настройка вторичного DNS сервера bind.
Создание хостинга. Часть 5. Установка и настройка первичного dns сервера bind.

. . . . .
  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • Twitter
  • RSS

Оставить комментарий

This blog is kept spam free by WP-SpamFree.

. . . . . . . . . . . . . . . . . . . .