Практикум по RFC 1982, 1995 и 1996

Передача DNS-зоны: SERIAL, IXFR и NOTIFY

Разберите сравнение версий DNS-зоны, полные и инкрементальные ответы, применение разностей и проверку после NOTIFY. Все ситуации решаются по уроку и приведённым данным; настройки конкретной реализации проверяются отдельно.

Практика → проверка решения150 минут10 модулей20 вопросов
После курса

Что вы сможете сделать

  1. Сравнивать SOA SERIAL с учётом циклического пространства и неопределённых пар.
  2. Определять состав IXFR и момент завершения обработки изменений.
  3. Учитывать доступную историю при смене источника передачи зоны.
  4. Различать получение NOTIFY, проверку SOA и обновление рабочей копии.
Модуль 1 из 10

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 в ноль.

Модуль 2 из 10

Как сравнить две версии зоны

Отделяйте равенство значений, определённый порядок и ровно половину пространства. Для вывода о порядке достаточно чисел, а для вывода о содержимом копии нужны отдельные наблюдения.

  • Для двух разных значений SOA SERIAL с абсолютной разностью меньше 2 147 483 648 более новым считается большее целое. При разности больше 2 147 483 648 более новым считается меньшее целое.

  • Два SOA SERIAL, различающиеся ровно на 2 147 483 648, не равны, но их порядок не определён. Реализация может вернуть любой порядок или ошибку; пользователю нельзя полагаться на один конкретный результат.

Модуль 3 из 10

Серия шагов и период SOA.expire

Положительный шаг сравнивают с предыдущим состоянием; всю последовательность — ещё и с исходным. Для бумажных примеров задаём малое кольцо 0–255, модуль 256 и допустимую прибавку 0–127; это учебная модель, не размер SERIAL в DNS.

  • Одно определённое положительное увеличение делает SERIAL больше предыдущего в серийном порядке. Несколько допустимых увеличений не гарантируют, что итог больше исходного SERIAL. Если сумма шагов положительна и остаётся в диапазоне определённого увеличения, итог больше исходного.

  • RFC 1982 рекомендует следить, чтобы суммарное увеличение SOA SERIAL за период SOA.expire не превышало 2 147 483 647. Каждый шаг начинает собственную последовательность и продолжает предыдущие последовательности, начатые в этом периоде. При вынужденном отступлении следует проверить следование всех серверов за каждым шагом.

Модуль 4 из 10

Кто запрашивает и что означает одиночная SOA

Клиентом IXFR в данном обмене служит сервер, который получает копию зоны. Один и тот же узел может в другом обмене отвечать на передачу. Всегда называйте направление действия.

  • Клиент IXFR — вторичный сервер, который запрашивает передачу; сервером IXFR может быть первичный или вторичный сервер. Запрос имеет тип IXFR и содержит SOA версии клиента в секции Authority.

  • Одиночная SOA в ответе IXFR имеет разные причины: версия клиента совпадает с серверной или новее неё, либо полный ответ не помещается в UDP-пакет. Во втором случае SOA текущей версии сервера указывает клиенту на необходимость запроса IXFR по TCP.

Модуль 5 из 10

Полная зона и инкрементальный ответ

Название IXFR описывает запрос, а состав ответа зависит от сервера и доступной истории. Начало ответа помогает распознать формат, но ещё не подтверждает завершение передачи.

  • Если инкрементальная передача недоступна, на запрос IXFR возвращается полная зона. Сервер также может выбрать полный ответ. Первая и последняя ресурсные записи полного ответа — SOA зоны, а тип запроса остаётся IXFR.

  • В инкрементальном ответе список последовательностей изменений окружён SOA текущей версии сервера. Ответ начинается с двух SOA: сначала текущей версии сервера, затем заменяемой версии клиента.

Модуль 6 из 10

Удаления, добавления и момент переключения

