How To Flush Linux / UNIX DNS Cache

by on January 29, 2008 · 32 comments· LAST UPDATED June 2, 2012

in , ,

I'm on a Dial UP Internet connection under Linux and frequent dial up disconnection causing dns problems. How do I flush DNS cache under UNIX / Linux distribution using a shell prompt?

Under MS-Windows you can use the ipconfig command to flush dns cache. However, Linux and UNIX provides various ways to flush cache. Linux can run nscd or BIND or dnsmasq as the name service caching daemon. Large and work-group servers may use BIND or dnsmasq as a dedicated caching server to speed up queries.

HowTo: Flush nscd dns cache

Nscd caches libc-issued requests to the Name Service. If retrieving NSS data is fairly expensive, nscd is able to speed up consecutive access to the same data dramatically and increase overall system performance. Just restart nscd:
$ sudo /etc/init.d/nscd restart
OR
# service nscd restart
OR
# service nscd reload
This daemon provides a cache for the most common name service requests. The default configuration file, /etc/nscd.conf, determines the behavior of the cache daemon.

Flush dnsmasq dns cache

dnsmasq is a lightweight DNS, TFTP and DHCP server. It is intended to provide coupled DNS and DHCP service to a LAN. Dnsmasq accepts DNS queries and either answers them from a small, local, cache or forwards them to a real, recursive, DNS server. This software is also installed many cheap routers to cache dns queries. Just restart the dnsmasq service to flush out dns cache:
$ sudo /etc/init.d/dnsmasq restart
OR
# service dnsmasq restart

Flush caching BIND server dns cache

A caching BIND server obtains information from another server (a Zone Master) in response to a host query and then saves (caches) the data locally. All you have to do is restart bind to clear its cache:
# /etc/init.d/named restart
You can also use rndc command as follows flush out all cache:
# rndc restart
OR
# rndc exec
BIND v9.3.0 and above will support flushing all of the records attached to a particular domain name with rndc flushname command. In this example flush all records releated to cyberciti.biz domain:
# rndc flushname cyberciti.biz
It is also possible to flush out BIND views. For example, lan and wan views can be flushed using the following command:
# rndc flush lan
# rndc flush wan

A note about Mac OS X Unix users

Type the following command as root user:
# dscacheutil -flushcache
OR
$ sudo dscacheutil -flushcache
If you are using OS X 10.5 or earlier try the following command:
lookupd -flushcache

A note about /etc/hosts file

/etc/hosts act as the static table lookup for hostnames. You need to remove and/or update records as per your requirements under Unix like operating systems:
# vi /etc/hosts
Sample outputs:

127.0.0.1	localhost
127.0.1.1	wks01.WAG160N	wks01
# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
10.37.34.2     build
192.168.1.10	nas01
192.168.1.11	nas02
192.168.1.12	nas03
#192.168.2.50	nfs2.nixcraft.net.in nfs2
#192.168.2.51	nfs1.nixcraft.net.in nfs1
172.168.232.50  nfs1.nixcraft.net.in nfs1
172.168.232.51  nfs2.nixcraft.net.in nfs2
192.168.1.101	vm01

See also:

Related: Windows Vista / XP Flush DNS Cache with ipconfig Command

TwitterFacebookGoogle+PDF versionFound an error/typo on this page? Help us!

{ 32 comments… read them below or add one }

1 NoPremium.org April 18, 2008 at 8:32 am

it dont work for me i have ubunu 7.10

Reply

2 kazoolist July 10, 2008 at 10:54 pm

I my experience service nscd restart does not clear NSCD’s cache. service nscd reload does, however.

Reply

3 Subhash July 27, 2010 at 5:26 pm

That is correct!

Reply

4 James Mills September 19, 2008 at 8:32 am

Actually, in Bind, you can flush the daemon’s cache by doing

rndc flush

Reply

5 Lost Eagle January 31, 2011 at 4:01 pm

Thank U

This “rndc flush” help lot … restart doesn’t flush …

Have a nice day

Reply

6 RudyD February 4, 2009 at 12:35 pm

Whoops!

It seems that not the perfect view for precise approach. It seems that if I use bind and there is a resolv.conf too not always the bind is in use. (Ubuntu) Other important machine (with debian), there is just resolv.conf. Anyhow I have tried to restart (hope works) the /etc/init.d/dns-clean and it seems it worked. But there were reports that this did not do the job. Anyhow, I want to make sure that – especially my debian system – without restarting, even the networking, how can I just restart the name resolution to the newly set values and how to get sure that it is done well?

