Почему это важно
Практическое пояснение: при проверке копий зоны обычная сортировка целых чисел может выбрать устаревшую копию. Нужны серийное сравнение, история увеличений и наблюдения по каждому серверу.
Что подтверждено
SERIAL записи SOA принимает целые значения от 0 до 4 294 967 295. Для DNS SERIAL_BITS равен 32; в серийном порядке нет выделенных наименьшего и наибольшего значений, у каждого значения есть предшественник и преемник.
Граница применимости: RFC 1982, август 1996 года; разделы 2 и 7, стр. 2 и 6. Диапазон целочисленного представления отделён от циклического порядка версий. Это не календарная шкала времени.
Для SOA SERIAL определено прибавление n от 0 до 2 147 483 647 включительно. Результат равен (s + n) по модулю 4 294 967 296. Прибавление числа вне этого диапазона документ оставляет неопределённым.
Граница применимости: RFC 1982, август 1996 года; разделы 3.1 и 7, стр. 2–3 и 6. Ноль разрешён как прибавляемое значение и не меняет SERIAL. Увеличение на половину пространства уже находится вне определённого диапазона.
Для двух разных значений SOA SERIAL с абсолютной разностью меньше 2 147 483 648 более новым считается большее целое. При разности больше 2 147 483 648 более новым считается меньшее целое.
Граница применимости: RFC 1982, август 1996 года; разделы 3.2 и 7, стр. 3 и 6. Это серийное сравнение двух значений. Строгие неравенства не включают ровно половину пространства.
Два SOA SERIAL, различающиеся ровно на 2 147 483 648, не равны, но их порядок не определён. Реализация может вернуть любой порядок или ошибку; пользователю нельзя полагаться на один конкретный результат.
Граница применимости: RFC 1982, август 1996 года; разделы 3.2 и 7, стр. 3–4 и 6. Неопределённый порядок не является равенством или доказательством того, какая копия зоны новее.
Одно определённое положительное увеличение делает SERIAL больше предыдущего в серийном порядке. Несколько допустимых увеличений не гарантируют, что итог больше исходного SERIAL. Если сумма шагов положительна и остаётся в диапазоне определённого увеличения, итог больше исходного.
Граница применимости: RFC 1982, август 1996 года; разделы 4.1–4.4 и 5.2, стр. 4–5. Больше здесь означает серийный порядок, а не обычный порядок целых. В учебном 8-битном примере 100 → 200 → 44 итог сравнивается с исходным отдельно.
RFC 1982 рекомендует следить, чтобы суммарное увеличение SOA SERIAL за период SOA.expire не превышало 2 147 483 647. Каждый шаг начинает собственную последовательность и продолжает предыдущие последовательности, начатые в этом периоде. При вынужденном отступлении следует проверить следование всех серверов за каждым шагом.
Граница применимости: RFC 1982, август 1996 года; раздел 7, стр. 6. Сохранены предостережение care should be taken и специальная проверка ALL servers. Это не оценка только последнего шага и не новый срок хранения кэша.
Ноль не имеет особого значения в серийной арифметике или SOA SERIAL. RFC 1982 предупреждает, что некоторые реализации ошибочно обрабатывали ноль как специальное значение, и рекомендует осторожность перед установкой SERIAL в ноль.
Граница применимости: RFC 1982, август 1996 года; раздел 7, стр. 6. Математическая допустимость нуля сохранена. Наблюдение документа 1996 года не объявляется результатом проверки сегодняшнего DNS-сервера.
Что проверить
- Запишите SERIAL каждой копии зоны и роль соответствующего сервера.
- Перед выбором более новой копии исключите разность ровно в половину пространства.
- Проверьте диапазон прибавляемого числа и результат операции по модулю 2³².
- Сравнивайте итог серии увеличений и с предыдущим, и с исходным SERIAL.
- Проверяйте накопленное увеличение в каждом рассматриваемом периоде SOA.expire.
- При вынужденной смене направления проверьте все серверы после каждого шага.
- Отдельно проверьте поведение выбранной реализации при 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 — дата постановки в очередь. Последующие документы и текущие реализации не проверялись.
Открыть первоисточник