How can I flush the DNS cache in Debian 9.1 with KDE?
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
-
7
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.
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.
-
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 '20 at 9:38 -
@AdminBee Nope, this answer works for me, though I have
systemd
as init andsystemctl restart networking
works too. – Arnie97 Jul 29 '20 at 16:54 -
It is really weird,
nslookup my.domain.tld
returns the new IP address whileping my.domain.tld
goes to the old one. Restarting the networking service fixes this. – Arnie97 Jul 29 '20 at 16:58 -
@Arnie97 Yes, the answer may work because currently there is limited backwards-compatibility support for the
init.d
mechanism, but it is unlikely to survive long into the future. – AdminBee Jul 30 '20 at 8:12
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
-
3Would 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 -
2The 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
/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