Принимайте разности как последовательность изменений рабочей копии. Переданная часть набора записей не заменяет весь набор автоматически.

  • Одна последовательность разностей IXFR содержит удаляемые, затем добавляемые записи. Список удалений начинается со старой SOA, список добавлений — с новой SOA. Изменение записи передаётся удалением прежней и добавлением изменённой записи; остальные записи того же типа могут не передаваться.

  • Последовательности разностей IXFR идут от самых старых изменений к самым новым. Они описывают историю от версии, известной клиенту, до текущей версии сервера.

  • Клиенту IXFR следует заменять старую версию зоны новой только после успешной обработки всех разностей.

Модуль 7 из 10

Сохранение зоны и границы истории

Сохранение текущей зоны и удержание её прежних версий решают разные задачи. Рекомендация по размеру ответа и разрешение удалять историю не задают универсальных настроек продукта.

  • Обновлённую зону следует сохранять в устойчивом хранилище до использования новой версии в ответах IXFR или AXFR. Иначе сбой сервера может оставить вторичным серверам данные, которых у восстановленного источника уже нет.

  • Серверу IXFR рекомендуется хранить текущую зону и различия с несколькими старыми версиями. Хранить все прежние версии бесконечно сервер не обязан; старые версии разрешено удалять в любое время.

  • RFC 1995 рекомендует удалять информацию о старых версиях, если суммарная длина ответа IXFR превысила бы длину ответа AXFR. Для описанной стратегии документ указывает верхнюю границу хранения вдвое больше текущей зоны.

  • Информацию о версиях старше периода SOA.expire также разрешено удалять из истории IXFR.

Модуль 8 из 10

Свёртка и другой источник передачи

Сравнивайте историю каждого источника с версией клиента. Равенство текущих SERIAL двух источников ещё не показывает, какие промежуточные версии доступны на каждом.

  • Сервер IXFR может свести несколько последовательностей разностей в одну и отбросить сведения о промежуточных версиях. Эта свёртка необязательна; по ответу клиент не может определить, применялась ли свёртка.

  • Разная свёртка истории на двух серверах может сделать версию клиента, полученную от первого сервера, неизвестной второму. Тогда нужна полная передача. При неизвестной версии в запросе серверу рекомендуется не выдавать ошибку по этой причине, а попытаться выполнить полную передачу.

Модуль 9 из 10

Известный источник и предел подсказки

В NOTIFY отправитель сообщает о возможном изменении, а получатель решает, нужна ли отдельная проверка. Notify Set, зависимости передачи и доверенный источник относятся к конкретной зоне.

  • В RFC 1996 master — авторитетный сервер, настроенный как источник передачи зоны, а primary master находится в корне этой зависимости и указан в SOA MNAME. По умолчанию Notify Set содержит серверы из NS зоны, кроме указанного в SOA MNAME; скрытый сервер без NS может требовать явного добавления.

  • В графе зависимостей передачи зоны должен быть один primary master. Остальные серверы получают зону от него или от промежуточного сервера, который сам получает копию и служит источником для других. Циклы в графе AXFR не допускаются.

  • Секция Answer запроса NOTIFY является незащищённой подсказкой. Её нельзя использовать для изменения локальной зоны, решения о начале передачи или изменения таймеров обновления. Совпавшая с локальными данными подсказка может позволить получателю не выполнять дальнейшую проверку.

  • Получателю NOTIFY рекомендуется игнорировать запрос от узла, который не известен как источник передачи этой зоны, и записывать ошибку в журнал. Для источника с несколькими интерфейсами нужно учитывать адреса, с которых могут прийти уведомления.

Модуль 10 из 10

Получение уведомления и обновление копии

Подтверждение относится к доставке конкретного события конкретному серверу. Проверка 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 секунд приведены как подходящий пример для общей локальной сети и зон умеренного размера.

Финишная прямая

Проверьте инженерное мышление

Вопросы проверяют не память на аббревиатуры, а умение не делать лишних выводов.

