Кэширование DNS: почему сайт «то открывается, то нет» и как сбросить кэш
5 мин чтения Обновлено:
Кэширование DNS: почему сайт «то открывается, то нет» и как сбросить кэш

Кэширование DNS: почему сайт «то открывается, то нет» и как сбросить кэш

У вас сайт открывается, у клиента — нет. После переезда на новый сервер половина посетителей ещё сутки ходит на старый. Домен давно продлили, а браузер упорно пишет «сайт не найден». За всеми этими странностями стоит один механизм — DNS-кэш. Разбираем, где он живёт, почему «врёт» и как его сбросить на каждом уровне.

DNS-кэш — это временное хранение ответов DNS: узнав IP-адрес сайта один раз, система запоминает его и не переспрашивает, пока не истечёт срок жизни записи (TTL). Без кэша каждый клик порождал бы цепочку запросов через пол-интернета; с кэшем подавляющее большинство обращений решается мгновенно и локально. Плата за скорость — инерция: когда запись меняется, мир узнаёт об этом не сразу, а по мере истечения TTL в тысячах независимых кэшей.

Четыре этажа кэша

Между вами и авторитативным DNS-сервером сайта — целая лестница кэшей, и каждый может помнить своё:

Уровень Кто хранит Вы можете сбросить?
Браузер Собственный DNS-кэш Chrome, Firefox и других Да, за секунды
Операционная система Системный резолвер Windows, macOS, Linux Да, одной командой
Роутер Домашний или офисный маршрутизатор Да, перезагрузкой
Резолвер провайдера DNS-серверы, обслуживающие тысячи абонентов Нет — только ждать истечения TTL

Отсюда классический эффект «у меня открывается, у него нет»: вы и ваш клиент сидите за разными провайдерами, и их резолверы закэшировали ответы в разное время. После смены записей один кэш уже обновился, другой ещё держит старый адрес — и два человека одновременно видят два разных «одинаковых» сайта. Это не мистика, а штатная работа системы, описанная в статье о том, как работает DNS.

Отрицательный кэш: когда запоминают «сайта нет»

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

Как сбросить DNS-кэш

Сброс имеет смысл, когда вы знаете, что записи изменились, а ваша машина держит старьё. Идём снизу вверх:

# Windows (командная строка от администратора):
ipconfig /flushdns

# macOS:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder

# Linux (systemd):
sudo resolvectl flush-caches

# Chrome (кэш самого браузера):
chrome://net-internals/#dns → Clear host cache

Роутер сбрасывается перезагрузкой. А вот на кэш провайдера повлиять нельзя — можно только обойти его, временно прописав публичный резолвер (Яндекс 77.88.8.8, Google 8.8.8.8) в настройках сети: свежие записи он, скорее всего, уже видит. Если после сброса всех доступных кэшей сайт так и не открывается — дело не в кэше; пройдитесь по нашей инструкции «Интернет работает, а сайт не открывается».

Как заглянуть в кэш и проверить, что он держит

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

$ dig prufen.ru A

;; ANSWER SECTION:
prufen.ru. 247 IN A 93.184.216.34
# ^^^
# это остаток TTL в секундах: через 247 секунд
# резолвер переспросит авторитативный сервер

Повторите команду через несколько секунд — число уменьшится: вы наблюдаете обратный отсчёт кэша вашего резолвера. Если после смены записей dig показывает старый IP с остатком TTL в тысячи секунд — вот и ответ, сколько ещё ждать этому конкретному резолверу. В Windows содержимое системного кэша можно посмотреть командой ipconfig /displaydns — заодно увидите, сколько мусора там накапливается.

Сравнение нескольких резолверов даёт карту распространения изменений: спросите свой, Яндекс (77.88.8.8), Google (8.8.8.8) — совпадающие свежие ответы означают, что изменение долетело до крупных кэшей, а отстающий резолвер вашего провайдера — это просто вопрос времени. Расшифровка полей ответа и типовые сценарии — в инструкции по проверке DNS-записей.

Стоит ли переходить на публичный резолвер насовсем

Раз уж публичные DNS помогают обойти залипший кэш провайдера — может, прописать их навсегда? Аргументы за: крупные резолверы быстро обновляются, стабильно работают и не подменяют ответы (некоторые провайдеры грешат перехватом NXDOMAIN под собственную страницу с рекламой). Аргументы против: чуть большее время отклика, если узел резолвера далеко; возможные тонкости с CDN — некоторые сети подбирают ближайший к резолверу, а не к вам, сервер раздачи. Для большинства пользователей разница неощутима; правило простое — если родной резолвер провайдера не создаёт проблем, менять его незачем, а если сайты периодически «не находятся» без причины, публичный DNS — первое, что стоит попробовать.

Владельцу сайта: как не воевать с чужими кэшами

Чужие кэши не сбросить — ими можно только управлять заранее, через TTL. Главное правило переезда: за сутки-двое до смены записей снизьте TTL до 300–600 секунд, дождитесь, пока старый длинный TTL истечёт во всех кэшах, потом меняйте IP — переходный период сожмётся с суток до минут. После стабилизации TTL возвращают к обычным значениям. Подробно про выбор значений — в статье о TTL в DNS, а полный чек-лист переезда — в руководстве по смене хостинга.

Проверяйте себя не своим кэшем

После правки записей не судите о результате по своему браузеру — он покажет собственный кэш, а не то, что видит страна. Спросите несколько независимых резолверов (dig @77.88.8.8, dig @8.8.8.8) или посмотрите на сайт из других регионов.

И последнее: расползание изменений по кэшам — процесс невидимый, и именно поэтому ошибки в DNS живут так долго. Проверка DNS-записей по расписанию сверяет фактические ответы с эталоном и сигналит при любом расхождении, а проверка доступности (GET) из разных городов показывает, где сайт уже отвечает по-новому, а где ещё нет.

Пруфен видит DNS глазами всей страны

Проверки Пруфена идут из 13 точек — 11 из них в России — через локальные сети — при переезде или сбое DNS видно, в каких регионах сайт уже доступен, а в каких кэши ещё держат старый адрес. Уведомления — Email, Telegram, Макс, Звонок; бесплатного тарифа хватает на 5 проверок.

Была ли статья полезна? 5,0 из 5 · оценок: 1

Начните мониторинг прямо сейчас

Бесплатный тариф — до 5 проверок. 150 ₽ на баланс при регистрации.

Создать аккаунт