Host Header DNS Problem – Requires FlushDNS

domain-name-systemhostnamewindows-server-2003

I've inherited a DNS server setup and I'm trying to configure our local intranet properly.
Forgive me if this is simple, but I'm missing something in our configuration.

We're hosting trying to host 2 separate intranet sites on 1 IIS 6 Server (Server 2003).

Site 1: http:// servername (ipaddress:80)
Site 2: http:// production (ipaddress:8080) – host header value of 'production' in IIS and DNS A Record set up points to the correct server.

Everything works properly for a while, but unexpectedly we lose the ability to type in 'production' – and get a DNS resolver error.

If we cmd > ipconfig /flushDNS, everything works perfect back to normal.

Why would each of the clients be losing the reference and then not allowing us to connect for a period of time? (nslookup always finds the correct server, then it works fine again)

Is there any way to create a "static" reference without changing the HOSTS file on each PC (not practical).

Thanks in advance for your help!

Best Answer

An A record is a static reference unless you're allowing dynamic updates. The fact that a /flushdns seems to fix the problem is a bit of a puzzler, as all that command does is clear the cache. Clearing the cache as a fix doesn't really make any sense unless the records themselves are changing (which is usually why one would want to flush the cache).

If this is a Windows DNS server, do you by chance have scavenging turned on? Failing that, are you running more than one DNS server and the zone is expiring?

You might experiment by turning off the dns cache on a couple of workstations to see if they then fail at the same time as the caching workstations.

"net stop dnscache" will deactivate caching until the next reboot.

edit: internally, we used to run about a 100 different A records all pointing to essentially the same resource which was an absolute nightmare if you ever had to change the resolution unless you were 100% sure of your sed/awk skills. Now I insist that they either utilize the standards that I've built, or a CNAME that points to the standards based A record. An example:

$ORIGIN mydomain.com.
socketalpha             CNAME   alpha.socket
socketbeta              CNAME   beta.socket
socketdvlp              CNAME   dvlp.socket
socketsystems           CNAME   systems.socket
alpha                   A       192.168.125.12
alphasecure             CNAME   alpha.secure
alphasecured            CNAME   alpha.secured
$ORIGIN secure.mydomain.com.
alpha                   A       192.168.125.32
beta                    A       192.168.125.33
dvlp                    A       192.168.125.31
systems                 A       192.168.125.30

The standard I push is ... You could probably find a more efficient method for your own setup, but using this means that if, for example, the server/virtual for alpha.socket.mydomain.com changes, I don't have to change multiple A records.

Related Topic