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

Зачем вообще нужно очищать DNS-кэш? На практике нередко происходит следующая ситуация: сайт переехал на новый сервер, но устройство обращается к сайту по старому IP-адресу. Как результат – сайт недоступен и не загружается. Устранить проблему можно путем очистки DNS-кэша.

Что такое DNS-кэш и зачем он нужен

Когда пользователь вводит в строку адреса сайта в своем браузере конкретную запись, компьютеру нужно узнать, какой IP-адрес соответствует этому домену.

Процесс выглядит так:

Домен → DNS-резолвер → IP-адрес → подключение к сайту

Полученный ответ временно сохраняется в DNS-кэше. Дальше, когда пользователь снова обращается к сайту, первое, что делает система – проверяет локальную запись и, если она ещё актуальна, использует ее без нового запроса к DNS-серверу.

Сколько по времени хранится запись? Это устанавливается параметром TTL (Time to Live). Он задается DNS-сервером для конкретной записи. После окончания TTL результат считается устаревшим и должен быть получен заново.

Не стоит путать несколько уровней кэширования:

  • DNS-кэш операционной системы — хранится и обслуживается средствами ОС;

  • DNS-кэш или host cache браузера — отдельный механизм браузера;

  • HTTP-кэш браузера — хранит файлы страниц: изображения, CSS, JavaScript и другие ресурсы.

Очистка DNS-кэша Windows, например, не очищает кэш Chrome или Firefox.

Когда нужно очищать DNS-кэш

В некоторых случаях чистить DNS-кэш не просто рекомендуется, а необходимо.

Вот эти случаи:

  1. Сайт переехал на другой сервер. Один из частых случаев. Раньше домен указывал на старый VPS, а после миграции DNS-запись была изменена на новый IP.

  2. Сайт открывается не у всех пользователей. Подобное нередко происходит при локальной проблеме с DNS-разрешением.

  3. После изменения DNS-записей компьютер продолжает использовать старый адрес.

  4. Появилась ошибка подключения к домену после изменения его DNS.

  5. Сайт открывается неправильно только на одном устройстве или в одном браузере.

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

Как очистить DNS-кэш в Windows

Чтобы очистить DNS-кэш в Windows, нужно выполнить несколько элементарных действий. В Windows 10 и Windows 11 используется одна и та же команда:

ipconfig /flushdns

Microsoft указывает этот параметр как средство очистки и сброса кэша DNS-клиента.

Как выполнить команду:

  1. Открываем меню Пуск.

  2. Вводим команду cmd.

  3. От имени администратора запускаем командную строку.

  4. Выполняем:ipconfig /flushdns

  5. Жмем Enter.

При успешном выполнении Windows сообщит, что кэш DNS успешно очищен.

Смотрим содержимое DNS-кэша перед очисткой можно командой:

ipconfig /displaydns

После очистки Windows будет заново получать DNS-ответы по мере необходимости.

Как очистить DNS-кэш в macOS

В современных версиях для очистки локального DNS-кэша macOS обычно используют dscacheutil вместе с перезапуском обработки DNS через mDNSResponder:

sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

Первой командой мы чистим кэш каталога, второй отправляем сигнал службе mDNSResponder, которая участвует в работе DNS и обнаружении сетевых сервисов в macOS. После выполнения команд терминал может не вывести сообщение об успехе — это нормально.

Как выполнить очистку:

  1. Открываем Терминал.

  2. Выполняем: sudo dscacheutil -flushcache

  3. Вводим пароль пользователя macOS, если система его запросит.

  4. Затем выполняем: sudo killall -HUP mDNSResponder

Для актуальных ОС комбинация dscacheutil и mDNSResponder остаётся практическим способом сброса кэша.

Как очистить DNS-кэш в Linux

Особенность очистки кэша в ОС Linux заключается в следующем: здесь нет одной универсальной команды для всех дистрибутивов. Поэтому в первую очередь способ очистки определяет то, какой DNS-резолвер используется на конкретной системе.

Если система использует systemd-resolved, нужно использовать команду:

sudo resolvectl flush-caches

С её помощью происходит очистка DNS-кэша, обслуживающего systemd-resolved. В чем преимущество этой команды? В одной очень важной вещи – они поддерживается современными версиями systemd.

Состояние резолвера проверяем:

resolvectl status

Если команды resolvectl нет, системой используется другой механизм разрешения DNS. Так в системах с Name Service Cache Daemon (nscd) можно очистить кэш записей hosts:

sudo nscd -i hosts

Другой вариант — перезапустить службу:

sudo systemctl restart nscd

Конкретный способ зависит от конфигурации дистрибутива и того, какие службы установлены.

dnsmasq

Если DNS-кэширование выполняет dnsmasq, его можно очистить отправкой сигнала SIGHUP:

sudo systemctl restart dnsmasq

При получении SIGHUP dnsmasq очищает свой кэш и перечитывает необходимые данные. Поэтому перед очисткой DNS в Linux сначала стоит определить, какой именно резолвер работает на компьютере. Не следует использовать команду для systemd-resolved, если DNS-кэш на самом деле обслуживает nscd или dnsmasq.

Как очистить DNS-кэш в Chrome

DNS-кэш Chrome — отдельный уровень, поэтому команда Windows ipconfig /flushdns не очищает его. В Chrome для очистки host cache можно открыть специальную страницу:

chrome://net-internals/#dns

Затем нажать Clear host cache. В справочных материалах Chrome Community он указан для очистки host cache. Если после этого проблема сохраняется, при диагностике подключения может потребоваться очистить и пул сетевых соединений:

chrome://net-internals/#sockets

Используйте кнопку Flush socket pools. Важно: очистка host cache Chrome не удаляет DNS-запись у регистратора или DNS-провайдера и не меняет DNS-сервер, используемый компьютером.

Как очистить DNS-кэш в Firefox

В Firefox DNS-кэш также отделён от системного кэша. Для просмотра и очистки DNS-кэша можно открыть:

about:networking#dns

На странице находится информация о DNS-разрешении Firefox и кнопка Clear DNS Cache. Такой путь используется в Firefox для очистки внутреннего DNS-кэша.

Если проблема связана не только с DNS, можно дополнительно очистить обычный кэш браузера:

Меню → Настройки → Приватность и защита → Данные сайтов → Очистить данные.

Mozilla отдельно указывает, что обычный кэш Firefox содержит временные файлы сайтов — изображения, скрипты и другие элементы страниц. Это уже другой тип кэша и его не стоит путать с DNS-кэшем.

Как проверить, что DNS-кэш очищен

После очистки можно повторить DNS-запрос к нужному домену.

В Windows:

nslookup example.com

В Linux и macOS:

nslookup example.com

или:

dig example.com

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

Заключение

DNS-кэш — механизм, который ускоряет работу с доменами и уменьшает количество повторных DNS-запросов. Сам по себе кэш не является неисправностью. Если сайт недавно переехал на новый сервер, изменился его IP-адрес или домен начал работать некорректно только на одном устройстве, очистка DNS-кэша — один из самых простых диагностических шагов.

Но это не универсальное решение. Если после очистки компьютер по-прежнему получает неправильный IP или домен вообще не разрешается, нужно проверять DNS-записи, используемый резолвер, DNS-сервер и сетевое подключение. Если очистка DNS-кэша не помогла, переходите к более глубокой диагностике проблемы DNS server not responding или медленного DNS lookup — причина может находиться уже не на уровне локального кэша