Thanks!

Reply

7 Tricky April 26, 2009 at 11:50 pm

If nscd is in use, try “nscd -i hosts” as root.
As per James Mills, “rndc flush” if using bind.

If none of these work you might not have a DNS cache to flush anyway and the problem DNS entry may be stored elsewhere, such as your firefox DNS cache, your router’s cache, or another upstream DNS caching server.

Reply

8 takizo July 26, 2010 at 2:58 pm

it could be nscd is not install?

@James, rndc reload works too :D

Reply

9 dejf August 31, 2010 at 3:04 pm

“/etc/init.d/dnsmasq restart” do not work, even stop and start does not. There is a clear cache option entioned, but it does not help anyway – dnsmasq remembers…

Reply

10 Yogesh September 2, 2010 at 12:08 pm

I guess this is for DNS server. What shall I do if I wish to clear DNS cache on a linux client/desktop machine? [Like ipconfig /flushdns in windows]

Reply

11 Tricky September 2, 2010 at 2:14 pm

@Yogesh: The same commands apply to a desktop

@dejf: Bear in mind per my comment above, perhaps your desktop has a separate DNS cache or the DNS is being cached elsewhere. You have to flush the DNS on all your “upstream” DNS servers as well or change the DNS servers that you’re using.
See the following for info on how to change your DNS settings to these 2 popular public DNS servers:
http://code.google.com/speed/public-dns/
https://store.opendns.com/setup/router/

Reply

12 Yogesh September 2, 2010 at 3:32 pm

@Tricky
Thanks for comment, but I am unable to find /etc/init.d/nscd or named on my Centos 5.3 Desktop. Any help?

Reply

13 Tricky September 3, 2010 at 4:48 am

@Yogesh. Chances are the DNS is cached outside of your desktop or the DNS is being cached by an application directly.

I wrote an (admittedly regex-cryptic) article on this same issue (sorry for the “competing” link, Vivek) – http://dogma.swiftspirit.co.za/archives/300 – skip to the sections after the label “Flush Mozilla Firefox’s internal DNS cache”.

Reply

14 Manish December 4, 2010 at 6:49 pm

Hi

I have a local name resolution issues on CentOS 5.5. I have edited the /etc/hosts file and still the hostname doesn’t resolves to right IP.

Here is what I have priority configuration
# more /etc/host.conf
order hosts,bind
Also /etc/nsswitch.conf file has

hosts: files dns
more /etc/hosts
192.168.1.1 admin.domain.com admin

# host admin
Host admin not found: 3(NXDOMAIN)

Any suggestions would be appreciated.

Reply

15 Tricky December 6, 2010 at 3:49 am

host doesn’t bother with the entries in the hosts file. Try ping admin instead.

Reply

16 nobbiecentos February 8, 2011 at 1:15 pm

TY for information its working solution for clear cash from server side

Reply

17 takprosto April 9, 2011 at 11:45 pm

Im sorry for my bad english…. but im have Debian.
apt-get install nscd Ok
-d, –debug Do not fork and display messages on the current tty
-f, –config-file=NAME Read configuration data from NAME
-g, –statistic Print current configuration statistic
-i, –invalidate=TABLE Invalidate the specified cache
-K, –shutdown Shut the server down
-t, –nthreads=NUMBER Start NUMBER threads
–usage Give a short usage message

