Практикум по RFC 1982, 1995 и 1996
Передача DNS-зоны: SERIAL, IXFR и NOTIFY
Разберите сравнение версий DNS-зоны, полные и инкрементальные ответы, применение разностей и проверку после NOTIFY. Все ситуации решаются по уроку и приведённым данным; настройки конкретной реализации проверяются отдельно.
Что вы сможете сделать
- Сравнивать SOA SERIAL с учётом циклического пространства и неопределённых пар.
- Определять состав IXFR и момент завершения обработки изменений.
- Учитывать доступную историю при смене источника передачи зоны.
- Различать получение NOTIFY, проверку SOA и обновление рабочей копии.
SERIAL: значение и допустимое увеличение
Курс опирается на сохранённые RFC 1982, 1995 и 1996 от августа 1996 года. Начните с числового пространства версии зоны. Особенности конкретного DNS-сервера проверяются отдельно.
SERIAL записи SOA принимает целые значения от 0 до 4 294 967 295. Для DNS SERIAL_BITS равен 32; в серийном порядке нет выделенных наименьшего и наибольшего значений, у каждого значения есть предшественник и преемник.
Проверить тезис: SOA SERIAL: сравнение и переход через границу 01
Для SOA SERIAL определено прибавление n от 0 до 2 147 483 647 включительно. Результат равен (s + n) по модулю 4 294 967 296. Прибавление числа вне этого диапазона документ оставляет неопределённым.
Проверить тезис: SOA SERIAL: сравнение и переход через границу 02
Ноль не имеет особого значения в серийной арифметике или SOA SERIAL. RFC 1982 предупреждает, что некоторые реализации ошибочно обрабатывали ноль как специальное значение, и рекомендует осторожность перед установкой SERIAL в ноль.
Проверить тезис: SOA SERIAL: сравнение и переход через границу 07
Как сравнить две версии зоны
Отделяйте равенство значений, определённый порядок и ровно половину пространства. Для вывода о порядке достаточно чисел, а для вывода о содержимом копии нужны отдельные наблюдения.
Для двух разных значений SOA SERIAL с абсолютной разностью меньше 2 147 483 648 более новым считается большее целое. При разности больше 2 147 483 648 более новым считается меньшее целое.
Проверить тезис: SOA SERIAL: сравнение и переход через границу 03
Два SOA SERIAL, различающиеся ровно на 2 147 483 648, не равны, но их порядок не определён. Реализация может вернуть любой порядок или ошибку; пользователю нельзя полагаться на один конкретный результат.
Проверить тезис: SOA SERIAL: сравнение и переход через границу 04
Серия шагов и период SOA.expire
Положительный шаг сравнивают с предыдущим состоянием; всю последовательность — ещё и с исходным. Для бумажных примеров задаём малое кольцо 0–255, модуль 256 и допустимую прибавку 0–127; это учебная модель, не размер SERIAL в DNS.
Одно определённое положительное увеличение делает SERIAL больше предыдущего в серийном порядке. Несколько допустимых увеличений не гарантируют, что итог больше исходного SERIAL. Если сумма шагов положительна и остаётся в диапазоне определённого увеличения, итог больше исходного.
Проверить тезис: SOA SERIAL: сравнение и переход через границу 05
RFC 1982 рекомендует следить, чтобы суммарное увеличение SOA SERIAL за период SOA.expire не превышало 2 147 483 647. Каждый шаг начинает собственную последовательность и продолжает предыдущие последовательности, начатые в этом периоде. При вынужденном отступлении следует проверить следование всех серверов за каждым шагом.
Проверить тезис: SOA SERIAL: сравнение и переход через границу 06
Кто запрашивает и что означает одиночная SOA
Клиентом IXFR в данном обмене служит сервер, который получает копию зоны. Один и тот же узел может в другом обмене отвечать на передачу. Всегда называйте направление действия.
Клиент IXFR — вторичный сервер, который запрашивает передачу; сервером IXFR может быть первичный или вторичный сервер. Запрос имеет тип IXFR и содержит SOA версии клиента в секции Authority.
Проверить тезис: IXFR: состав ответа и применение изменений 01
Одиночная SOA в ответе IXFR имеет разные причины: версия клиента совпадает с серверной или новее неё, либо полный ответ не помещается в UDP-пакет. Во втором случае SOA текущей версии сервера указывает клиенту на необходимость запроса IXFR по TCP.
Проверить тезис: IXFR: состав ответа и применение изменений 07
Полная зона и инкрементальный ответ
Название IXFR описывает запрос, а состав ответа зависит от сервера и доступной истории. Начало ответа помогает распознать формат, но ещё не подтверждает завершение передачи.
Если инкрементальная передача недоступна, на запрос IXFR возвращается полная зона. Сервер также может выбрать полный ответ. Первая и последняя ресурсные записи полного ответа — SOA зоны, а тип запроса остаётся IXFR.
Проверить тезис: IXFR: состав ответа и применение изменений 02
В инкрементальном ответе список последовательностей изменений окружён SOA текущей версии сервера. Ответ начинается с двух SOA: сначала текущей версии сервера, затем заменяемой версии клиента.
Проверить тезис: IXFR: состав ответа и применение изменений 03
Удаления, добавления и момент переключения
Принимайте разности как последовательность изменений рабочей копии. Переданная часть набора записей не заменяет весь набор автоматически.
Одна последовательность разностей IXFR содержит удаляемые, затем добавляемые записи. Список удалений начинается со старой SOA, список добавлений — с новой SOA. Изменение записи передаётся удалением прежней и добавлением изменённой записи; остальные записи того же типа могут не передаваться.
Проверить тезис: IXFR: состав ответа и применение изменений 04
Последовательности разностей IXFR идут от самых старых изменений к самым новым. Они описывают историю от версии, известной клиенту, до текущей версии сервера.
Проверить тезис: IXFR: состав ответа и применение изменений 05
Клиенту IXFR следует заменять старую версию зоны новой только после успешной обработки всех разностей.
Проверить тезис: IXFR: состав ответа и применение изменений 06
Сохранение зоны и границы истории
Сохранение текущей зоны и удержание её прежних версий решают разные задачи. Рекомендация по размеру ответа и разрешение удалять историю не задают универсальных настроек продукта.
Обновлённую зону следует сохранять в устойчивом хранилище до использования новой версии в ответах IXFR или AXFR. Иначе сбой сервера может оставить вторичным серверам данные, которых у восстановленного источника уже нет.
Проверить тезис: IXFR: хранение истории и переход к полной передаче 01
Серверу IXFR рекомендуется хранить текущую зону и различия с несколькими старыми версиями. Хранить все прежние версии бесконечно сервер не обязан; старые версии разрешено удалять в любое время.
Проверить тезис: IXFR: хранение истории и переход к полной передаче 02
RFC 1995 рекомендует удалять информацию о старых версиях, если суммарная длина ответа IXFR превысила бы длину ответа AXFR. Для описанной стратегии документ указывает верхнюю границу хранения вдвое больше текущей зоны.
Проверить тезис: IXFR: хранение истории и переход к полной передаче 03
Информацию о версиях старше периода SOA.expire также разрешено удалять из истории IXFR.
Проверить тезис: IXFR: хранение истории и переход к полной передаче 04
Свёртка и другой источник передачи
Сравнивайте историю каждого источника с версией клиента. Равенство текущих SERIAL двух источников ещё не показывает, какие промежуточные версии доступны на каждом.
Сервер IXFR может свести несколько последовательностей разностей в одну и отбросить сведения о промежуточных версиях. Эта свёртка необязательна; по ответу клиент не может определить, применялась ли свёртка.
Проверить тезис: IXFR: хранение истории и переход к полной передаче 05
Разная свёртка истории на двух серверах может сделать версию клиента, полученную от первого сервера, неизвестной второму. Тогда нужна полная передача. При неизвестной версии в запросе серверу рекомендуется не выдавать ошибку по этой причине, а попытаться выполнить полную передачу.
Проверить тезис: IXFR: хранение истории и переход к полной передаче 06
Известный источник и предел подсказки
В NOTIFY отправитель сообщает о возможном изменении, а получатель решает, нужна ли отдельная проверка. Notify Set, зависимости передачи и доверенный источник относятся к конкретной зоне.
В RFC 1996 master — авторитетный сервер, настроенный как источник передачи зоны, а primary master находится в корне этой зависимости и указан в SOA MNAME. По умолчанию Notify Set содержит серверы из NS зоны, кроме указанного в SOA MNAME; скрытый сервер без NS может требовать явного добавления.
Проверить тезис: DNS NOTIFY: проверка зоны после уведомления 01
В графе зависимостей передачи зоны должен быть один primary master. Остальные серверы получают зону от него или от промежуточного сервера, который сам получает копию и служит источником для других. Циклы в графе AXFR не допускаются.
Проверить тезис: DNS NOTIFY: проверка зоны после уведомления 02
Секция Answer запроса NOTIFY является незащищённой подсказкой. Её нельзя использовать для изменения локальной зоны, решения о начале передачи или изменения таймеров обновления. Совпавшая с локальными данными подсказка может позволить получателю не выполнять дальнейшую проверку.
Проверить тезис: DNS NOTIFY: проверка зоны после уведомления 03
Получателю NOTIFY рекомендуется игнорировать запрос от узла, который не известен как источник передачи этой зоны, и записывать ошибку в журнал. Для источника с несколькими интерфейсами нужно учитывать адреса, с которых могут прийти уведомления.
Проверить тезис: DNS NOTIFY: проверка зоны после уведомления 04
Получение уведомления и обновление копии
Подтверждение относится к доставке конкретного события конкретному серверу. Проверка SOA и передача зоны имеют собственные результаты и не выводятся из факта получения ответа NOTIFY.
В этой версии NOTIFY определено уведомление об изменении SOA. Получателю рекомендуется запросить SOA у известного источника, приславшего уведомление, и проверить увеличение SERIAL; при увеличении следует начать AXFR или IXFR. Другой известный источник может ещё не успеть обновить копию.
Проверить тезис: DNS NOTIFY: проверка зоны после уведомления 05
Ответ NOTIFY подтверждает получение уведомления и позволяет отправителю убрать событие для этого получателя из очереди повторов. Для UDP отправитель сопоставляет ответ по query ID, QNAME, IP-адресу и UDP-порту источника. Такое подтверждение не означает завершение передачи зоны.
Проверить тезис: DNS NOTIFY: проверка зоны после уведомления 06
Промежуточный сервер должен отправлять NOTIFY дальше только после обновления своей SOA или установления, что обновление не нужно. Получателю рекомендуется отложить обработку повторного NOTIFY с теми же QNAME, QCLASS и QTYPE до завершения начатой обработки.
Проверить тезис: DNS NOTIFY: проверка зоны после уведомления 07
Источник зоны может задержать отправку NOTIFY, чтобы разнести начало передач во времени, но задержка не должна превышать SOA REFRESH. Случайные 30–60 секунд приведены как подходящий пример для общей локальной сети и зон умеренного размера.
Проверить тезис: DNS NOTIFY: проверка зоны после уведомления 08
Проверьте инженерное мышление
Вопросы проверяют не память на аббревиатуры, а умение не делать лишних выводов.
Источники курса
Полные сведения о первоисточниках приведены один раз для всего курса. Под тезисами — ссылки на соответствующие утверждения Архивариума.
- Первичная спецификация
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. Прежняя дата получения сохранена. Последующие документы и текущие реализации не проверялись.
Открыть первоисточник