Я использую порт BIND 9.10.2 на FreeBSD 10 в закрытой конфигурации, и у меня проблема rndc reload
не принимает никаких изменений файла зоны (основного главного), даже если серийный номер SOA правильно увеличен.
Сама команда кажется успешной:
#rndc reload
server reload successful
В логах вижу:
May 9 16:03:47 y named[81516]: all zones loaded
May 9 16:03:47 y named[81516]: running
И пока только перезапуск named
подхватывает обновления зоны.
rndc zonestatus my_zone.com
печатает старый серийник. Итак, BIND каким-то образом не может перечитать файл зоны.
Как я могу это отладить?
Если это действительно динамически обновляемая зона (allow-update
/ update-policy
указано), напрямую редактировать файл зоны небезопасно!
В такой настройке файл зоны поддерживает BIND; буферизация изменений в файле журнала (.jnl
) и периодически перезаписывать сам файл зоны.
Ожидается, что все изменения в данных зоны будут происходить через протокол динамического обновления и управляться BIND, а не путем прямого изменения файла зоны. В любом случае изменение файла зоны вызовет несогласованное поведение, поскольку содержимое файла зоны не будет синхронизироваться с содержимым журнала и состоянием named
.
Короче говоря, обычно вы вносите все изменения в такую зону, используя динамические обновления (например, используя nsupdate
или любой другой клиент), но если вам по какой-то причине абсолютно необходим прямой контроль над файлом зоны, вы можете временно приостановить динамические обновления, используя rndc freeze
а затем возобновите использование rndc thaw
). Приостановка обновлений - довольно назойливая операция (любые обновления не будут выполнены, а история изменений может быть стерта в зависимости от ixfr-from-differences
), поэтому вам, вероятно, не следует этого делать во время нормальной работы.