DYNDNS.org 自定义 DNS 使用 Windows 的 NSLOOKUP 返回奇怪的结果

DYNDNS.org 自定义 DNS 使用 Windows 的 NSLOOKUP 返回奇怪的结果

前段时间,我曾写过一篇文章,介绍如何临时运行自己的 DNS 服务器,以便顺利地在两个注册商之间转移域名,且不造成停机。此后,我从 DYNDNS 购买了 CustomDNS 包,并填写了我的域名 sugarcreekcctexas.com 的 DNS 记录,该域名目前在 GoDaddy。我的目标是将 GoDaddy 的名称服务器更改为指向 DYNDNS 的名称服务器,以便它们可以在注册商转移期间处理 DNS 请求。

但是,尽管我已经预先激活了 DYNDNS 服务以进行测试,但当我从 DYNDNS 的名称服务器请求记录时,Windows 版本的 NSLOOKUP 会得到奇怪的结果。我想知道为什么。请注意:“A”记录似乎工作正常。但是,我正在测试域的 MX 记录查找,因为我从未从 DYNDNS 获得正确的结果。

以下是 Windows 中 NSLOOKUP 的输出:

Default Server:  vnsc-bak.sys.gtei.net ; initial DNS set in ROUTER
Address:  4.2.2.2

> server 204.13.248.76                 ; changing to ns1.mydyndns.org
Default Server:  ns1.mydyndns.org
Address:  204.13.248.76

> set type=MX                          ; makes NSLOOKUP query for MX records
> sugarcreekcctexas.com                ; asking for the domain's MX records
Server:  ns1.mydyndns.org
Address:  204.13.248.76

(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
>

我不明白这一点。因此,我去了 DYNDNS 的论坛并向他们询问了这个问题。他们非常乐于助人。主要答案是 DIG 和 NSLOOKUP 在发送查询时都会显示正确的答案。

我安装了 Windows 版本的 BIND 工具,来自他们的网站。这些工具包括 DIG 和 NSLOOKUP,至少是 BIND 支持的版本。这些工具的输出非常不同:

C:\Windows\System32\dns\bin>nslookup
> server 204.13.248.76
Default server: 204.13.248.76
Address: 204.13.248.76#53
> set type=MX
> sugarcreekcctexas.com
Server:         204.13.248.76
Address:        204.13.248.76#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
.
>

以下是 DIG 的报道

C:\Windows\System32\dns\bin>dig @204.13.248.76 sugarcreekcctexas.com MX

; <<>> DiG 9.7.0 <<>> @204.13.248.76 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: 204.13.248.76#53(204.13.248.76)
;; WHEN: Wed Mar 10 10:57:47 2010
;; MSG SIZE  rcvd: 319

我机器上使用的 NSLOOKUP.exe(返回奇怪结果的程序)是 Vista 的标配版本。我还在标配的 Windows Server 2003 Enterprise 服务器上尝试过 nslookup,结果也很奇怪。

我非常担心,原因如下:

  1. 我知道 NSLOOKUP 严格来说是一种诊断工具,但 Windows 服务器是否会以 Windows NSLOOKUP 方式查询 MX 记录?如果是这样,那么这是否会阻止 Exchange 服务器获取我的域的正确 MX 记录?

  2. 我经常使用 NSLOOKUP 进行此类活动。虽然我非常愿意相信 BIND 和 DNS 的固有优点,但我的标准工具返回这些结果却令人恐惧。

我不得不得出结论:Windows 版本的 NSLOOKUP 本质上存在一些不同 - 或者 - 我从来没有正确地将它用于这些类型的查询。

有人能解释一下吗?在切换名称服务器之前,我需要了解为什么会发生这种情况。最后,我可能仍然需要启动另一台服务器并自行运行 DNS,这种前景似乎更加危险。

谢谢!

编辑:Windows 版 NSLOOKUP 中的“set nosearch”选项似乎使 DYNDNS 的名称服务器返回我期望的结果。那么……为什么呢?

答案1

也许 nslookup 附加了默认 DNS 后缀?尝试询问

sugarcreekcctexas.com.

代替

sugarcreekcctexas.com

答案2

可能是 Windows nslookup 版本使用 Windows DNS 缓存,而 binds nslookup 和 dig 绕过缓存。这只是猜测。尝试清除 DNS 缓存并重新检查您的发现。通常通过发出以下命令来清除缓存

ipconfig /flushdns

但我不确定这是否也适用于 Vista。

如果我们从一个注册商移动到另一个注册商,我们通常可以在移动之前设置目标名称服务器,这样我们就不会遇到任何停机时间。它的工作原理如下:

  • 寻找新的注册商
  • 告诉他们你想把域名 xyz 放在那里
  • 在那里预设名称服务器条目
  • 发行转让

在转移待处理期间,两个名称服务器都会提供域名记录,并且您的旧注册商通常会继续为您的域名提供一段时间的记录,以确保使用缓存(现已过时)名称服务器的客户端能够解析。

相关内容