Today I spent the better part of two hours setting up a BIND9 nameserver on my raspberry pi server, and I quickly ran into an issue:
The DNS cache on OS X was not updating. There are two methods circulating of solving these, which are:
dscacheutil -flushcache sudo discoveryutil udnsflushcaches
So, I had to find another way.
And I found one. The super easy way of fixing this is to lower your TTL in your zone file, do the ping, and set it back again (or leave it)
e.g. take this here:
ben.local. IN SOA server.ben.local. hostmaster.ben.local. ( 1 ; serial 5H ; refresh 4H ; retry 4W ; expire 1D ; minimum )
In this case, the TTL (refresh) is set to 5 hours. You won’t be able to get a lot of work done in that time, so set it to
5 to force a refresh every 5 seconds, i.e.
ben.local. IN SOA server.ben.local. hostmaster.ben.local. ( 1 ; serial 5 ; refresh 4H ; retry 4W ; expire 1D ; minimum )
Oh, and you don’t need to change the serial unless you have slaves waiting for an update. Make the changes, then run
sudo service bind9 restart to restart the nameserver, and voilà! You can get back to work.
In future, if this is a private nameserver which only receives a few queries a second, then feel free to set it to something reasonable, like a minute. or five. or ten. Keep the five hour TTLs for high load servers where you need to cater for tens of thousands of DNS requests a second