SERIAL: значение и допустимое увеличение
Курс опирается на сохранённые RFC 1982, 1995 и 1996 от августа 1996 года. Начните с числового пространства версии зоны. Особенности конкретного DNS-сервера проверяются отдельно.
SERIAL записи SOA принимает целые значения от 0 до 4 294 967 295. Для DNS SERIAL_BITS равен 32; в серийном порядке нет выделенных наименьшего и наибольшего значений, у каждого значения есть предшественник и преемник.
Для SOA SERIAL определено прибавление n от 0 до 2 147 483 647 включительно. Результат равен (s + n) по модулю 4 294 967 296. Прибавление числа вне этого диапазона документ оставляет неопределённым.
Ноль не имеет особого значения в серийной арифметике или SOA SERIAL. RFC 1982 предупреждает, что некоторые реализации ошибочно обрабатывали ноль как специальное значение, и рекомендует осторожность перед установкой SERIAL в ноль.
Как сравнить две версии зоны
Отделяйте равенство значений, определённый порядок и ровно половину пространства. Для вывода о порядке достаточно чисел, а для вывода о содержимом копии нужны отдельные наблюдения.
Для двух разных значений SOA SERIAL с абсолютной разностью меньше 2 147 483 648 более новым считается большее целое. При разности больше 2 147 483 648 более новым считается меньшее целое.
Два SOA SERIAL, различающиеся ровно на 2 147 483 648, не равны, но их порядок не определён. Реализация может вернуть любой порядок или ошибку; пользователю нельзя полагаться на один конкретный результат.
Серия шагов и период SOA.expire
Положительный шаг сравнивают с предыдущим состоянием; всю последовательность — ещё и с исходным. Для бумажных примеров задаём малое кольцо 0–255, модуль 256 и допустимую прибавку 0–127; это учебная модель, не размер SERIAL в DNS.
Одно определённое положительное увеличение делает SERIAL больше предыдущего в серийном порядке. Несколько допустимых увеличений не гарантируют, что итог больше исходного SERIAL. Если сумма шагов положительна и остаётся в диапазоне определённого увеличения, итог больше исходного.
RFC 1982 рекомендует следить, чтобы суммарное увеличение SOA SERIAL за период SOA.expire не превышало 2 147 483 647. Каждый шаг начинает собственную последовательность и продолжает предыдущие последовательности, начатые в этом периоде. При вынужденном отступлении следует проверить следование всех серверов за каждым шагом.
Кто запрашивает и что означает одиночная SOA
Клиентом IXFR в данном обмене служит сервер, который получает копию зоны. Один и тот же узел может в другом обмене отвечать на передачу. Всегда называйте направление действия.
Клиент IXFR — вторичный сервер, который запрашивает передачу; сервером IXFR может быть первичный или вторичный сервер. Запрос имеет тип IXFR и содержит SOA версии клиента в секции Authority.
Одиночная SOA в ответе IXFR имеет разные причины: версия клиента совпадает с серверной или новее неё, либо полный ответ не помещается в UDP-пакет. Во втором случае SOA текущей версии сервера указывает клиенту на необходимость запроса IXFR по TCP.
Полная зона и инкрементальный ответ
Название IXFR описывает запрос, а состав ответа зависит от сервера и доступной истории. Начало ответа помогает распознать формат, но ещё не подтверждает завершение передачи.
Если инкрементальная передача недоступна, на запрос IXFR возвращается полная зона. Сервер также может выбрать полный ответ. Первая и последняя ресурсные записи полного ответа — SOA зоны, а тип запроса остаётся IXFR.
В инкрементальном ответе список последовательностей изменений окружён SOA текущей версии сервера. Ответ начинается с двух SOA: сначала текущей версии сервера, затем заменяемой версии клиента.
Удаления, добавления и момент переключения
Принимайте разности как последовательность изменений рабочей копии. Переданная часть набора записей не заменяет весь набор автоматически.
Одна последовательность разностей IXFR содержит удаляемые, затем добавляемые записи. Список удалений начинается со старой SOA, список добавлений — с новой SOA. Изменение записи передаётся удалением прежней и добавлением изменённой записи; остальные записи того же типа могут не передаваться.
Последовательности разностей IXFR идут от самых старых изменений к самым новым. Они описывают историю от версии, известной клиенту, до текущей версии сервера.
Клиенту IXFR следует заменять старую версию зоны новой только после успешной обработки всех разностей.
Сохранение зоны и границы истории
Сохранение текущей зоны и удержание её прежних версий решают разные задачи. Рекомендация по размеру ответа и разрешение удалять историю не задают универсальных настроек продукта.
Обновлённую зону следует сохранять в устойчивом хранилище до использования новой версии в ответах IXFR или AXFR. Иначе сбой сервера может оставить вторичным серверам данные, которых у восстановленного источника уже нет.
Серверу IXFR рекомендуется хранить текущую зону и различия с несколькими старыми версиями. Хранить все прежние версии бесконечно сервер не обязан; старые версии разрешено удалять в любое время.
RFC 1995 рекомендует удалять информацию о старых версиях, если суммарная длина ответа IXFR превысила бы длину ответа AXFR. Для описанной стратегии документ указывает верхнюю границу хранения вдвое больше текущей зоны.
Информацию о версиях старше периода SOA.expire также разрешено удалять из истории IXFR.
Свёртка и другой источник передачи
Сравнивайте историю каждого источника с версией клиента. Равенство текущих SERIAL двух источников ещё не показывает, какие промежуточные версии доступны на каждом.
Сервер IXFR может свести несколько последовательностей разностей в одну и отбросить сведения о промежуточных версиях. Эта свёртка необязательна; по ответу клиент не может определить, применялась ли свёртка.
Разная свёртка истории на двух серверах может сделать версию клиента, полученную от первого сервера, неизвестной второму. Тогда нужна полная передача. При неизвестной версии в запросе серверу рекомендуется не выдавать ошибку по этой причине, а попытаться выполнить полную передачу.
Известный источник и предел подсказки
В NOTIFY отправитель сообщает о возможном изменении, а получатель решает, нужна ли отдельная проверка. Notify Set, зависимости передачи и доверенный источник относятся к конкретной зоне.
В RFC 1996 master — авторитетный сервер, настроенный как источник передачи зоны, а primary master находится в корне этой зависимости и указан в SOA MNAME. По умолчанию Notify Set содержит серверы из NS зоны, кроме указанного в SOA MNAME; скрытый сервер без NS может требовать явного добавления.
В графе зависимостей передачи зоны должен быть один primary master. Остальные серверы получают зону от него или от промежуточного сервера, который сам получает копию и служит источником для других. Циклы в графе AXFR не допускаются.
Секция Answer запроса NOTIFY является незащищённой подсказкой. Её нельзя использовать для изменения локальной зоны, решения о начале передачи или изменения таймеров обновления. Совпавшая с локальными данными подсказка может позволить получателю не выполнять дальнейшую проверку.
Получателю NOTIFY рекомендуется игнорировать запрос от узла, который не известен как источник передачи этой зоны, и записывать ошибку в журнал. Для источника с несколькими интерфейсами нужно учитывать адреса, с которых могут прийти уведомления.
Получение уведомления и обновление копии
Подтверждение относится к доставке конкретного события конкретному серверу. Проверка SOA и передача зоны имеют собственные результаты и не выводятся из факта получения ответа NOTIFY.
В этой версии NOTIFY определено уведомление об изменении SOA. Получателю рекомендуется запросить SOA у известного источника, приславшего уведомление, и проверить увеличение SERIAL; при увеличении следует начать AXFR или IXFR. Другой известный источник может ещё не успеть обновить копию.
Ответ NOTIFY подтверждает получение уведомления и позволяет отправителю убрать событие для этого получателя из очереди повторов. Для UDP отправитель сопоставляет ответ по query ID, QNAME, IP-адресу и UDP-порту источника. Такое подтверждение не означает завершение передачи зоны.
Промежуточный сервер должен отправлять NOTIFY дальше только после обновления своей SOA или установления, что обновление не нужно. Получателю рекомендуется отложить обработку повторного NOTIFY с теми же QNAME, QCLASS и QTYPE до завершения начатой обработки.
Источник зоны может задержать отправку NOTIFY, чтобы разнести начало передач во времени, но задержка не должна превышать SOA REFRESH. Случайные 30–60 секунд приведены как подходящий пример для общей локальной сети и зон умеренного размера.
Проверьте инженерное мышление
Вопросы проверяют не память на аббревиатуры, а умение не делать лишних выводов.
Следующий шаг
Сформулируйте задачу, затем уточните требования перед выбором оборудования.
Разобрать свою задачу с ДелектусомОткроется черновик вопроса. Отправьте его, когда будете готовы.
Источники курса
Ссылки приведены один раз для всего курса, чтобы не мешать чтению каждого тезиса.
- Первичная спецификация
Serial Number Arithmetic
Internet Engineering Task Force · RFC 1982, August 1996
Полный RFC 1982 (август 1996, 7 страниц) прочитан локально 2026-09-09. Сверены диапазон и операции SOA SERIAL, неопределённые пары и SOA.expire. retrieved_on — дата постановки в очередь. Последующие документы и текущие реализации не проверялись.
Открыть первоисточник - Первичная спецификация
Incremental Zone Transfer in DNS
Internet Engineering Task Force · RFC 1995, August 1996
Полный RFC 1995 (август 1996, 8 страниц) прочитан локально 2026-09-09. Сверены запрос и ответы IXFR, применение разностей, сохранение зоны, удаление и свёртка истории. Прежняя дата получения сохранена. Последующие документы и текущие реализации не проверялись.
Открыть первоисточник - Первичная спецификация
A Mechanism for Prompt Notification of Zone Changes (DNS NOTIFY)
Internet Engineering Task Force · RFC 1996, August 1996
Полный RFC 1996 (август 1996, 7 страниц) прочитан локально 2026-09-09. Сверены Notify Set, известный источник, проверка SOA, границы подсказок и подтверждений, распространение NOTIFY. Прежняя дата получения сохранена. Последующие документы и текущие реализации не проверялись.
Открыть первоисточник