Dave,
Yes, clients should always have two DNS servers listed just in case the main one is down.
As an example, on my network at work I have a BIND DNS server that I use for a couple of internal zones and for resolving external queries. However, I only have one active DNS server on the office network. So, on my laptop I specify my internal DNS server and one of our public cache servers as the second server. So when I'm on the office LAN, all queries go to my internal DNS server and when I'm out of the office and that server is unreachable (unless I have my VPN connection up), all client queries from my laptop are then sent to the public server.
However, on my DNS server, I do not use a forwarder. Rather than having my server send recursive queries (you find the answer for me) my server goes through the process of checking with the root servers etc until it finds the authoratative server to query. I have never read the FAQ on here but I always suggest not using forwarders if you are running a BIND server as it's fully capable of doing it's own queries without just passing the buck to another server that then has to do all the leg work. I don't use Windows DNS servers but I'm sure that they can do the same. If you remove the forwarder and it works okay then you've cracked it.
As an example of how a server gets to the correct server for a domain;
[chris@uranium chris]$ dig
+trace
; <<>> DiG 9.2.1 <<>>
+trace
;; global options: printcmd
. 384628 IN NS F.ROOT-SERVERS.NET.
. 384628 IN NS G.ROOT-SERVERS.NET.
. 384628 IN NS H.ROOT-SERVERS.NET.
. 384628 IN NS I.ROOT-SERVERS.NET.
. 384628 IN NS J.ROOT-SERVERS.NET.
. 384628 IN NS K.ROOT-SERVERS.NET.
. 384628 IN NS L.ROOT-SERVERS.NET.
. 384628 IN NS M.ROOT-SERVERS.NET.
. 384628 IN NS A.ROOT-SERVERS.NET.
. 384628 IN NS B.ROOT-SERVERS.NET.
. 384628 IN NS C.ROOT-SERVERS.NET.
. 384628 IN NS D.ROOT-SERVERS.NET.
. 384628 IN NS E.ROOT-SERVERS.NET.
;; Received 436 bytes from 192.168.3.113#53(192.168.3.113) in 1 ms
com. 172800 IN NS A.GTLD-SERVERS.NET.
com. 172800 IN NS B.GTLD-SERVERS.NET.
com. 172800 IN NS C.GTLD-SERVERS.NET.
com. 172800 IN NS D.GTLD-SERVERS.NET.
com. 172800 IN NS E.GTLD-SERVERS.NET.
com. 172800 IN NS F.GTLD-SERVERS.NET.
com. 172800 IN NS G.GTLD-SERVERS.NET.
com. 172800 IN NS H.GTLD-SERVERS.NET.
com. 172800 IN NS I.GTLD-SERVERS.NET.
com. 172800 IN NS J.GTLD-SERVERS.NET.
com. 172800 IN NS K.GTLD-SERVERS.NET.
com. 172800 IN NS L.GTLD-SERVERS.NET.
com. 172800 IN NS M.GTLD-SERVERS.NET.
;; Received 506 bytes from 192.5.5.241#53(F.ROOT-SERVERS.NET) in 157 ms
tek-tips.com. 172800 IN NS ns.shutter.net.
tek-tips.com. 172800 IN NS ns2.shutter.net.
;; Received 112 bytes from 192.5.6.30#53(A.GTLD-SERVERS.NET) in 88 ms
3600 IN CNAME tek-tips.com.
tek-tips.com. 3600 IN A 216.45.19.33
tek-tips.com. 3600 IN NS ns.shutter.net.
tek-tips.com. 3600 IN NS ns2.shutter.net.
;; Received 142 bytes from 216.45.16.13#53(ns.shutter.net) in 114 ms
So here you can see, I've asked my DNS server on 192.168.3.113 for the address of
;; Received 436 bytes from 192.168.3.113#53(192.168.3.113) in 1 ms
My server then asked F.ROOT-SERVERS.NET;
;; Received 506 bytes from 192.5.5.241#53(F.ROOT-SERVERS.NET) in 157 ms
F.ROOT-SERVERS.NET directed it to A.GTLD-SERVERS.NET for information on where tek-tips.com can be found;
;; Received 112 bytes from 192.5.6.30#53(A.GTLD-SERVERS.NET) in 88 ms
A.GTLD-SERVERS.NET then tells it that it knows that this domain is delegated to ns.shutter.net and ns2.shutter.net. So it can now ask one of those servers for the address of
It gets an answer from ns.shutter.net;
3600 IN CNAME tek-tips.com.
tek-tips.com. 3600 IN A 216.45.19.33
tek-tips.com. 3600 IN NS ns.shutter.net.
tek-tips.com. 3600 IN NS ns2.shutter.net.
;; Received 142 bytes from 216.45.16.13#53(ns.shutter.net) in 114 ms
The beauty is that now my server will cache that information for the period of the TTL. If I query my server again;
[chris@uranium chris]$ dig
;; ANSWER SECTION:
2527 IN CNAME tek-tips.com.
tek-tips.com. 2528 IN A 216.45.19.33
That info will stay on my server for 2528 seconds so it will not have to go and ask the root servers again until the TTL has expired.
tek-tips.com. 2393 IN A 216.45.19.33
2393 seconds left!
So, to recap .. always have two DNS servers configured on client machines (the two 'nearest' servers for faster resolution) and if you can don't use a forwarder on your own server if it doesn't need it. Let a DNS server do its job the way DNS is supposed to work.
I hope that this is of some help.
Chris.
**********************
Chris A.C, CCNA, CCSA
**********************