Как очистить DNS-кэш в Windows, macOS и Chrome
Очистка DNS-кэша заставляет вашу операционную систему или браузер удалить локально сохранённые DNS-записи и получить актуальные сопоставления с авторитетных серверов имён. Эта единственная операция устраняет удивительно широкий спектр сбоев подключения — от ошибок ERR_NAME_NOT_RESOLVED до устаревших IP-записей, оставшихся после миграции сервера.
Что такое DNS-кэш? Это временная локальная база данных, поддерживаемая вашей операционной системой (и отдельно некоторыми браузерами), которая хранит результаты предыдущих DNS-запросов. Каждый раз, когда вы разрешаете имя хоста, например example.com, полученный IP-адрес сохраняется вместе со счётчиком TTL (Time To Live). До истечения этого TTL ваша система полностью пропускает вышестоящий резолвер и использует кэшированную запись — это быстро, но становится проблемой в тот момент, когда запись устаревает, оказывается отравленной или указывает на выведенный из эксплуатации сервер.
Почему DNS-кэш становится проблемой
Понимание режимов сбоев позволяет понять, почему очистка кэша иногда является единственным правильным решением:
- Миграция сервера или смена IP: Когда сайт переезжает на новую инфраструктуру, его DNS-записи обновляются новой записью A или AAAA. Если ваш локальный кэш всё ещё содержит старый IP, каждый запрос уходит не на тот хост — что часто приводит к таймауту соединения или ошибке несоответствия TLS-сертификата.
- Отравление DNS-кэша: Вредоносное ПО и атаки типа «человек посередине» могут внедрять поддельные записи в ваш локальный кэш, незаметно перенаправляя трафик на серверы, контролируемые злоумышленником. Очистка кэша немедленно удаляет отравленные записи.
- Негативное кэширование: Неудачный DNS-запрос (ответ NXDOMAIN) также кэшируется. Если домен был временно недоступен и отрицательный результат был закэширован, ваша система откажется разрешать его снова до истечения отрицательного TTL — даже после того, как домен снова станет доступен.
- Конфликты split-horizon DNS: Разработчики, работающие с локальными переопределениями
/etc/hostsили резолверами, назначенными VPN, часто сталкиваются с устаревшими записями кэша, которые переопределяют предполагаемую маршрутизацию. - Артефакты после отключения VPN: Остаточные DNS-записи от сеанса VPN могут сохраняться после отключения, вызывая утечки DNS или сбои маршрутизации в локальной сети.
Как очистить DNS-кэш в Windows
Процедура одинакова для Windows 7, 8, 10 и 11. Единственное существенное различие — предпочитаете ли вы командную строку или PowerShell.
Метод 1: Командная строка (ipconfig /flushdns)
- Нажмите
Win + R, введитеcmd, затем нажмитеCtrl + Shift + Enter, чтобы запустить командную строку с правами администратора. Либо найдите Командную строку в меню «Пуск», щёлкните по ней правой кнопкой мыши и выберите Запуск от имени администратора. - Выполните команду очистки:
ipconfig /flushdns- При успешной очистке отображается:
Windows IP Configuration
Successfully flushed the DNS Resolver Cache.Если вместо этого вы видите ошибку, убедитесь, что открыли командную строку с повышенными привилегиями. Стандартные пользовательские сеансы не имеют доступа на запись к кэшу службы DNS-клиента.
Метод 2: Windows PowerShell
PowerShell предоставляет специальный командлет, который взаимодействует непосредственно со службой DNS-клиента, а не через устаревший интерфейс ipconfig.
- Нажмите
Win + Xи выберите Windows PowerShell (Администратор) или Терминал (Администратор) в Windows 11. - Выполните:
Clear-DnsClientCacheПри успешном выполнении подтверждающего вывода нет — команда завершается без сообщений. Чтобы убедиться, что кэш пуст, сразу после выполните Get-DnsClientCache; результатов быть не должно.
Метод 3: Перезапуск службы DNS-клиента
В редких случаях, когда приведённые выше команды не работают — как правило, из-за повреждённого состояния службы DNS-клиента — перезапуск самой службы очищает кэш как побочный эффект:
Stop-Service -Name Dnscache -Force
Start-Service -Name DnscacheВажное предупреждение: В некоторых конфигурациях Windows служба DNS-клиента настроена как зависимость для других сетевых служб. Её остановка может кратковременно прервать сетевое подключение. Не выполняйте это на рабочем сервере без окна технического обслуживания.
Просмотр текущего DNS-кэша (Windows)
Перед очисткой часто полезно проверить, что находится в кэше, чтобы убедиться, что устаревшая запись действительно является причиной проблемы:
Get-DnsClientCacheЭто выводит все кэшированные записи с их TTL, типом записи и разрешёнными данными — что даёт значительно больше диагностической информации, чем слепая очистка кэша.
Как очистить DNS-кэш на macOS
macOS использует mDNSResponder в качестве демона службы DNS во всех современных версиях. Механизм очистки остаётся неизменным начиная с macOS Sierra, однако в более старых версиях требовались другие команды.
macOS Ventura, Monterey, Big Sur, Catalina, Mojave, High Sierra, Sierra (10.12 и новее)
- Откройте Терминал через
Applications > Utilities > Terminalили нажмитеCmd + Spaceи введитеTerminal. - Выполните:
sudo killall -HUP mDNSResponder- При появлении запроса введите пароль администратора. Поле пароля не будет отображать вводимые символы — это ожидаемое поведение. Нажмите
Enterдля подтверждения.
Сообщения об успешном выполнении нет. Сигнал -HUP указывает mDNSResponder перезагрузить конфигурацию и очистить кэш без полного перезапуска.
macOS El Capitan и Yosemite (10.11 / 10.10)
El Capitan использует ту же команду mDNSResponder, что и выше. В Yosemite mDNSResponder был временно заменён на discoveryd, что потребовало другого подхода:
sudo discoveryutil udnsflushcachesmacOS Mavericks, Mountain Lion и Lion (10.9 и старее)
sudo killall -HUP mDNSResponderОчистка дополнительных уровней DNS-кэша на macOS
macOS поддерживает более одного DNS-кэша. Для полной очистки — особенно актуальной при отладке проблем split-DNS или mDNS — выполните все три команды последовательно:
sudo killall -HUP mDNSResponder
sudo killall mDNSResponderHelper
sudo dscacheutil -flushcachedscacheutil -flushcache очищает кэш Directory Services, который хранит дополнительные данные разрешения имён, используемые процессами системного уровня. Если пропустить эту команду, могут остаться записи, которые mDNSResponder не затрагивает.
Как очистить DNS-кэш в Google Chrome
Chrome поддерживает собственный внутренний DNS-кэш, который работает полностью независимо от резолвера на уровне ОС. Это намеренное архитектурное решение — сетевой стек Chrome (построенный на библиотеке net:: Chromium) заблаговременно разрешает домены, которые, по его прогнозу, вы посетите, и кэширует эти результаты в процессе. Это означает, что вы можете очистить DNS-кэш ОС, а Chrome всё равно будет отдавать устаревшие записи из собственного хранилища.
Пошаговая инструкция: очистка DNS-кэша Chrome
- Откройте Google Chrome.
- В адресной строке перейдите по адресу:
chrome://net-internals/#dns- Нажмите кнопку Clear host cache. Это немедленно очищает все DNS-записи, хранящиеся во внутреннем кэше Chrome.
Сброс пулов сокетов Chrome
Записи DNS-кэша и открытые TCP/TLS-соединения — это разные вещи. Если вы очистили DNS-кэш, но Chrome всё ещё маршрутизирует трафик через старое соединение (например, после смены IP сервера), необходимо также сбросить пул сокетов:
- Перейдите по адресу:
chrome://net-internals/#sockets- Нажмите Flush socket pools.
Это закрывает все простаивающие и активные keep-alive-соединения, вынуждая Chrome устанавливать новые TCP-соединения с использованием вновь разрешённых IP-адресов.
Перезапуск Chrome после очистки кэша
Полностью закройте все окна Chrome и снова откройте браузер. На macOS убедитесь, что Chrome не продолжает работать в фоновом режиме через Dock — щёлкните правой кнопкой мыши по значку и выберите Quit, а не просто закрывайте окно.
Сравнение DNS-кэша: уровень ОС и уровень браузера
| Свойство | DNS-кэш ОС | DNS-кэш Chrome |
|---|---|---|
| — | — | — |
| Область действия | Все приложения на уровне системы | Только браузер Chrome |
| Команда очистки (Windows) | `ipconfig /flushdns` | `chrome://net-internals/#dns` |
| Команда очистки (macOS) | `sudo killall -HUP mDNSResponder` | `chrome://net-internals/#dns` |
| Учитывает настройки TTL ОС | Да | Частично (использует собственную логику TTL) |
| Реагирует на изменения DNS в VPN | Да | Не сразу |
| Виден диагностическим инструментам | `Get-DnsClientCache`, `dscacheutil -cachedump` | Только через внутренние инструменты Chrome |
| Очищается при перезагрузке системы | Да | Да (память процесса) |
| Очищается при перезапуске браузера | Нет | Да |
Команды очистки кэша по платформам
| Платформа / Версия | Команда |
|---|---|
| — | — |
| Windows (все версии) | `ipconfig /flushdns` |
| Windows PowerShell | `Clear-DnsClientCache` |
| macOS 10.12 и новее | `sudo killall -HUP mDNSResponder` |
| macOS Yosemite (10.10) | `sudo discoveryutil udnsflushcaches` |
| macOS (полная очистка) | `sudo killall -HUP mDNSResponder && sudo dscacheutil -flushcache` |
| Google Chrome (все ОС) | `chrome://net-internals/#dns` > Clear host cache |
| Linux (systemd-resolved) | `sudo systemd-resolve –flush-caches` |
| Linux (nscd) | `sudo service nscd restart` |
Linux включён здесь, поскольку администраторы, управляющие средами VPS-хостинга, часто вынуждены одновременно очищать DNS-кэш как на локальной рабочей станции, так и на удалённом сервере при распространении изменений DNS.
Распространённые ошибки, которые устраняет очистка DNS-кэша
ERR_NAME_NOT_RESOLVED— Chrome не может разрешить имя хоста. Почти всегда является проблемой DNS; очистите кэш как ОС, так и Chrome.DNS_PROBE_FINISHED_NXDOMAIN— Резолвер вернул ответ о несуществующем домене. Может быть устаревшей отрицательной записью кэша.ERR_CONNECTION_TIMED_OUTпосле миграции сервера — Старый IP всё ещё кэширован. Очистите кэш ОС и убедитесь с помощьюnslookupилиdig, что возвращается новый IP.- Ошибки несоответствия TLS/SSL-сертификата — Если кэшированный IP указывает на другой сервер, нежели тот, на котором находится правильный сертификат, вы получите ошибку несоответствия имени сертификата. Это часто происходит при переносе домена между хостинг-провайдерами. Если вы управляете SSL-инфраструктурой, убедитесь, что ваши SSL-сертификаты выпущены для правильного источника до истечения DNS TTL.
- Периодические ошибки 404 после миграции CMS — Сайт загружается, но ресурсы или страницы возвращают 404. Часто вызвано тем, что CDN или обратный прокси всё ещё разрешает старый источник. Очистите кэш на каждом уровне.
Распространение DNS и локальный кэш: важное различие
Распространённое заблуждение состоит в том, что очистка локального DNS-кэша сделает только что опубликованную DNS-запись немедленно видимой. Это не так — если вышестоящий рекурсивный резолвер (DNS-сервер вашего провайдера или публичный резолвер, например 8.8.8.8) также закэшировал старую запись, вы продолжите получать старый IP до истечения кэша этого резолвера.
Правильный диагностический процесс:
- Проверьте авторитетную запись напрямую с помощью
dig @8.8.8.8 example.com Aилиnslookup example.com 1.1.1.1. - Если авторитетная запись верна, но локальное разрешение неправильное, очистите локальный кэш ОС.
- Если сама авторитетная запись всё ещё неверна, проблема находится на уровне DNS-регистратора или панели управления хостингом, а не в локальном кэше.
При управлении DNS для доменов, размещённых на выделенных серверах, всегда устанавливайте низкий TTL (300 секунд) как минимум за 24 часа до запланированной миграции. Это минимизирует окно распространения и снижает масштаб воздействия устаревших записей кэша по всему интернету.
Последствия управления DNS-кэшем для безопасности
Отравление DNS-кэша (также известное как DNS-спуфинг) — это класс атак, при которых злоумышленник внедряет вредоносные записи A или CNAME в кэш резолвера, перенаправляя пользователей на мошеннические серверы. Хотя DNSSEC обеспечивает криптографическую проверку на уровне протокола, соблюдение гигиены локального кэша остаётся практической мерой первого реагирования.
Если вы подозреваете, что ваш DNS-кэш был отравлен:
- Немедленно очистите локальный кэш с помощью соответствующей команды для вашей ОС.
- Переключитесь на резолвер с поддержкой DNSSEC, например Cloudflare (
1.1.1.1) или Google (8.8.8.8). - Проверьте запущенные процессы на наличие вредоносного ПО, которое может изменять файл
hosts(C:WindowsSystem32driversetchostsв Windows,/etc/hostsв Unix-системах). - Проверьте настройки DNS вашего роутера — злоумышленники, скомпрометировавшие роутер, могут перенаправлять все DNS-запросы в сети независимо от состояния локального кэша.
Для компаний, использующих собственную почтовую инфраструктуру, целостность DNS особенно критична. Неправильно настроенные или отравленные DNS-записи напрямую влияют на проверку SPF, DKIM и DMARC. Если вы пользуетесь услугами почтового хостинга, убедитесь, что записи MX, SPF и DKIM корректно разрешаются после любых изменений DNS.
Автоматизация очистки DNS-кэша
Для разработчиков и системных администраторов, которые регулярно работают с изменениями DNS — особенно при настройке панелей управления VPS, переключении между средами разработки и продакшена или миграции доменов — автоматизация очистки полностью исключает ручной шаг.
Запланированная задача Windows (PowerShell):
$action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-Command Clear-DnsClientCache"
$trigger = New-ScheduledTaskTrigger -Daily -At "03:00AM"
Register-ScheduledTask -Action $action -Trigger $trigger -TaskName "FlushDNSCache" -RunLevel HighestPlist для launchd на macOS (ежедневная очистка в 3:00):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.local.flushdns</string>
<key>ProgramArguments</key>
<array>
<string>/bin/bash</string>
<string>-c</string>
<string>killall -HUP mDNSResponder</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>3</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
</dict>
</plist>Сохраните этот файл в ~/Library/LaunchAgents/com.local.flushdns.plist и загрузите его с помощью launchctl load ~/Library/LaunchAgents/com.local.flushdns.plist.
Автоматическая очистка наиболее полезна в CI/CD-конвейерах, где DNS-записи обновляются программно в рамках рабочего процесса развёртывания, и агенты сборки должны разрешать новые записи сразу после применения изменений.
Матрица технических решений: когда и где выполнять очистку
| Симптом | Очистить кэш ОС | Очистить кэш Chrome | Очистить кэш роутера | Проверить вышестоящий резолвер |
|---|---|---|---|---|
| — | — | — | — | — |
| Сайт открывается в Firefox, но не в Chrome | Нет | Да | Нет | Нет |
| Сайт недоступен во всех браузерах | Да | Да | Нет | Да |
| Сайт недоступен на всех устройствах в сети | Да | Да | Да | Да |
| `nslookup` показывает правильный IP, но сайт не открывается | Нет | Да (сокеты) | Нет | Нет |
| Сайт открывается у коллег, но не у вас | Да | Да | Нет | Да |
| Только что завершена миграция сервера | Да | Да | Нет | Да |
| Подозрение на отравление DNS | Да | Да | Да | Да |
Практический чек-лист до и после очистки кэша
- Перед локальной очисткой убедитесь, что изменение DNS распространилось на авторитетные серверы с помощью
digили онлайн-инструмента, напримерwhatsmydns.net. - Обратите внимание на текущий TTL записи, с которой возникла проблема — если он составляет 86400 секунд (24 часа), локальная очистка поможет только вам; другие пользователи будут видеть старую запись ещё до 24 часов.
- В Windows выполните
ipconfig /displaydnsперед очисткой, чтобы сохранить снимок текущего состояния кэша для диагностики. - После очистки используйте
nslookup example.comилиping example.com, чтобы убедиться, что возвращается новый IP, прежде чем открывать браузер. - При работе в среде виртуального веб-хостинга помните, что серверы имён хостинг-провайдера также кэшируют записи — обратитесь в службу поддержки, если распространение, по всей видимости, застряло на уровне сервера.
- Для Chrome в частности: после очистки DNS-кэша также очистите пул сокетов и выполните принудительную перезагрузку (
Ctrl + Shift + Rв Windows/Linux,Cmd + Shift + Rв macOS), чтобы обойти и HTTP-кэш браузера. - Зафиксируйте очистку в журнале изменений, если она выполняется в рабочей среде — изменения DNS и очистка кэша часто упускаются из виду при диагностике проблем, возникших спустя несколько дней после развёртывания.
Часто задаваемые вопросы
Влияет ли очистка DNS-кэша на скорость просмотра?
Временно — да. После очистки ваша система должна выполнять новые DNS-запросы для каждого имени хоста, с которым она взаимодействует, что добавляет небольшую задержку (обычно 20–100 мс на запрос) до повторного заполнения кэша. Для большинства пользователей это незаметно. Кэш автоматически восстанавливается в течение нескольких минут обычного просмотра.
Приведёт ли очистка DNS-кэша к выходу из аккаунтов на сайтах?
Нет. Записи DNS-кэша полностью отделены от файлов cookie браузера, токенов сеансов и состояния аутентификации. Очистка DNS не затрагивает ничего из перечисленного.
Чем ipconfig /flushdns отличается от Clear-DnsClientCache?
Обе команды указывают службе DNS-клиента Windows очистить кэш. ipconfig /flushdns — это устаревший интерфейс, который взаимодействует со службой через утилиту ipconfig; Clear-DnsClientCache — это встроенный командлет PowerShell, использующий интерфейс WMI/CIM напрямую. Конечный результат идентичен, однако Clear-DnsClientCache поддерживает написание скриптов и возвращает структурированные объекты, что делает его предпочтительным в контексте автоматизации.
Почему Chrome всё ещё показывает старый сайт после очистки DNS-кэша ОС?
Chrome поддерживает собственный внутренний DNS-кэш, на который очистка на уровне ОС не влияет. Необходимо отдельно очистить кэш Chrome через chrome://net-internals/#dns. Кроме того, если старое TCP-соединение всё ещё активно в пуле сокетов Chrome, необходимо также сбросить пулы сокетов через chrome://net-internals/#sockets.
Как часто следует очищать DNS-кэш?
Универсального расписания не существует. Очищайте его по необходимости — при возникновении ошибок, связанных с DNS, после миграции сервера или домена, после подозрительного инцидента безопасности или при переключении между VPN и обычной сетевой конфигурацией. Регулярная плановая очистка оправдана только в средах разработки или тестирования, где DNS-записи меняются часто.
