Как очистить кэш DNS на Linux
TL;DR
Если ваш Linux использует systemd-resolved, выполните:
resolvectl flush-cachesДля dnsmasq перезапустите демона, отправив ему сигнал SIGHUP:
sudo killall -HUP dnsmasqЕсли systemd-resolved не активен, очистка кэша не требуется — либо кэш отсутствует, либо используется другой резолвер.
Быстрое оглавление
- Что такое кэш DNS
- Проверка: используется ли локальный кэш DNS
- Просмотр содержимого кэша DNS
- Очистка кэша systemd-resolved
- Очистка кэша dnsmasq
- Когда не стоит чистить кэш
- Руководство действий и контрольные списки
- Краткое резюме и полезные команды

Изображение: набор приложений на рабочем столе Linux с различными иконками
Что такое кэш DNS
DNS (Domain Name System) переводит доменные имена в IP-адреса. Кэш DNS сохраняет недавние результаты этих преобразований, чтобы ускорить последующие запросы. Кэш может находиться в:
- локальном процессе на машине (например, systemd-resolved или dnsmasq),
- у домашнего маршрутизатора,
- у вашего интернет-провайдера или у стороннего публичного резолвера (Google DNS, Cloudflare, OpenDNS).
Пояснение в одну строку: кэш DNS — это временное хранилище соответствий домен ↔ IP, которое сокращает задержки при повторных обращениях.
Важно: кэш ускоряет работу, но может хранить устаревшую или повреждённую запись. В таких случаях очистка кэша помогает решить проблемы с доступом к сайтам или неверным перенаправлением.
Как проверить, используется ли локальный кэш DNS
На современных дистрибутивах с systemd служба, отвечающая за локальное разрешение имён, называется systemd-resolved. Чтобы проверить её состояние, выполните:
systemctl is-active systemd-resolvedЕсли ответ “active”, значит локальный кэш включён. Если “inactive” — кэш на этой службе отсутствует или используется другой резолвер.
Чтобы посмотреть статистику кэша используйте:
resolvectl statistics
Изображение: вывод команды resolvectl statistics с подсчётом записей в кэше DNS
В статистике вы увидите количество записей в кэше и другие счётчики. Это помогает подтвердить, что кэш действительно накапливает данные.
Примечание: некоторые дистрибутивы по умолчанию не включают systemd-resolved; вместо него может использоваться NetworkManager, dnsmasq или прямые настройки /etc/resolv.conf.
Просмотр содержимого кэша DNS
Просмотр кэша напрямую не стандартизирован. systemd-resolved умеет записывать своё содержимое в журнал по сигналу USR1. Процесс выглядит так:
- Отправить сигнал USR1 демону systemd-resolved:
sudo killall -USR1 systemd-resolved- Извлечь записи из системного журнала в файл:
sudo journalctl -u systemd-resolved > dns.txt- Просмотреть файл с помощью less:
less dns.txtВы увидите блоки, где перечислены соответствия доменов и IP. Это полезно, если нужно подтвердить, какие записи хранятся и не содержатся ли там очевидно некорректные или устаревшие записи.

