10

How can I flush the DNS cache in Debian 9.1 with KDE?

  • 1
    Which one? Debian 9 has ISC's BIND, unbound, Knot Resolver, and PowerDNS Recursor. And there are even more different softwares (dbndns, djbdns) in Debian "sid". All with caches. – JdeBP Aug 20 '17 at 17:02
  • All cached DNS entries which were fetched from the external DNS servers. I'd be interested in what each of these are about but after all I'm just looking for a simple way to delete all cached entries. – mYnDstrEAm Aug 20 '17 at 17:18
  • 1
    All of the cached entries in what software? Which caching software are you running? – JdeBP Aug 20 '17 at 17:28
  • I'd like to find out. I did not install anything in particular for DNS caching. – mYnDstrEAm Aug 20 '17 at 18:36
  • 1
    Please show the contents of your /etc/host.conf and /etc/resolv.conf files. Are you sure you have a DNS cache? – Ferenc Wágner Aug 22 '17 at 8:34
14

If using systemd-resolved as your DNS resolver (i.e. the hosts line of your /etc/nsswitch.conf file includes the word resolve and/or /etc/resolv.conf contains the line nameserver 127.0.0.53), then this command will flush its cache:

$ sudo systemd-resolve --flush-caches
| improve this answer | |
  • 7
    Please elaborate on what this command is supposed to do. – Mio Rin Jul 24 '18 at 13:14
4

If no DNS name servers (BIND, unbound, Knot Resolver, PowerDNS Recursor, and others) or a DNS resolver (like dnsmasq) or a DNS cache (like nscd) are installed, and they are not installed by default, there is no DNS cache except the cache that a web browser (Firefox, Chrome, etc) might keep. Just re-starting the web browser will clear the DNS cache it keeps.

If any DNS server has been installed, probably restarting the service will clear its cache (for example):

# sudo systemctl restart bind9

The only other local network cache possible is the one that a DNS server running on the network router might keep, just reboot the router.

| improve this answer | |
0

Here is how to flush the DNS cache in Linux:

  • Open your Terminal.
  • Restart the name service cache daemon by executing this command:

sudo /etc/init.d/nscd restart

There are some cases when the nscd daemon might not be installed. In Ubuntu (and other Debian-based distros) you can install it from your Terminal by executing this command:

apt-get install nscd
| improve this answer | |
  • 3
    Would it make sense to flush the cache if one needs to first install nscd? Isn't nscd required for DNS caching? Or is it only needed for flushing it? – mYnDstrEAm Aug 20 '17 at 16:11
  • Not true at all: you do not need nscd to have DNS caching feature. Installing a DNS resolver is enough to have DNS caching. – Patrick Mevzek Aug 20 '17 at 22:04
  • 1
    The libc stub resolver does not cache. If nscd is installed and configured to cache DNS requests, its DNS cache can be invalidated by nscd -i hosts. Installing it definitely won't help with avoiding caching. BTW nscd is rather unstable, I recommend unscd instead of it anyway, which has the same interface. – Ferenc Wágner Aug 22 '17 at 7:45
0

Also this worked for me: Open the Terminal (either from a menu or an icon or by pressing Ctrl+Alt+T), and type:

sudo /etc/init.d/networking restart

in the terminal.

It cleared my DNS cache, so I could see the WWW page I had been working on with the DNS name I had allocated it. The DNS allocation was done remotely via the Web hosting service. The sudo command via the Terminal asked for the password, and it was my normal user's password since I used sudo.

I am using MX Linux 19.1_x64 patito feo and it supports and includes both systemd and init-V functionality and kernels. It is based on Debian GNU/Linux buster 10 stable, and is a desktop distribution called MX Linux 19.1 "patito feo". That is why I can use the command "sudo /etc/init.d/networking restart" without problems in it.

| improve this answer | |
  • Welcome to the site and thank you for your contribution. Please edit your answer to add some words on which OS flavor/version you are using. The reason is that yours seems to use SysV-Init, whereas in particular in the Linux world, systemd is currently the standard, and the service name and syntax to use are different there. – AdminBee Apr 8 at 9:38

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.