После смены DNS у домена, переезда сайта или странного «сайт открывается не там» часто виноват локальный кэш резолвера. Ниже – как сбросить DNS-кэш на Ubuntu 20.04/22.04, Debian 12 и Fedora 40 через systemd-resolved, плюс вариант с NSCD, если он у вас реально используется.
Общая схема
На современных дистрибутивах с systemd за DNS чаще отвечает systemd-resolved. Команды чуть отличаются по версии:
- Ubuntu 20.04:
systemd-resolve - Ubuntu 22.04+, Debian 12, Fedora 40:
resolvectl(старый бинарьsystemd-resolveчасто остаётся как совместимость, но надёжнее зватьresolvectl)
Перед сбросом проверьте, что служба жива:
sudo systemctl is-active systemd-resolved
Если ответ не active, включите и запустите:
sudo systemctl enable --now systemd-resolved.service
Ubuntu 20.04
Сброс кэша:
sudo systemd-resolve --flush-caches
Статистика (после flush Current Cache Size обычно около нуля):
sudo systemd-resolve --statistics
Ubuntu 22.04, Debian 12, Fedora 40
Сброс:
sudo resolvectl flush-caches
Проверка:
resolvectl statistics
Если resolvectl недоступен, попробуйте совместимый вызов:
sudo systemd-resolve --flush-caches sudo systemd-resolve --statistics
Перезапуск resolved
Когда flush не помогает или служба ведёт себя странно, перезапуск тоже очищает кэш:
sudo systemctl restart systemd-resolved
После этого снова проверьте имя:
resolvectl query example.com # или getent hosts example.com
NSCD (если установлен)
На части серверов параллельно крутится Name Service Cache Daemon. Он кэширует не только DNS, но и passwd/group. Сбрасывать его имеет смысл, только если пакет реально стоит и используется.
Debian/Ubuntu:
sudo apt-get install nscd sudo systemctl restart nscd
Fedora:
sudo dnf install nscd sudo systemctl restart nscd
Если «сайт всё ещё старый»
- кэш может быть на роутере, у провайдера или в браузере (DoH);
- приложение могло запомнить IP само (не через systemd-resolved);
- TTL у записи ещё не истёк на рекурсивном DNS, который вы используете.
Для проверки «снаружи» удобны dig @1.1.1.1 example.com или dig @8.8.8.8 example.com – так вы видите ответ конкретного резолвера, а не только локальный кэш.
Кратко: на Ubuntu 20.04 – systemd-resolve --flush-caches, на 22.04+/Debian 12/Fedora 40 – resolvectl flush-caches, при сбоях – systemctl restart systemd-resolved. NSCD трогайте только если он у вас в цепочке резолва.