01Оператор увеличивает SOA SERIAL с 4 294 967 294 на 4. Какое значение он должен получить по модулю 2³²?
02Инженер выбирает наибольшую из предложенных прибавок n, для которой одно увеличение SOA SERIAL определено в RFC 1982. Какое значение проходит эту проверку?
03Оператор сравнивает SOA SERIAL, равный нулю, с каждым номером из списка. При каком втором номере RFC 1982 оставляет порядок этой пары неопределённым?
04Оператор сопоставляет SOA SERIAL двух копий: 4 294 967 295 и 1. Как оценить эту пару именно в серийном порядке?
05Инженер использует учебное кольцо 0–255 с модулем 256. Он начинает с 90 и выполняет две прибавки по 100. Чему равен конечный номер?
06Оператор запланировал две прибавки SOA SERIAL по 1 200 000 000 за один период SOA.expire. Каждая отдельно допустима. Какой вывод учитывает рекомендацию RFC 1982 о всей последовательности?
07Вторичный сервер C с версией 18 запрашивает IXFR у источника S с версией 21. Какую SOA должен поместить C в запрос по формату RFC 1995?
08Клиент IXFR хранит SERIAL 50. По UDP он получил единственную SOA с SERIAL 52 и никаких данных зоны. Что RFC 1995 рекомендует этому клиенту дальше?
09Клиент отправил QTYPE=IXFR. Сервер вернул полную зону, окружённую её текущей SOA, сохранив этот тип запроса. Как клиенту оценить формат по RFC 1995?
10Клиент хранит версию 8. Ответ начинается SOA 10, SOA 8, затем идут удаляемые записи. Какой вывод о начале обмена делает клиент по RFC 1995?
11Клиент IXFR с рабочей версией 7 обрабатывает разности 7→8 и 8→9. Первая обработана, вторая оборвалась. Какому условию переключения копии следует этот клиент по RFC 1995?
12У клиента две A-записи имени: 192.0.2.10 и 192.0.2.11. В принятой разности удаляется .10 и добавляется .12; запись .11 не упомянута. Как клиенту применить эту разность?
13Сервер раздал новую версию зоны, оставив на устойчивом хранилище старую, затем аварийно перезапустился. Какой порядок действий этому серверу рекомендует RFC 1995 для снижения такого риска?
14Инженер сравнил длины ответов IXFR и AXFR: они равны. Как ему применить именно рекомендацию RFC 1995 об удалении истории, когда IXFR длиннее AXFR?
15Клиент получил корректный инкрементальный ответ. Может ли этот клиент по одному такому ответу определить, сворачивал ли источник несколько изменений в одно?
16Клиент получил версию 12 от A. Сервер B сейчас имеет 15, но не знает 12 после свёртки истории. Какой ответ на IXFR от этого клиента рекомендует подготовить B?
17Сервер получил NOTIFY для своей зоны от адреса, которого нет среди известных ему источников этой зоны. Какое действие получателя рекомендует RFC 1996?
18Сервер получил NOTIFY от известного источника зоны. SOA в Answer отличается от локальной. Как этому получателю использовать подсказку по RFC 1996?
19Отправитель NOTIFY получил от целевого сервера ответ с ожидаемыми полями сопоставления для этого события. Что вправе отметить отправитель на основании такого ответа?
20Получатель знает источники A и B. A обновился и прислал NOTIFY, а B ещё хранит прежнюю версию. У кого получателю следует проверить SOA по RFC 1996?

Следующий шаг

Сформулируйте задачу, затем уточните требования перед выбором оборудования.

Разобрать свою задачу с Делектусом

Откроется черновик вопроса. Отправьте его, когда будете готовы.

Проверяемая база

Источники курса

Ссылки приведены один раз для всего курса, чтобы не мешать чтению каждого тезиса.

  • Первичная спецификация

    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. Прежняя дата получения сохранена. Последующие документы и текущие реализации не проверялись.

    Открыть первоисточник
Сообщить об ошибке

Опишите проблему — постараемся исправить как можно скорее.

Спасибо!

Получили ваше сообщение.
Подтвердите действие