Somehow I came upon the root hints of my Windows DNS Server today and had a thought to update it. Never done that before so why not give it a shot?
You can find the root hints by right clicking on the server and going to the ‘Root Hints’ tab.
Or you could click the server name in DNS Manager and select ‘Root Hints’ in the right pane. Either ways you get to the screen above. From here you can add/ remove/ edit root server names and IP addresses. If you want to update this list you can do so by each entry, or click the ‘Copy from Server’ button to update the list with a new bunch of entries. Note that ‘Copy from Server’ does not over-write the list, so you are better off removing all the entries first and then doing ‘Copy from Server’.
The ‘Copy from Server’ option had me stumped though. You can find the root hints on the IANA website – there’s an FTP link to the file containing root hints, as well as an HTTP link (http://www.internic.net/domain/named.root). I thought simply entering this in the ‘Copy from Server’ window should suffice but it doesn’t. Notice the OK button is grayed out.
The window says it wants a server name or IP address so I removed everything above except the server name and then clicked OK. That looked like it was doing something but then failed with a message that it couldn’t get the root hints. The message said the specified DNS server could not be contacted so that gave me the idea it was looking for a DNS server which had the root hints.
So I tried inputting the name of one of my DNS servers. This DNS server knows of the root servers because it has them already. (You can verify that a server knows of the root hints via nslookup
as below).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
C:\>nslookup -type=NS . win-dc03.rakhesh.local. Server: win-dc03.rakhesh.local Address: 10.50.0.22 Non-authoritative answer: (root) nameserver = a.root-servers.net (root) nameserver = b.root-servers.net (root) nameserver = c.root-servers.net (root) nameserver = d.root-servers.net (root) nameserver = e.root-servers.net (root) nameserver = f.root-servers.net (root) nameserver = g.root-servers.net (root) nameserver = h.root-servers.net (root) nameserver = i.root-servers.net (root) nameserver = j.root-servers.net (root) nameserver = k.root-servers.net (root) nameserver = l.root-servers.net (root) nameserver = m.root-servers.net a.root-servers.net internet address = 198.41.0.4 |
My DNS server doesn’t have an authoritative answer (notice the output above) because it only has the info that’s present with it by default. The real answers could have changed by now (and it often does – the root hints list that these servers come with can have outdated entries) but that’s fine because it has some answers at least. If I were to input this server’s name or IP address to the ‘Copy from Server’ dialog above, that DNS server gets the root hints from this DNS server and updates itself.
Even better though would be to put the IP address of one of the root servers returned above. Like a.root-servers.net
which has an IPv4 address of 198.41.0.4. (Don’t go by the output above, you can get the latest IP addresses from IANA). If I query that address for the root servers it has an authoritative answer:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
C:\>nslookup -type=NS . 198.41.0.4 in-addr.arpa nameserver = f.in-addr-servers.arpa in-addr.arpa nameserver = e.in-addr-servers.arpa in-addr.arpa nameserver = d.in-addr-servers.arpa in-addr.arpa nameserver = c.in-addr-servers.arpa in-addr.arpa nameserver = b.in-addr-servers.arpa in-addr.arpa nameserver = a.in-addr-servers.arpa f.in-addr-servers.arpa internet address = 193.0.9.1 f.in-addr-servers.arpa AAAA IPv6 address = 2001:67c:e0::1 e.in-addr-servers.arpa internet address = 203.119.86.101 e.in-addr-servers.arpa AAAA IPv6 address = 2001:dd8:6::101 d.in-addr-servers.arpa internet address = 200.10.60.53 d.in-addr-servers.arpa AAAA IPv6 address = 2001:13c7:7010::53 c.in-addr-servers.arpa internet address = 196.216.169.10 c.in-addr-servers.arpa AAAA IPv6 address = 2001:43f8:110::10 b.in-addr-servers.arpa internet address = 199.253.183.183 b.in-addr-servers.arpa AAAA IPv6 address = 2001:500:87::87 a.in-addr-servers.arpa internet address = 199.212.0.73 a.in-addr-servers.arpa AAAA IPv6 address = 2001:500:13::73 Server: UnKnown Address: 198.41.0.4 (root) nameserver = l.root-servers.net (root) nameserver = h.root-servers.net (root) nameserver = b.root-servers.net (root) nameserver = k.root-servers.net (root) nameserver = f.root-servers.net (root) nameserver = c.root-servers.net (root) nameserver = d.root-servers.net (root) nameserver = j.root-servers.net (root) nameserver = i.root-servers.net (root) nameserver = g.root-servers.net (root) nameserver = m.root-servers.net (root) nameserver = e.root-servers.net (root) nameserver = a.root-servers.net l.root-servers.net internet address = 199.7.83.42 l.root-servers.net AAAA IPv6 address = 2001:500:3::42 h.root-servers.net internet address = 128.63.2.53 h.root-servers.net AAAA IPv6 address = 2001:500:1::803f:235 b.root-servers.net internet address = 192.228.79.201 b.root-servers.net AAAA IPv6 address = 2001:500:84::b k.root-servers.net internet address = 193.0.14.129 k.root-servers.net AAAA IPv6 address = 2001:7fd::1 f.root-servers.net internet address = 192.5.5.241 f.root-servers.net AAAA IPv6 address = 2001:500:2f::f c.root-servers.net internet address = 192.33.4.12 c.root-servers.net AAAA IPv6 address = 2001:500:2::c d.root-servers.net internet address = 199.7.91.13 |
So there you have it. I put in this IPv4 address into the ‘Copy from Server’ window and my server updated itself with the IP addresses. I noticed that it had missed some of the IPv6 addresses (not sure why, maybe coz it can’t validate these?) but when I did a ‘Copy from Server’ again without removing any existing entries and input in the same IPv4 address and did an update, this time it picked up all the addresses.
(Note to self: The %WINDIR%\System32\dns\cache.dns
file seems to contain root hints. I replaced this file with the root hints from IANA but that did not update the server. When I updated the server as above and checked this file it hadn’t changed either. Restarting the DNS service didn’t update the file/ root hints either, so am not sure how this file comes into play).