Кратко

  • ZONEVERSION возвращает идентификатор версии в том же авторитетном ответе, который был ею создан, и устраняет временной разрыв отдельного запроса SOA.
  • Значение относится к одному наблюдаемому ответу: оно не проверяет всю зону, не доказывает сходимость флота и не защищено RRSIG без отдельной целостности канала.

Оба индикатора успеха зелёные. Две точки измерения спрашивают одно имя у одного anycast-адреса и получают NOERROR. Но первая видит новый адрес, а вторая — старый. В ZONEVERSION первой указан SOA-SERIAL 4120, второй — 4119.

Дополнительный SOA-запрос через несколько секунд может уничтожить связь. Маршрут изменится или отставший узел успеет загрузить зону, и оба последующих ответа покажут 4120. Текущий serial сохранится, но версия, создавшая старый ответ, будет потеряна.

Это иллюстрация, а не описание известного сбоя. RFC 9660 доставляет ответ и его версию вместе. Однако 4119 не объясняет причину различия, 4120 не доказывает правильность данных, а один путь не представляет всю авторитетную систему.

Запрос ничего не приказывает серверу

Клиент помещает EDNS-код 19 в псевдо-RR OPT. OPTION-LENGTH равен нулю, данных нет. Это не требование использовать 4120 и не команда обновления. Вопрос только в том, какую версию сервер применил при построении текущего ответа.

Ненулевая длина или несколько ZONEVERSION в запросе делают его недействительным. Реализующий механизм авторитетный сервер отвечает FORMERR. Сначала это свидетельство ошибки измерителя, а не зоны. Поэтому исходные байты запроса обязательны.

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

Опция действует hop-by-hop. Посредник не может слепо скопировать upstream-значение в сформированный им пакет: исчезнет связь между производителем, ответом и версией.

LABELCOUNT задаёт область значения

Данные начинаются с октета LABELCOUNT, октета TYPE и значения VERSION. LABELCOUNT считает метки справа в исходном QNAME и определяет охватывающую зону; ноль означает корень.

Для host.branch.example значение 2 указывает branch.example, а 1 — example. Число не может превышать количество меток QNAME. Запись «serial 4120» без вопроса и счётчика лишена зоновой области.

Опция применима к нисходящей делегации, созданной родительской зоной, к авторитетным NXDOMAIN и NODATA, а также к некоторым SERVFAIL, если зона остаётся определима. В ответе могут быть разные зоны и типы, но не более одного значения для одной пары TYPE–LABELCOUNT.

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

SOA-SERIAL — не линейные часы и не хеш

TYPE 0 SOA-SERIAL — публичный тип, определённый RFC 9660. VERSION копирует четыре октета поля SERIAL из SOA; полная длина опции ответа равна шести.

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

Serial не является дайджестом. Из-за ошибки разное содержимое может получить одинаковый номер. Контекст и политика могут менять ответы в одной версии. Вместе с токеном надо сравнивать RRset, секции, флаги, TTL и результат DNSSEC.

Для проверки всей зоны RFC 8976 определяет ZONEMD. ZONEVERSION связывает один ответ с идентификатором, ZONEMD проверяет дайджест полного содержимого. Эти утверждения не заменяют друг друга.

Anycast требует явно назвать выборку

Один anycast-адрес ведёт к разным инстансам в зависимости от источника и времени. Успешный ответ доказывает состояние одного достигнутого пути в один момент.

Расследование начинает с перечня NS, адресов, anycast-префиксов, сервисных когорт и точек измерения. Прямой запрос отключает рекурсию и хранит источник, назначение, транспорт, время, QNAME, RCODE, AA, байты ответа, TTL, опцию и результат проверки. Повторение отличает случайный маршрут от устойчивого различия.

NSID может подсказать инстанс, но его смысл и уникальность определяет оператор. Присутствие не аутентифицирует значение и не заменяет endpoint или точку наблюдения.

Если три точки устойчиво видят 4120 и одинаковые данные, а четвёртая — 4119 и старый адрес, доказано ограниченное расхождение. Причину покажут журнал трансфера, поколение подписывающего процесса, загруженная версия и сопоставление маршрута с площадкой.

DNSSEC не подписывает байты ZONEVERSION

DNSSEC валидирует подписанные RRset. EDNS-байты токена не покрываются RRSIG. На незащищённом пути посредник может изменить или удалить опцию, не нарушив подпись самих DNS-данных.

Нужны два результата: «RRset прошёл проверку» и «пара ответ–версия получена с защищённой целостностью». Аутентифицированный шифрованный транспорт, TSIG или SIG(0) защищают обмен в рамках своих ключей; надо хранить идентичность и итог проверки. Правильность зоны и сходимость они не гарантируют.

OPT не является данными зоны. ZONEVERSION нельзя кешировать, передавать или хранить как обычный RR и прикреплять к другому ответу.

Источники