Назад | Перейти на главную страницу

Переход к более совершенной схеме порядковой нумерации DNS

Недавно я «унаследовал» крошечный DNS-сервер bind9 (64 МБ ОЗУ, работающий только с bind9 + ssh), где зоны были созданы с использованием приложения с графическим интерфейсом, а затем scp-адреса на сервере как root. Я не особо возражал против этой части, но оказалось, что приложение с графическим интерфейсом при каждом редактировании делало непоследовательные серийные номера, что приводило к таким серийным номерам, как 1245486432 вместо «обычного» (?) ГГГГММДДСС.

Есть ли «безопасный» способ увеличить / уменьшить серийный номер без каких-либо несоответствий между DNS-серверами и кешами?

Серийный номер используется ведомыми устройствами для определения того, имеет ли файл зоны ту же версию, что и ведущее устройство. Когда серийный номер мастера увеличивается, они знают, что им нужно AXFR создать новую копию. Единственный вред будет от декремента, потому что подчиненные будут думать, что у них более поздняя ревизия, чем у мастера.

Для этого есть два решения. Самый простой - уменьшить значение вашего мастера, удалить копии с ведомых устройств и затем перезагрузить их. Однако это не сработает, если вы не полностью контролируете рабов. В этом случае решение предоставляется в Справочное руководство.

Добавьте 2147483647 (2 ^ 31-1) к номеру, перезагрузите зону и убедитесь, что все ведомые устройства обновили до нового серийного номера зоны, затем сбросьте номер на то, что вы хотите, и перезагрузите зону снова.

Отметим, что для хранения версии лучше использовать последние две цифры серийного номера, а не секунды. т.е. ГГГГММДДРР. Это позволяет вам делать несколько обновлений в течение одного дня.

Я использовал некоторую "волшебную" арифметику серийных номеров DNS, чтобы вернуться к более регулярной схеме YYYYMMDDSS, однако у меня была подстраховочная система, позволяющая вручную принудительно принудительно отправлять подчиненные устройства и очищать кеши, если это необходимо.

RFC 1982 определяет максимальное приращение 2147483647 (2 ^ 31-1), а DNS & Bind Cookbook есть рецепт сброса серийника таким способом. В основном добавьте максимальное приращение к вашему текущему серийному номеру, перезагрузите свою зону, дождитесь, пока ведомые устройства примут изменение, измените серийный номер на то, что вы хотите, и снова перезагрузите свою зону.

Увеличение безопасно, поскольку x> y является тестом, однако для уменьшения вам часто требуется контроль над всеми подчиненными серверами, чтобы заставить их загружать (что они думают) старую зону.

Это зависит от подчиненных устройств, но для Bind самый простой способ - остановить, запустить подчиненный файл и запустить его. Вы можете принудительно перезагрузить через RNDC, если хотите это узнать.