Кратко

  • Если родитель делегирует child.example серверу ns.child.example, адрес следующего сервера находится за той же границей, которую резолвер ещё не может пройти.
  • Glue помещает ограниченную копию адреса в referral родителя. Она обеспечивает достижимость, а не авторитетность; поздние RFC уточнили уровень доверия и сигнал неполного набора.

Невыполнимая следующая команда

Итеративный поиск идёт от корня к TLD и дочерней зоне. Резолвер сам следует referrals. Но для A или AAAA ns.child.example пришлось бы спросить авторитет child.example — тот самый сервер, адрес которого пока неизвестен.

Имена серверов внутри собственной зоны естественны. Цикл возникает потому, что координата для перехода через административную границу хранится по другую сторону.

Адрес, одолженный родителю

RFC 1034 в 1987 году определил zone cut. Родитель хранит NS, называющие серверы ребёнка. Если имя находится ниже cut, родитель также держит адрес для referral — glue.

Исключение ограничено: glue не является авторитетными данными дочерней зоны. Родитель не даёт общий ответ об истинном адресе хоста, а сообщает достаточно для первой попытки связаться с делегированным авторитетом. После этого отвечает ребёнок.

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

Подсказка не должна стать ответом

Дополнительные данные экономят запрос, но не были прямо запрошены. RFC 2181 в 1997 году уточнил доверие: авторитетные данные стоят выше неавторитетных ответов и additional section. Слабые неаутентифицированные записи нельзя кэшировать так, чтобы позднее выдавать как ответы.

Glue для одного имени может различаться в нескольких зонах. Поэтому резолверу нужны происхождение и ранг, а не безымянная смесь адресов.

Внутри, рядом и снаружи

RFC 8499 различает in-domain, sibling и out-of-bailiwick. Сервер внутри делегированной зоны нуждается в glue. Адрес sibling-сервера обычно можно найти через делегирование соседней зоны, хотя копия сокращает запросы.

Соседние зоны могут ссылаться на серверы друг друга и образовать цикл. Тогда родитель должен дать адрес, который его разорвёт. RFC 9471 сообщает о 222 делегированиях, зависевших только от циклических sibling NS, среди примерно 209 миллионов делегирований в доступных данных CZDS конца 2021 года. Это ограниченное наблюдение, не мировая доля отказов.

Для out-of-bailiwick имени glue бесполезно: резолвер ищет его по правильной ветви дерева. Bailiwick — область действия протокола, а не право собственности или юридическая юрисдикция.

Две зоны и множество часов

RFC 1035 требовал проверять наличие необходимого glue. Он также описал ситуацию, когда NS остаётся в кэше дольше адреса glue: имена серверов известны, но связаться не с чем.

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

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

Сделать неполноту видимой

Современный referral делит место UDP с DNSSEC. Некоторые серверы отправляли лишь часть доступного glue и не сообщали о пропуске.

RFC 9471 в 2023 году обновил правило: нужно включить всё доступное in-domain glue либо поставить TC, если набор не помещается. Резолвер видит неполноту и повторяет запрос транспортом, способным принять полный ответ. Документ приводит случай июня 2020 года, когда нужное glue не поместилось, а TC осталось нулём.

Исправление не создаёт центрального распорядителя. Сервер раскрывает предел, резолвер выполняет повтор, операторы согласуют данные по обе стороны cut.

Узкий мост, а не свидетельство собственности

Glue разрешило самоссылку одним ограниченным исключением. Родитель несёт стартовый адрес, потому что иначе ребёнок недостижим; ребёнок остаётся авторитетом; резолвер не стирает различие. Механизм не доказывает здоровье сервера, личность организации или право на домен и адрес.

Историческим достижением стало разделение функций без потери связности. DNS вышел из цикла, не превратив стартовую подсказку в суверена дочерней зоны.

Источники и границы

Zone cut, referral и glue 1987 года описаны в RFC 1034 и RFC 1035, доверие — в RFC 2181, термины — в RFC 8499, полнота и наблюдения — в RFC 9471. Поздняя терминология не переносится в 1987 год.