I use Windows Server 2008 R2 SP1 DNS to resolve my public names and precisely every two days I get “Can’t find google.co.uk: Server failed” messages and the usual “Internet Explorer cannot display the webpage” nonsense. This only happens when using root hints and not forwarders and only for few selected top level domains (.co.uk being one of them) Here is what the situation looks like when the DNS server is broken:
Ping returns “Ping request could not find host google.co.uk. Please check the name and try again” and nslookup throws error in title. Pretty annoying and so far the fix was to simply bounce the dns service – not elegant in any shape or form but highly successful!
Without going too much into detail the problem here is that Windows Server DNS ignores TTL (Time To Live) supplied by the root hints servers and overwrites it to be exactly 1 day. To fix this we have to set MaxCacheTTL registry key to decimal value of 172800 which equals to 2 days. Here is how to do it:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\Parameters
Value: MaxCacheTTL
Data Type: REG_DWORD
Data value: Hex 2a300 or Decimal 172800 (2 days)
Screenshot to help you out:
If you cannot be bothered with the above you can download the registry key ready to be imported from here – Server_2008_R2_DNS_Fix.reg (right click, save as)
This should be it, your DNS server will behave as expected from now on!