ToggleHosts
Buy ToggleHosts
How to Flush DNS Cache on Linux (Ubuntu 24.04, Debian & RHEL)

How to Flush DNS Cache on Linux (Ubuntu 24.04, Debian & RHEL)

Updated 3 min read

Clean guide to flush DNS cache on Linux with resolvectl flush-caches (systemd-resolved), dnsmasq, and nscd with verification commands.

Manage hosts files without the terminal

ToggleHosts helps you manage environments visually on Windows, macOS, and Linux, with automatic DNS flush and backups.

Need to flush the DNS cache on Linux? If your system uses systemd-resolved, run:

BASH
sudo resolvectl flush-caches

Use it after editing /etc/hosts, changing resolvers, or testing a migration when a hostname still resolves to an old IP. Need every platform in one place? See how to flush the DNS cache on Windows, macOS and Linux.

Linux DNS flush commands by distribution

Linux Distribution / ResolverCommandStatus / Check
Ubuntu 22.04 / 24.04 (systemd-resolved)sudo resolvectl flush-cachesresolvectl statistics
Older systemd-resolvedsudo systemd-resolve --flush-cachessystemd-resolve --statistics
Any system using nscdsudo systemctl restart nscdsudo nscd -g
dnsmasq local servicesudo systemctl restart dnsmasqjournalctl -u dnsmasq
BIND (named)sudo rndc flushsudo rndc status

How to flush DNS on Linux

To flush DNS on Linux, run the command for your resolver:

  1. systemd-resolved (most modern distros): sudo resolvectl flush-caches.
  2. Older systemd: sudo systemd-resolve --flush-caches.
  3. nscd: sudo systemctl restart nscd (or sudo nscd -i hosts).
  4. dnsmasq: sudo systemctl restart dnsmasq.
  5. Local BIND: sudo rndc flush.

Then verify with resolvectl query myproject.test or dig myproject.test.

Does Linux even cache DNS?

Plain glibc has no DNS cache, so editing /etc/hosts takes effect immediately. A cache exists only when you run a caching layer: systemd-resolved, nscd, dnsmasq, or a local resolver. If unsure which you use:

BASH
resolvectl status
systemctl is-active systemd-resolved nscd dnsmasq

When to flush

  • You edited /etc/hosts and a tool still resolves the old IP.
  • You changed /etc/resolv.conf or your DNS server.
  • You moved a staging site to a new server before propagation.

For editing the file itself, see how to edit the hosts file on Linux or the Ubuntu-specific guide.

Verify the result

BASH
resolvectl query myproject.test
dig myproject.test
getent hosts myproject.test

getent hosts reflects the full name-service stack, including /etc/hosts.

Troubleshooting

  • resolvectl not found: your system may not use systemd-resolved; use the nscd/dnsmasq command instead.
  • Still cached in the browser: clear the browser DNS cache and retry in a new tab.
  • WSL2: flush on the Windows host too with ipconfig /flushdns.

If you manage many local domains across machines, ToggleHosts keeps hosts entries organized and consistent across Linux, macOS and Windows.

_Last tested: June 2026 on Ubuntu 24.04, Fedora 40 and Debian 12._

Sources and further reading

Also readHow to edit the hosts file on Linux
Share this article

Frequently Asked Questions

Run sudo resolvectl flush-caches (older systems: sudo systemd-resolve --flush-caches).

Not always. Plain glibc has no cache. Caching exists only if you run systemd-resolved, nscd, dnsmasq, or a local BIND resolver.

Restart the service: sudo systemctl restart dnsmasq (or send SIGHUP to the dnsmasq process).

Use resolvectl query yourdomain.test or dig yourdomain.test and confirm the expected IP.

Related Articles