Как очистить DNS-кэш и понять, где застрял старый адрес
Очистка DNS-кэша нужна не каждый раз, когда сайт перестал открываться. Она помогает, когда домен недавно сменил IP, компьютер запомнил ошибочный ответ или после изменения DNS-сервера продолжает обращаться по старому адресу. Цель этой инструкции — не просто выполнить команду, а понять, на каком уровне остался старый ответ.
Что получим в итоге
- увидим, какой DNS-сервер отвечает компьютеру;
- сравним локальный ответ с внешними резолверами;
- очистим только тот кэш, который реально используется;
- поймём, мешает ли браузерный DoH;
- отделим DNS-проблему от маршрутизации, firewall и TLS.
1. Сначала фиксируем текущий ответ
До очистки кэша запишите, какой адрес возвращает система. Иначе после команды будет не с чем сравнивать результат.
nslookup example.com
dig example.com A
getent hosts example.comДостаточно одной команды, которая есть в вашей системе. Обратите внимание не только на IP, но и на адрес DNS-сервера, который дал ответ.
2. Сравниваем локальный DNS с внешними
nslookup example.com 1.1.1.1
nslookup example.com 8.8.8.8
dig @1.1.1.1 example.com A
dig @8.8.8.8 example.com AЕсли внешние резолверы уже возвращают новый IP, а локальный DNS всё ещё старый, проблема действительно связана с кэшем или внутренним DNS-сервером. Если ответы одинаковые, очистка локального кэша, скорее всего, ничего не изменит.
3. Windows
ipconfig /displaydns
ipconfig /flushdns
nslookup example.com
powershell -Command "Resolve-DnsName example.com"После flushdns Windows заново запросит имя у настроенного DNS-сервера. Сообщение об успешной очистке ещё не доказывает, что IP изменился, поэтому обязательно повторите запрос.
4. macOS
scutil --dns
dscacheutil -q host -a name example.com
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder
dig example.com AКоманда scutil --dns показывает, какие резолверы использует macOS для разных интерфейсов и доменов. Это полезно при VPN и корпоративных split-DNS настройках.
5. Linux с systemd-resolved
resolvectl status
resolvectl statistics
sudo resolvectl flush-caches
resolvectl query example.com
resolvectl statisticsДо и после очистки можно сравнить счётчики cache hits и misses. Если resolvectl отсутствует, сначала определите, какой сервис слушает порт 53.
ss -lntup | grep ':53'
systemctl --type=service | grep -E 'resolved|dnsmasq|unbound|named'6. dnsmasq и Unbound
sudo systemctl restart dnsmasq
sudo systemctl status dnsmasq --no-pager
sudo unbound-control flush_zone example.com
sudo unbound-control lookup example.comНе перезапускайте случайный сервис. Сначала убедитесь, что именно он обслуживает DNS-запросы на этой машине или шлюзе.
7. Проверяем авторитетный сервер
dig example.com NS
dig @ns1.example.net example.com AЕсли даже авторитетный сервер возвращает старый IP, очищать локальные кэши бесполезно: запись ещё не изменена в зоне или изменена не там.
8. Браузер и DNS-over-HTTPS
Chrome, Edge и Firefox могут использовать собственный DNS-over-HTTPS. Тогда системная команда очищает один кэш, а браузер продолжает обращаться к другому резолверу. Для проверки откройте сайт в другом браузере или временно отключите secure DNS только на время диагностики.
9. Когда дело уже не в DNS
ping -c 3 1.1.1.1
curl -v https://example.com
traceroute example.com
openssl s_client -connect example.com:443 -servername example.comЕсли имя разрешается в правильный IP, но сайт не открывается, проверяйте маршрут, firewall, доступность порта и TLS. Повторный flush DNS здесь только создаёт ощущение работы.
10. Откат
Очистка кэша сама по себе отката не требует. Но если для теста меняли DNS-сервер, DoH или VPN, верните исходные параметры и повторите запрос. Критерий успеха: локальный DNS возвращает ожидаемый IP, браузер использует тот же ответ, а соединение с целевым сервисом устанавливается.