Проверка распространения DNS

Изменили A-запись, перенесли NS-серверы или обновили MX? Запросите одну и ту же запись сразу у десяти независимых публичных резолверов и посмотрите, какие из них уже возвращают новое значение.

Что такое распространение DNS на самом деле

Когда вы меняете DNS-запись, по интернету ничего не рассылается. Ваши авторитетные серверы имён начинают отдавать новое значение сразу. Время уходит на то, что рекурсивные резолверы, то есть серверы, которые на самом деле опрашивают ваши посетители, хранят старый ответ, пока не истечёт его TTL. Каждый резолвер закэшировал его в свой момент, поэтому каждый переключается в свой момент.

Поэтому два человека какое-то время могут видеть две разные версии вашего сайта, и поэтому изменение с TTL 300 секунд устанавливается за минуты, а с TTL 86400 секунд может занять сутки.

Как работает эта проверка

OrbitProbe отправляет один и тот же вопрос десяти независимым публичным резолверам: Cloudflare, Google, Quad9, OpenDNS, AdGuard, Yandex, Hurricane Electric, Verisign, Lumen и CleanBrowsing. Ответы нормализуются, так что порядок записей и регистр букв не считаются различием, а затем группируются. Вы видите, сколько резолверов вернули каждый из различающихся ответов, и какие из них не вернули записей, сообщили, что имя не существует, или оказались недоступны.

Резолвер, который не ответил, показывается как не ответивший. Он никогда не засчитывается как согласный, а результат называется согласованным только тогда, когда ответили все резолверы и все ответы идентичны.

О чём результат говорит и о чём нет

Результат описывает эти десять резолверов, как они видны с нашего сервера, в указанное время. Это хороший ранний сигнал, потому что эти резолверы обслуживают большую долю реальных пользователей. Это не измерение всего интернета, и ни один инструмент такого измерения дать не может: резолверов миллионы, включая резолвер каждого интернет-провайдера и каждого офиса.

Большинство этих резолверов — anycast-сети. Узел, ответивший нам, может быть не тем узлом, который отвечает посетителю на другом континенте, и некоторое время у них могут быть разные закэшированные значения.

Если ответы расходятся

Расхождение вскоре после изменения — норма. Проверьте TTL старой записи: это максимальное время, в течение которого её будет хранить корректно работающий резолвер. Если ответы различаются и спустя долгое время после истечения старого TTL, опросите напрямую свои авторитетные серверы имён. Когда два ваших собственных сервера имён возвращают разные значения, значит, зона обновлена не везде, и это неисправность, которую нужно устранять, а не пережидать.

При переносе NS-серверов держите старую зону работающей и идентичной, пока не истечёт TTL делегирования в реестре, который часто составляет 48 часов.

Как пользоваться этим инструментом

  1. Введите имя хоста. Введите именно то имя, которое вы меняли, например example.com или www.example.com.
  2. Выберите тип записи. Выберите A, AAAA, CNAME, MX, NS или TXT и нажмите «Проверить распространение».
  3. Сравните резолверы. Каждый публичный резолвер показан со своим ответом. Результат — это счёт вида «9 из 12 резолверов», а не процент от интернета.

То же самое в командной строке

Та же проверка из терминала. В командах используется example.com: замените его своим именем.

  • Опросить несколько публичных резолверовfor r in 1.1.1.1 8.8.8.8 9.9.9.9 208.67.222.222; do echo "$r: $(dig @$r example.com A +short | tr "\n" " ")"; done
  • Опросить авторитативные серверы напрямуюdig +nssearch example.com
  • Windowsnslookup example.com 8.8.8.8

Частые вопросы

Сколько времени занимает распространение DNS?

Столько, сколько составляет TTL заменённой записи, считая с момента, когда каждый резолвер в последний раз её закэшировал. При TTL 300 секунд большинство резолверов переключаются в пределах пяти минут. Смена NS-серверов зависит от TTL делегирования в реестре, который обычно равен 48 часам.

Можно ли ускорить распространение DNS?

После изменения — нет. Можно подготовиться: примерно за сутки до изменения уменьшите TTL записи, внесите изменение и снова увеличьте TTL, когда всё установится. У некоторых публичных резолверов есть также страница очистки кэша для отдельного имени.

Почему некоторые резолверы всё ещё показывают старый IP-адрес?

Они закэшировали старый ответ до вашего изменения, и его TTL ещё не истёк. Это ожидаемое поведение, а не ошибка. Если это продолжается заметно дольше старого TTL, проверьте, что все ваши авторитетные серверы имён отдают новое значение.

10 из 10 означает, что изменение действует везде?

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

Что означает «нет записей» или «имя не существует»?

«Нет записей» значит, что имя существует, но у него нет записи запрошенного типа, например нет AAAA-записи. «Имя не существует» (NXDOMAIN) значит, что резолвер вообще не нашёл такого имени. Отрицательные ответы тоже кэшируются, поэтому только что созданное имя может какое-то время показываться как отсутствующее.

Какие типы записей можно проверить?

A, AAAA, NS, MX, TXT и CNAME. Выберите тот тип, который вы меняли. При переезде сайта это обычно A или CNAME на имени с www, при переезде почты — MX, при смене DNS-провайдера — NS.