Изображение: фрагмент dns.txt с записью для google.com и соответствующим IP-адресом
Когда это полезно:
- ищете симптомы повреждённого кэша (перепутанные или зашифрованные строки),
- проверяете, действительно ли запросы обслуживаются локальным резолвером,
- сравниваете IP-адреса из кэша с ожидаемыми.
Ограничение: журнал может содержать много служебной информации — фильтруйте и ищите по домену.
Как очистить кэш systemd-resolved
Очистка (flush) удаляет все записи в локальном кэше. Это безопасная операция: systemd-resolved продолжит работать и накапливать новые записи по мере обращения к доменам.
Команда для очистки:
resolvectl flush-cachesПосле выполнения вы возвращаетесь к командной строке. Подтвердить эффект можно повоторно вызвав статистику:
resolvectl statisticsЕсли очистка удалась, поле с размером кэша должно показать ноль или значительно уменьшившееся количество записей. Кэш начнёт наполняться снова по мере использования сети.
Совет: перед очисткой фиксируйте текущее состояние (journal/logs) — это поможет при отладке, если проблема повторится.
Как очистить кэш dnsmasq
dnsmasq — лёгкий DNS/DHCP демон, часто используется в роутерах, на серверах или в комбинации с NetworkManager. Чтобы заставить dnsmasq перечитать конфигурацию и очистить кэш, отправьте сигнал SIGHUP:
sudo killall -HUP dnsmasqЭто заставит dnsmasq перезагрузить конфигурацию без полного завершения процесса. Если dnsmasq запущен под другим именем процесса или в контейнере, используйте правильный PID/юнит.
Если dnsmasq настроен как systemd-юнит, можно выполнить мягкую перезагрузку через systemctl:
sudo systemctl reload dnsmasqили полную перезапись, если reload недоступен:
sudo systemctl restart dnsmasqПримечание: restart приведёт к кратковременному прерыванию DNS-сервиса — спланируйте в рабочее время вне пиков.
Когда очищать кэш полезно, а когда нет
Когда стоит очистить кэш:
- вы видите старую версию сайта после обновления DNS;
- вас перенаправляет на неправильный IP;
- подозреваете повреждение кэша или странные DNS-ответы;
- вы меняете локальные DNS-записи (например, в /etc/hosts, локальном DNS-сервере) и хотите протестировать изменения немедленно.
Когда не стоит:
- всё работает корректно — бессмысленная операция только увеличит число DNS-запросов;
- проблема связана с кэшем браузера (в этом случае сначала почистите кэш браузера);
- проблема на стороне провайдера или внешнего резолвера (очистка локального кэша не поможет).
Контрпример: если сайт стал недоступен только для вас, но доступен для других, вероятнее причина в провайдере, CDN или локальной фильтрации, а не в локальном кэше.
Пошаговое руководство для устранения проблем с DNS на Linux
- Проверить, активен ли systemd-resolved:
systemctl is-active systemd-resolved- Если активен, посмотреть статистику:
resolvectl statistics- Если хотите посмотреть содержимое кэша — отправьте USR1 и извлеките журнал:
sudo killall -USR1 systemd-resolved
sudo journalctl -u systemd-resolved > dns.txt
less dns.txt- Очистить кэш:
resolvectl flush-caches- Если используется dnsmasq, вместо или дополнительно выполните:
sudo killall -HUP dnsmasq- Проверьте разрешение домена вручную с помощью dig или host:
dig +short example.com- Если проблема сохраняется, проверьте /etc/resolv.conf и настройки NetworkManager, затем маршрутизатор и провайдера.
Mermaid-диаграмма для принятия решения:
flowchart TD
A[Проблемы с доступом к сайту] --> B{Доступ на других устройствах?}
B -- Да --> C[Проверьте browser cache и локальные настройки]
B -- Нет --> D{systemd-resolved активен?}
D -- Да --> E[resolvectl statistics]
E --> F{Похоже на устаревший/повреждённый кэш?}
F -- Да --> G[resolvectl flush-caches]
F -- Нет --> H[Проверить провайдера/CDN]
D -- Нет --> I{dnsmasq запущен?}
I -- Да --> J[sudo killall -HUP dnsmasq]
I -- Нет --> K[Проверить /etc/resolv.conf и роутер]Контрольные списки по ролям
Для администратора Linux:
- проверить активность systemd-resolved и dnsmasq;
- зафиксировать логи перед изменениями;
- выполнить flush или перезагрузку демона;
- проверить разрешение через dig/host;
- при необходимости перезапустить NetworkManager или сеть.
Для рядового пользователя:
- перезапустите браузер и очистите его кэш;
- если проблема только на одном устройстве, попробуйте перезагрузку компьютера;
- если уверены, что проблема локальная, попросите администратора выполнить очистку кэша.
Для разработчика веб-сайта:
- убедитесь, что TTL DNS-записей настроен корректно;
- при публикации изменений укажите ожидаемое время распространения;
- документируйте тесты для проверки резолюции домена.
Критерии приёмки
- после очистки systemd-resolved статистика показывает уменьшение размера кэша;
- домен с обновлённой записью возвращает новый IP через dig;
- доступ к сайту восстановлен на клиенте, где ранее возникли проблемы.
Команды-справочник и быстрый чит
Основные команды, упомянутые в статье:
systemctl is-active systemd-resolved
resolvectl statistics
resolvectl flush-caches
sudo killall -USR1 systemd-resolved
sudo journalctl -u systemd-resolved > dns.txt
less dns.txt
sudo killall -HUP dnsmasq
sudo systemctl reload dnsmasq
sudo systemctl restart dnsmasq
dig +short example.comТаблица: полезные команды по категориям
| Linux команды | |
|---|---|
| Файлы | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc · tr |
| Процессы | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap |
| Сеть | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld |
Устранение неполадок и советы
- Если после flush-caches проблема осталась — проверьте браузерный кэш и расширения (например, прокси/антивирусные плагины).
- Тестируйте разрешение доменов с других сетей (мобильный интернет, VPN) чтобы исключить проблему провайдера/CDN.
- Если используете VPN, убедитесь, что резолвер не перенастроен на стороне VPN-клиента.
- Для отладки используйте команды dig и traceroute, чтобы увидеть, какие сервера отвечают и какой маршрут у пакетов.
Короткая методология (минимальная проверка при проблемах с DNS)
- Убедиться, что проблема воспроизводима.
- Проверить локальный кэш и очистить его при необходимости.
- Проверить разрешение через dig с указанием внешнего резолвера (например, 1.1.1.1):
dig @1.1.1.1 example.com +short- Если внешние резолверы возвращают правильный IP, проблема локальная. Иначе — ждать обновления DNS на стороне провайдера/хостинга.
1-строчный глоссарий
- DNS: система сопоставления доменов и IP-адресов;
- TTL: время жизни записи в кэше (в секундах);
- systemd-resolved: демон для локального разрешения имён в systemd-системах;
- dnsmasq: лёгкий DNS/DHCP демон, часто используемый в локальных сетях.
Краткое резюме
Очистка кэша DNS на Linux обычно безопасна и помогает при устаревших или некорректных записях. В systemd-системах используйте resolvectl flush-caches; для dnsmasq отправьте SIGHUP. Всегда подтверждайте результаты с помощью resolvectl statistics или dig, и не забывайте про проверку браузерного кэша и сети в целом.
Полезные ссылки и дальнейшие шаги
- используйте dig и traceroute для глубокой диагностики;
- при частых изменениях DNS настройте небольшой TTL на время миграции;
- документируйте действия и логи перед изменениями для возможности отката.
Завершение
Если вы не используете локальный DNS-кэш, ничего делать не нужно. Если кэш присутствует, но всё работает корректно — тоже можно оставить как есть. Если же вы видите неправильные страницы, длительные задержки или подозрительную маршрутизацию, очистка локального кэша — быстрый и безопасный шаг к устранению проблемы.
Похожие материалы
Экстренные контакты iPhone: настройка и обход беззвучного режима
Как исправить микрофон в Windows 10
Что Amazon знает о вас и как запросить ваши данные
Защита веб‑API: руководство по безопасности
Как управлять Google TV с телефона