Кратко
- 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 и прикреплять к другому ответу.
Источники
- IETF, RFC 9660: DNS ZONEVERSION
- IETF Datatracker, запись RFC 9660
- IANA, параметры DNS
- IETF, RFC 6891: EDNS
- IETF, RFC 1034: концепции DNS
- IETF, RFC 1035: реализация DNS
- IETF, RFC 1982: арифметика серийных номеров
- IETF, RFC 4786: эксплуатация anycast
- IETF, RFC 5001: NSID
- IETF, RFC 8976: ZONEMD
- IETF, RFC 9499: терминология DNS
- IETF, RFC 8945: TSIG
- IETF, RFC 2931: SIG(0)
- IETF, RFC 4033: введение в DNSSEC
Обзор для участников
Подробный контекст профиля
Войдите с подходящим уровнем подписки, чтобы открыть полный обзор и примечания к источникам.
Только для Стратегического сообщества
Стратегическое сообщество
Открыто всем читателям. Вступите и войдите, чтобы открыть обзоры профилей.
Вступить в Стратегическое сообществоТолько для Альянса лидеров
Альянс лидеров
Для проверенных владельцев IP-активов и руководителей. Войдите, чтобы открыть обзоры Альянса.
Вступить в Альянс лидеров
