LINUX.ORG.RU
ФорумAdmin

bind9 форсировать обновление зоны на slave?

 ,


0

1

Доброго времени суток.
С bind столкнулся впервые пару дней назад, тестирую связку master + 2 slave в локальном окружении. Возникла проблема с обновлением зон не только на слэйве, но и на мастере. Пример: добавляю запись CNAME на мастере и при попытке «nslookup новая_CNAME ip_мастера» не находит ничего, но достаточно перезапустить демона bind, и я получаю ответ и с мастера, и со слэйва, т.е. он зону получил. Уменьшение refresh в SOA на мастере ничего не дало. Более того, я поставил refresh 120 секунд на мастере, перезапустил bind, на слэйве зона обновилась и там также указано refresh 120 секунд, но после добавления записей в файл зоны на мастере, они не появляются на слэйве через 120 секунд, и как я сказал выше, при обращении к самому мастеу, эти записи не отдаются, хотя в файле зоны именно на мастере они есть.
Кто-то может прокомментировать это? Не думаю что перезагрузка bind это нормальное решение.



Последнее исправление: cetjs2 (всего исправлений: 1)
Ответ на: комментарий от kiotoze

Спасибо, действительно помогло. Имеет ли смысл завести эту команду в планировщик (так вообще делают?)?
Не совсем ясна ситуация с refresh: «Signed 32 bit time value in seconds. Indicates the time when the slave will try to refresh the zone from the master (by reading the master DNS SOA RR). RFC 1912 recommends 1200 to 43200 seconds, low (1200) if the data is volatile or 43200 (12 hours) if it's not. If you are using NOTIFY you can set for much higher values, for instance, 1 or more days (> 86400 seconds). BIND Time format.» (http://www.zytrax.com/books/dns/ch8/soa.html).
Так все же непонятно, почему слэйв не пытался обновить зону, пусть и без rndc reload, ведь интервал refresh истек, серийный номер в файле зоны на мастере был изменен и в настройках named.conf.local на мастере есть такое:

zone "test.lala" {
        type master;
        file "test.lala";
        allow-transfer {ip_slave1; ip_slave2;};
        notify YES;
};

а на слэйве:
zone "test.lala" {
        type slave;
        file "test.lala";
        masters { ip_master; };
        allow-notify { ip_master; };
};

Зачем вообще опция refresh, если без reload демона зона на трансферится?

nokogerra
() автор топика

В файле данных зоны требуется увеличить счетчик на master. Выполни «rndc reload». На всех slave зона обновится автоматически.

andrew667 ★★★★★
()
Ответ на: комментарий от andrew667

Я менял серийный номер в файле зоны на мастер, я об этом писал выше. Меня смущает то, что без rndc reload зона не трансферится, хотя указаны notify и allow-notify. Тем более не понятно зачем вообще нужна опция refresh, если зона не трансферится без релоада демона. Это bind так by design работает что ли?

nokogerra
() автор топика
Ответ на: комментарий от nokogerra

Имеет ли смысл завести эту команду в планировщик (так вообще делают?)?

Помнится, когда-то я наступал на грабли из-за частых rndc reload по крону. Понятно, что баг, но починили, или нет, не знаю.

что без rndc reload зона не трансферится

Более того, её и мастер не подружает. Но есть такая штука: http://bind-dlz.sourceforge.net/driver_docs.html

AS ★★★★★
()
Последнее исправление: AS (всего исправлений: 1)
Ответ на: комментарий от nokogerra

что без rndc reload зона не трансферится

А у тебя она разве динамически обновляемая? В конфиге этого нет. Ручками/скриптом обновление конфига через rndc обязательно.

andrew667 ★★★★★
()
Ответ на: комментарий от Black_Shadow

Спасибо за ответы, они внесли некоторую ясность, но моя проблема оказалась скрыта в баго-фиче:
Я понял, почему меня так смущала ситуация с refresh. Я почти уверен что моя ситуация тянет на эксклюзив.
bind`ы расположены на vm внутри vSphere, т.к. у linux нет подобия CMID Windows (на сколько я знаю), то я при деплое из шаблона машины не заморачивался ни с какими аналогами sysprep для linux (есть ли они вообще?). Итак я развернул 3 машины, мастер + 2 слэйва. При этом бинд был установлен до создания шаблона vm и ВСЕ сиды, rndc.key и прочее оказались одинаковыми на этих 3х машинах (я сменил ip и имена хостов). И так я сделал стандартные настройки, указал «notify YES» на мастере, «allow-notify { ip_master; };» (хотя прочитав внимательно об этих опциях, понял, что это вовсе не обязательно) на слэйвах. Теперь внимание: после изменения зоны на мастере и выполнения «rndc reload» только на мастере обновление зоны происходило и на слэйвах (я не знаю, это магия?)! И я думал зачем вообще рефреш, если и так все работает, я считал что так работает у всех :D.



Вчера с товарищем тестировали его dns. После изменения зоны на мастере + «rndc reload», и введения «rndc reoload» на слэйве, зона на слэйве не обновилась (зато она обновлялась по истечении refresh или при полной перезагрузке демона). Обновлялась она также при указании зоны: «rndc reload test.lala» (это правильная работа, т.е. нужно ли указывать зону? дело в том, что в моей тестовой среде лишь 1 зона в named.conf.local, а у него несколько). При подмене ключа в rndc.key на слэйве на ключ мастера работать как у меня все равно не стало (т.е. одной команды rndc reload на мастере оказалось недостаточно для обновления зоны на слэйве).



Вопрос: как грамотно сделать так, чтобы обновить зону на слэйвах можно было одной командой с мастера? В моем случае и так работает, но это явно «не комильфо». Стоит смотреть в сторону rndc generate key, этого будет достаточно?



Буду благодарен за ответы и комментарии, ситуация, как мне кажется, необычная.

nokogerra
() автор топика
Ответ на: комментарий от nokogerra

Достаточно rndc reload на мастере, слейвы должны обновиться, так как получат от мастера уведомления об обновлении зоны. То есть, это дефолтное поведение. Если это не работает, значит, что-то напортачили в настройках.

Black_Shadow ★★★★★
()
Последнее исправление: Black_Shadow (всего исправлений: 1)
Ответ на: комментарий от nokogerra

Вопрос: как грамотно сделать так, чтобы обновить зону
на слэйвах можно было одной командой с мастера ?

Это так и должно быть, notify за это и отвечает. serial исправно увеличиваешь у зоны ? Одинаковый rndc.key не хорошо, теоретически, но это тут не влияет. Это только лишь для возможности управлять bind-ом посредством rndc, а ты, всё равно, через rndc reload дёргаешь только локальный bind, например, мастер.

AS ★★★★★
()
Ответ на: комментарий от beastie

Где вы нашли эти ключи, в man rndc я не увидел ни freeze, ни thaw. Собственно, и reload я там не увидел, хотя пользовался такой командой.

nokogerra
() автор топика
Ответ на: комментарий от nokogerra

Я же говорю, в моем случае команда rndc reload на мастере обновляет зоны и на слэйвах.

И что ? Какая разница, у тебя не работает, или у товарища ? Читать логи и думать, что не так. Должно работать.

AS ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.