commands restart and reload not work ! haven`t ))) and -shutdown not work

Reply

18 Tricky April 10, 2011 at 11:58 am

@takprosto
Do the commands give an error or are they just not refreshing the DNS? If there’s no error then the DNS entry could be cached elsewhere, for example on your router or your ISP’s DNS server.

Reply

19 andre July 22, 2011 at 7:18 am

on Debian “Squeeze/wheezy”:

Usage: /etc/init.d/nscd {start|stop|force-reload|restart|status}

Reply

20 m4h September 15, 2011 at 8:10 am

Manish ->

Change from:
192.168.1.1 admin.domain.com admin
TO:
192.168.1.1 admin admin.domain.com admin

Reply

21 david.chen February 3, 2012 at 2:45 am

why not just use
nscd -i hosts
nscd -i passwd .
to flush the cache

Reply

22 Tim March 21, 2012 at 1:23 pm

The articles recomendations are distribution specific and depend on how the init scripts are set up and what they do. The proper way to flush the cache on nscd is “nscd -i hosts” and for named, “rndc flush”

Anything else, like “/etc/init.d/nscd reload” depends on how your distro wrote the init script. Just because that works for you on Fedora does not mean Debian or someone else set it up that way as well.

Reply

23 Som June 13, 2012 at 8:44 pm

If a user wants to flush DNS cache and if the user uses Internet via LAN connection ,the best way to do so is changing the DNS address manually . He just needs to alter the DNS entry .Setting alternative DNS address as primary address will solve the issue instantly. This trick worked for me . I faced the same problem . I am aLinux user .so , I installed NSCD client and tried to flush the cache . But , it could not solve my issue .i solved it myself just changing the DNS entry . It worked for me instantly .I kept the new entry for two days without any problem and later reinstated the older entry

Reply

24 nick September 6, 2012 at 9:57 pm

This post is a little misleading. Linux by default does not have a caching system (at least not most of the destributions). So unless you installed a caching system (or your system came with one pre-installed), there is no need to flush DNS because your system doesn’t store any.

This post isn’t clear about that and will cause people (who have no caching in place) to install a caching package (like nscd) just so that they could flush it. That’s a little counterproductive I think.

Reply

25 Luke June 2, 2014 at 5:09 am

No wonder it didn’t work, Ubuntu 14.04 :)

I guess it must be router? Though I’d think etc/host would be checked before that?

Reply

26 Tricky June 3, 2014 at 10:43 am

Routers can host a DNS cache – all upstream DNS servers (your ISP’s DNS servers for example) will usually also do caching – so even if you flush your router’s cache that may not resolve whatever issue you’re having.

In general, /etc/hosts overrides everything. There’s probably some general exception somewhere. :)

The one scenario I know of where a hosts entry gets “overriden” is with a Squid cache server. For example, if you set up a hosts entry on your computer but the HTTP traffic is intercepted by a Squid server, the Squid server may do its own DNS lookup and completely ignore the fact that your request was directed at a different IP address.

Reply

27 Mac January 11, 2013 at 3:20 pm

*NOTE* – The mistake I have often made is my /etc/hosts (on my CentOS6 workstation) I always FORGET to update it.

So after a DNS update, I cannot reach the site by name and think something is amiss, well I forgot to edit my /etc/hosts file for all of the servers.

Reply

28 Willian Braga da Silva February 1, 2013 at 1:44 pm

The correct way to flush NSCD cache is using the command line:

sudo /usr/sbin/nscd –invalidate=hosts

from the man page:

$ /usr/sbin/nscd –help
Usage: nscd [OPTION...]
Name Service Cache Daemon.

-d, –debug Do not fork and display messages on the current
tty
-f, –config-file=NAME Read configuration data from NAME
-g, –statistic Print current configuration statistics
-i, –invalidate=TABLE Invalidate the specified cache
-K, –shutdown Shut the server down
-t, –nthreads=NUMBER Start NUMBER threads
-?, –help Give this help list
–usage Give a short usage message
-V, –version Print program version

——-
$ sudo /usr/sbin/nscd -g
nscd configuration:
(…)
hosts cache:

yes cache is enabled
yes cache is persistent
yes cache is shared
(…)
yes check /etc/hosts for changes

hope this help

Reply

29 Jesin June 28, 2013 at 8:29 am

Does restarting the networking service clear the cache ?

I do not find all Linux distributions having the one of the three tools you’ve mentioned above.

Reply

30 Mac November 16, 2013 at 2:02 pm

-> nscd is there any reason why you would use this service, just wanting to help understand what it does?

thanks

Reply

31 samuel March 26, 2014 at 7:03 am

I suggest changing this post about flush dns cache since it’s not correct to reload or restart nscd.

I read the man and found the correct way is use:

nscd -i hosts

This method was mentioned in several comments, but if your post were not updated, more and more users would be misguided.

Reply

32 Katta August 27, 2014 at 1:19 pm

for dnsmasq you can simply send HUP signal to process:

killall -HUP dnsmasq

Reply

Leave a Comment

Tagged as: , , , , , , , , , , , , , , , ,

Previous Faq:

Next Faq: