Проверка распространения DNS
Вы изменили запись, а кто-то всё ещё получает старый ответ. Эта проверка спрашивает ваш собственный сервер имён, что верно сейчас, а затем спрашивает 24 публичных резолвера, что думают они.
Никто ничего никуда не рассылает
Из-за слова «распространение» кажется, будто изменение расходится от вашего DNS-провайдера, пока не покроет весь интернет. DNS так не работает. Ваши серверы имён хранят запись и ждут, когда их спросят. Сами они никому ничего не отправляют.
Машины, которые ищут имена для людей, называются резолверами. Один есть у вашего интернет-провайдера, свои есть у Google (8.8.8.8) и Cloudflare (1.1.1.1). Когда резолвер впервые получает вопрос о www.example.com, он берёт ответ у вашего сервера имён и сохраняет копию. У каждой записи есть число, TTL (time to live, время жизни), которое говорит, сколько секунд копию можно использовать повторно. Пока этот счётчик не дойдёт до нуля, резолвер заново не спросит.
Поэтому после правки каждый резолвер переходит на новое значение по своему графику, когда истекает его копия старого. Резолвер, у которого копии не было, видит новое значение сразу.
Что сравнивает эта проверка
- Она находит серверы имён, авторитативные для этого имени, и спрашивает один из них напрямую, без кэша посередине. Этот ответ: эталон, он показан с полным TTL.
- Тот же вопрос в тот же момент отправляется 24 публичным резолверам: 17 принадлежат провайдерам в известном месте (США, Бразилия, Испания, Германия, Россия, Индия, Китай, Южная Корея, Австралия, Зимбабве и другие), а 7: это глобальные сети, такие как Google, Cloudflare, Quad9 и OpenDNS.
- Каждый полный ответ сравнивается с эталоном. Если у имени несколько значений, совпадать должен весь набор.
Тип записи выбираете вы: A, AAAA, CNAME, MX, NS, TXT или CAA. Имя, введённое с www., проверяется как введено, потому что www: отдельная запись.
Как читать карту и таблицу
- Актуально
- Резолвер возвращает те же значения, что и ваш сервер имён.
- Отличается
- Он возвращает что-то другое, обычно прежнее значение. Столбец TTL показывает, сколько секунд осталось его копии, и именно столько придётся ждать этот резолвер.
- Нет ответа
- Резолвер не ответил вовремя или отказал. О вашей записи это ничего не говорит.
Если резолверы возвращают три и больше разных набора значений, проверка перестаёт считать различия задержкой. Домен, который обслуживает сеть доставки контента или который использует географическую маршрутизацию, намеренно выдаёт разные адреса в разных регионах. Крупные сайты, такие как wikipedia.org или netflix.com, всегда так выглядят.
«Не существует (NXDOMAIN)» для только что созданной записи: это тоже ответ из кэша. Резолверы помнят, что имени не было, столько, сколько указано в SOA-записи зоны, часто от 5 минут до 1 часа.
Как спланировать изменение, чтобы ждать недолго
Очистить чужие кэши нельзя. Зато можно заранее решить, сколько они живут.
- Минимум за один полный TTL до переезда снизьте TTL записи до
300. Если он был 86400, сделайте это накануне. - Внесите изменение. Теперь каждый резолвер подхватит его в течение пяти минут.
- Не выключайте старый сервер в это время, чтобы никто не попал на мёртвый адрес.
- Когда всё заработает, верните TTL на 3600 или больше. Короткий TTL означает больше запросов и чуть более медленные первые визиты.
Смена самих серверов имён идёт медленнее. Список серверов имён хранит реестр вашей доменной зоны, с TTL, которым вы не управляете: 48 часов для .com. Держите зону живой у старого DNS-провайдера ещё два дня после переключения.
Глобальные сети отвечают с той своей площадки, которая ближе всего к нашему серверу, поэтому результат для Google или Cloudflare описывает одну их точку, а не все. Ваш компьютер, браузер и роутер тоже держат кэши, и эта проверка их не видит.
Частые вопросы
Сколько длится обновление DNS?
Не дольше TTL, который был у записи до изменения. Это 5 минут при TTL 300 и сутки при 86400. Часто встречающиеся «от 24 до 48 часов»: это надёжная верхняя граница, и на деле она относится только к смене серверов имён.
Можно ли ускорить обновление DNS?
Задним числом нет, кроме двух сетей, у которых есть публичная форма для сброса одного закэшированного имени: Google Public DNS («Flush Cache») и Cloudflare 1.1.1.1 («Purge Cache»). Для всех остальных снизьте TTL перед следующим изменением.
Все резолверы обновились, почему я всё ещё вижу старый сайт?
У вашего устройства свой кэш. Выполните ipconfig /flushdns в Windows или sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder в macOS, затем перезапустите браузер. Домашний роутер тоже может держать старый ответ, и его перезагрузка это исправит.
Почему резолверы показывают разные IP-адреса для одного домена?
Либо часть из них ещё хранит прежнее значение, либо домен отвечает по-разному в разных регионах через CDN или географическую маршрутизацию. Проверка различает эти случаи, считая число разных ответов.
Какой TTL ставить для DNS-записей?
3600 (один час) подходит для большинства записей. Снижайте до 300 в дни вокруг переезда и поднимайте до 86400 для записей, которые никогда не меняются, например MX у крупного почтового провайдера.