I wrote some time back about running my own DNS server temporarily in order to help facilitate the move of a domain name between two registrars with no down-time. I have since purchased the CustomDNS package from DYNDNS and have populated the DNS records for my domain, sugarcreekcctexas.com, which is currently at GoDaddy. My goal is to change the nameservers at GoDaddy to point to DYNDNS' nameservers so they can serve DNS requests during the registrar move.
However, even though I've pre-activated DYNDNS' service for testing purposes, I am getting strange results with Windows' version of NSLOOKUP when I ask for records from DYNDNS' nameservers. I want to understand why. Please note: 'A' records seem to work fine. However, I am testing the lookup of MX records for the domain, since I've never gotten proper results from DYNDNS.
Here's the output of NSLOOKUP from Windows:
Default Server: vnsc-bak.sys.gtei.net ; initial DNS set in ROUTER Address: 184.108.40.206 > server 220.127.116.11 ; changing to ns1.mydyndns.org Default Server: ns1.mydyndns.org Address: 18.104.22.168 > set type=MX ; makes NSLOOKUP query for MX records > sugarcreekcctexas.com ; asking for the domain's MX records Server: ns1.mydyndns.org Address: 22.214.171.124 (root) nameserver = M.ROOT-SERVERS.net (root) nameserver = L.ROOT-SERVERS.net (root) nameserver = G.ROOT-SERVERS.net (root) nameserver = K.ROOT-SERVERS.net (root) nameserver = A.ROOT-SERVERS.net (root) nameserver = J.ROOT-SERVERS.net (root) nameserver = C.ROOT-SERVERS.net (root) nameserver = E.ROOT-SERVERS.net (root) nameserver = I.ROOT-SERVERS.net (root) nameserver = D.ROOT-SERVERS.net (root) nameserver = B.ROOT-SERVERS.net (root) nameserver = H.ROOT-SERVERS.net (root) nameserver = F.ROOT-SERVERS.net >
I didn't understand this. So, I went to DYNDNS' forums and asked them about the issue. They've been very helpful. The primary answer is that both DIG and NSLOOKUP show the proper answer when they send the queries.
I installed the Windows version of BIND's tools, gotten from their website. These tools include DIG and NSLOOKUP, at least the BIND-blessed versions. The output from these tools is very different:
C:\Windows\System32\dns\bin>nslookup > server 126.96.36.199 Default server: 188.8.131.52 Address: 184.108.40.206#53 > set type=MX > sugarcreekcctexas.com Server: 220.127.116.11 Address: 18.104.22.168#53 sugarcreekcctexas.com mail exchanger = 10 sugarcreekcctexas.com.s7a1.psmtp.com . sugarcreekcctexas.com mail exchanger = 20 sugarcreekcctexas.com.s7a2.psmtp.com . sugarcreekcctexas.com mail exchanger = 30 sugarcreekcctexas.com.s7b1.psmtp.com . sugarcreekcctexas.com mail exchanger = 40 sugarcreekcctexas.com.s7b2.psmtp.com . >
C:\Windows\System32\dns\bin>dig @22.214.171.124 sugarcreekcctexas.com MX ; <<>> DiG 9.7.0 <<>> @126.96.36.199 sugarcreekcctexas.com MX ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6152 ;; flags: qr aa rd; QUERY: 1, ANSWER: 4, AUTHORITY: 5, ADDITIONAL: 0 ;; WARNING: recursion requested but not available ;; QUESTION SECTION: ;sugarcreekcctexas.com. IN MX ;; ANSWER SECTION: sugarcreekcctexas.com. 3600 IN MX 40 sugarcreekcctexas.com.s7b2.psmtp.com. sugarcreekcctexas.com. 3600 IN MX 10 sugarcreekcctexas.com.s7a1.psmtp.com. sugarcreekcctexas.com. 3600 IN MX 20 sugarcreekcctexas.com.s7a2.psmtp.com. sugarcreekcctexas.com. 3600 IN MX 30 sugarcreekcctexas.com.s7b1.psmtp.com. ;; AUTHORITY SECTION: sugarcreekcctexas.com. 86400 IN NS ns1.mydyndns.org. sugarcreekcctexas.com. 86400 IN NS ns4.mydyndns.org. sugarcreekcctexas.com. 86400 IN NS ns5.mydyndns.org. sugarcreekcctexas.com. 86400 IN NS ns3.mydyndns.org. sugarcreekcctexas.com. 86400 IN NS ns2.mydyndns.org. ;; Query time: 79 msec ;; SERVER: 188.8.131.52#53(184.108.40.206) ;; WHEN: Wed Mar 10 10:57:47 2010 ;; MSG SIZE rcvd: 319
The NSLOOKUP.exe I am using on my machine -- the one that returns weird results -- is the version that comes stock with Vista. I have ALSO tried nslookup on a stock Windows Server 2003 Enterprise server and that one also produced the weird results.
I'm quite concerned for the following reasons:
I realize that NSLOOKUP is strictly a diagnostic tool, but will Windows servers somehow query for MX records in the Windows NSLOOKUP way? And if so, will that prevent, say, an Exchange server from getting proper MX records for my domain?
I use NSLOOKUP an awful lot for this kind of activity. While I am eager to trust in the inherent goodness of BIND and DNS, having my standard tool return these results is scary.
I am forced to conclude that there's something inherently different about the Windows version of NSLOOKUP -or- I've never used it right for these types of queries.
Can anyone shed some light? Before I make the nameserver switch, I need to understand why this is happening. At the end, I may still have to bring up another server and run DNS on my own, a prospect that seems even more perilous.
EDIT: The option "set nosearch" in Windows' version of NSLOOKUP seems to make DYNDNS' nameservers return what I expect. So.... why?