ITСоветы

Как очистить 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, браузер использует тот же ответ, а соединение с целевым сервисом устанавливается.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *