DNS и разрешение имён · проверено по источникам

SOA SERIAL: сравнение и переход через границу

SERIAL в записи SOA — версия зоны в 32-битном циклическом пространстве. RFC 1982 задаёт отдельные правила увеличения и сравнения: после перехода через границу меньшее целое может обозначать более новую версию.

Также ищут: DNS serial number arithmetic · Серийная арифметика SOA

Практический смысл

Почему это важно

Практическое пояснение: при проверке копий зоны обычная сортировка целых чисел может выбрать устаревшую копию. Нужны серийное сравнение, история увеличений и наблюдения по каждому серверу.

Доказательная часть

Что подтверждено

  1. SERIAL записи SOA принимает целые значения от 0 до 4 294 967 295. Для DNS SERIAL_BITS равен 32; в серийном порядке нет выделенных наименьшего и наибольшего значений, у каждого значения есть предшественник и преемник.

    Граница применимости: RFC 1982, август 1996 года; разделы 2 и 7, стр. 2 и 6. Диапазон целочисленного представления отделён от циклического порядка версий. Это не календарная шкала времени.

  2. Для SOA SERIAL определено прибавление n от 0 до 2 147 483 647 включительно. Результат равен (s + n) по модулю 4 294 967 296. Прибавление числа вне этого диапазона документ оставляет неопределённым.

    Граница применимости: RFC 1982, август 1996 года; разделы 3.1 и 7, стр. 2–3 и 6. Ноль разрешён как прибавляемое значение и не меняет SERIAL. Увеличение на половину пространства уже находится вне определённого диапазона.

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

    Граница применимости: RFC 1982, август 1996 года; разделы 3.2 и 7, стр. 3 и 6. Это серийное сравнение двух значений. Строгие неравенства не включают ровно половину пространства.

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

    Граница применимости: RFC 1982, август 1996 года; разделы 3.2 и 7, стр. 3–4 и 6. Неопределённый порядок не является равенством или доказательством того, какая копия зоны новее.

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

    Граница применимости: RFC 1982, август 1996 года; разделы 4.1–4.4 и 5.2, стр. 4–5. Больше здесь означает серийный порядок, а не обычный порядок целых. В учебном 8-битном примере 100 → 200 → 44 итог сравнивается с исходным отдельно.

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

    Граница применимости: RFC 1982, август 1996 года; раздел 7, стр. 6. Сохранены предостережение care should be taken и специальная проверка ALL servers. Это не оценка только последнего шага и не новый срок хранения кэша.

  7. Ноль не имеет особого значения в серийной арифметике или SOA SERIAL. RFC 1982 предупреждает, что некоторые реализации ошибочно обрабатывали ноль как специальное значение, и рекомендует осторожность перед установкой SERIAL в ноль.

    Граница применимости: RFC 1982, август 1996 года; раздел 7, стр. 6. Математическая допустимость нуля сохранена. Наблюдение документа 1996 года не объявляется результатом проверки сегодняшнего DNS-сервера.

Перед спецификацией

Что проверить

  1. Запишите SERIAL каждой копии зоны и роль соответствующего сервера.
  2. Перед выбором более новой копии исключите разность ровно в половину пространства.
  3. Проверьте диапазон прибавляемого числа и результат операции по модулю 2³².
  4. Сравнивайте итог серии увеличений и с предыдущим, и с исходным SERIAL.
  5. Проверяйте накопленное увеличение в каждом рассматриваемом периоде SOA.expire.
  6. При вынужденной смене направления проверьте все серверы после каждого шага.
  7. Отдельно проверьте поведение выбранной реализации при SERIAL, равном нулю.
Открытые основания

Первоисточники

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

    Serial Number Arithmetic

    Internet Engineering Task Force · RFC 1982, August 1996

    Полный RFC 1982 (август 1996, 7 страниц) прочитан локально 2026-09-09. Сверены диапазон и операции SOA SERIAL, неопределённые пары и SOA.expire. retrieved_on — дата постановки в очередь. Последующие документы и текущие реализации не проверялись.

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

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

Спасибо!

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