Очистка кэша DNS в Linux: сброс резолвера resolvectl flush-caches
Почему сайт не открывается после смены IP-адреса на сервере
Вы перенесли домен или сайт на новый сервер, прописали новые A-записи в DNS, но сервер Linux упорно продолжает слать запросы на старый несуществующий IP-адрес. Причина — локальный кэш службы разрешения имен (DNS Resolver). Операционная система сохраняет в оперативной памяти предыдущие ответы DNS-серверов на определенное время (TTL), чтобы не нагружать сеть повторными запросами.
Служба systemd-resolved
В современных дистрибутивах Ubuntu Linux за кэширование и маршрутизацию DNS-запросов отвечает системный демон systemd-resolved. Чтобы заставить систему мгновенно забыть старые записи, необходимо выполнить принудительный сброс (Flush) кэша.
Пошаговый сброс кэша DNS в разных версиях Linux
Способ 1: Для современных Ubuntu 20.04 / 22.04 / 24.04 (resolvectl)
Выполните команду сброса кэша резолвера:
sudo resolvectl flush-cachesПроверьте, что кэш действительно обнулился:
sudo resolvectl statisticsВ выводе в секции Cache параметр Current Cache Size должен стать равен 0.
Способ 2: Для Ubuntu 18.04 и ранних систем (systemd-resolve)
sudo systemd-resolve --flush-cachesСпособ 3: Перезапуск службы резолвера
Если кэш продолжает отдавать старый IP, полностью перезапустите демон:
sudo systemctl restart systemd-resolvedШаг 4: Проверка разрешения домена
Проверьте, какой IP-адрес теперь видит система с помощью утилиты dig или nslookup:
dig mysite.com +short
или
nslookup mysite.comТиповые ошибки администраторов
- Забытый кэш сторонних служб (Dnsmasq / Nscd / BIND): Если на сервере дополнительно установлен локальный DNS-кэшер (например,
nscdилиdnsmasq), очистка systemd-resolved не поможет. Нужно очистить их службы:sudo systemctl restart nscdилиsudo systemctl restart dnsmasq. - Кэш браузера или прокси: Если curl в терминале отдает правильный новый IP, а в браузере сайт не работает — очистите кэш сокетов в браузере (в Chrome:
chrome://net-internals/#dns).
Инженеры ITSTM настроят отказоустойчивые локальные DNS-резолверы с валидацией DNSSEC и фильтрацией вредоносных доменов.
Частые вопросы (FAQ)
Как посмотреть, какие DNS-серверы использует мой Linux сервер прямо сейчас?
Выполните команду 'resolvectl status' или посмотрите файл '/run/systemd/resolve/resolv.conf'.
Как сбросить DNS кэш в RedHat / CentOS / AlmaLinux?
В RHEL/CentOS по умолчанию системный кэш DNS отключен. Если используется демон nscd, выполните: sudo systemctl restart nscd. Если установлен BIND/Named: sudo rndc flush.
Помогает ли перезагрузка сервера для сброса DNS-кэша?
Да. Кэш systemd-resolved хранится исключительно в оперативной памяти (RAM) и полностью обнуляется при любой перезагрузке сервера.
Почему после сброса кэша ping все равно идет на старый IP?
Проверьте файл /etc/hosts. Если в нем жестко прописана статическая связка домена и старого IP, она имеет приоритет над любыми DNS-серверами.