Коротко: очистить кэш DNS (по-английски flush DNS) в Windows можно командой ipconfig /flushdns, в macOS командой sudo dscacheutil -flushcache, в Linux с systemd-resolved командой sudo resolvectl flush-caches. Каждая из них сбрасывает кэш локального резолвера, и следующий запрос снова уходит на DNS-сервер, а не берёт устаревший ответ из памяти. Это полезно сразу после изменения DNS-записи, когда упорно возвращается старый IP.
| ОС | Команда |
|---|---|
| Windows | ipconfig /flushdns |
| macOS (современные версии) | sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder |
| Linux, systemd-resolved | sudo resolvectl flush-caches |
| Linux, nscd | sudo systemctl restart nscd |
| Linux, dnsmasq | sudo systemctl restart dnsmasq (или: kill -SIGHUP $(pidof dnsmasq)) |
| Chrome / Edge | chrome://net-internals/#dns → Clear host cache |
| Firefox | about:networking#dns → Clear DNS Cache |
Как очистить кэш DNS в Windows
ipconfig /flushdnsВ русской Windows команда отвечает Кэш сопоставителя DNS успешно очищен., в английской Successfully flushed the DNS Resolver Cache., причём независимо от того, было ли в кэше хоть что-нибудь. Посмотреть содержимое кэша перед очисткой можно так:
ipconfig /displaydnsКак очистить кэш DNS в macOS
Команда менялась от версии к версии macOS. Вот та, что работает в актуальных выпусках (Ventura, Sonoma и новее), причём без изменений она работает начиная с Sierra:
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponderПервая команда очищает кэш Directory Service, вторая велит mDNSResponder (процессу, который в macOS на самом деле разрешает имена) перечитать настройки. Выполняйте обе: в некоторых версиях любая из них по отдельности оставляет часть кэша на месте.
Как очистить кэш DNS в Linux
Какая команда сработает, зависит от того, какой резолвер использует дистрибутив. Сначала проверьте:
resolvectl status 2>/dev/null | head -1 # есть вывод → systemd-resolved
systemctl is-active nscd 2>/dev/null # active → nscd
systemctl is-active dnsmasq 2>/dev/null # active → dnsmasqsudo resolvectl flush-caches
# Старый псевдоним того же действия, устаревший, но кое-где ещё есть:
sudo systemd-resolve --flush-cachessudo systemctl restart nscdsudo systemctl restart dnsmasqУ браузеров свой кэш DNS
Браузер сам разрешает имена хостов и кэширует результат отдельно от операционной системы, и очистка кэша ОС его не затрагивает:
| Браузер | Что сделать |
|---|---|
| Chrome / Edge / Brave | Откройте chrome://net-internals/#dns (или edge://net-internals/#dns) и нажмите Clear host cache |
| Firefox | Откройте about:networking#dns и нажмите кнопку очистки кэша DNS (Clear DNS Cache) |
| Safari | Отдельной страницы нет; кэш в памяти очищается, если полностью закрыть Safari |
У роутера тоже есть кэш
Большинство домашних роутеров держат собственный небольшой кэш DNS для устройств за ними. Если после очистки кэша на каждом устройстве всё ещё приходит старый ответ, перезагрузите роутер. Отдельная кнопка очистки кэша встречается редко, а перезагрузка занимает так мало времени, что искать такую кнопку обычно не стоит.
Когда очистка кэша DNS действительно помогает
Очистка помогает ровно в одной ситуации: DNS-запись изменилась, а что-то между вами и авторитативным сервером всё ещё отдаёт старое значение, полученное до изменения. Она не исправит запись, которая неверна в самом источнике, задержку распространения, пока не истёк TTL записи, или проблему с соединением, когда имя уже разрешается в верный IP; для них нужно другое решение дальше по цепочке.
Если резолвер провайдера отвечает медленно или неверно, его можно заменить публичным, например Google DNS. А если нужно, чтобы домен открывался с другого адреса только на вашем компьютере, например для проверки сайта на новом сервере, это задача для файла hosts; после его правки кэш DNS тоже стоит очистить.
Если запросы не проходят вовсе, а не возвращают устаревший ответ, это другая проблема. Разбор в статье DNS-сервер не отвечает.
Как DNS-запрос вообще проходит путь от вашего резолвера до авторитативного сервера, объясняет статья Что такое DNS.
Впервые направляете домен на сервер или переносите его на новый? Что при этом настроить в DNS и как TTL определяет, сколько старый ответ продержится у других людей даже после очистки вашего кэша, описано в статье Как направить домен на VPS (англ.).
Частые вопросы
Как очистить кэш DNS в Windows?
Откройте командную строку или PowerShell и выполните ipconfig /flushdns. Права администратора не нужны. Русская Windows отвечает «Кэш сопоставителя DNS успешно очищен.» независимо от того, было ли что-то в кэше; посмотреть содержимое кэша до очистки можно командой ipconfig /displaydns.
Как очистить кэш DNS в Linux?
Зависит от резолвера: sudo resolvectl flush-caches для systemd-resolved (большинство современных дистрибутивов), sudo systemctl restart nscd для nscd и sudo systemctl restart dnsmasq для dnsmasq. Минимальный сервер, где ничего из этого не запущено, часто вообще не держит локального кэша DNS.
Поможет ли очистка кэша DNS, если открывается не тот сайт?
Только если причина в устаревшем ответе, который осел в кэше где-то между вами и DNS-записью, например после смены A-записи. Очистка не исправит запись, которая неверна в самом источнике, и не поможет, если имя уже разрешается в правильный адрес, а проблема в соединении. Не забудьте и про собственный кэш браузера: его очищают отдельно.