Сброс кэша DNS в системах Fedora 40, Debian 12, Ubuntu 20.04 и 22.04

После смены 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 трогайте только если он у вас в цепочке резолва.


Комментарии загружаются…