![DYNDNS.org 自定义 DNS 使用 Windows 的 NSLOOKUP 返回奇怪的结果](https://linux22.com/image/508121/DYNDNS.org%20%E8%87%AA%E5%AE%9A%E4%B9%89%20DNS%20%E4%BD%BF%E7%94%A8%20Windows%20%E7%9A%84%20NSLOOKUP%20%E8%BF%94%E5%9B%9E%E5%A5%87%E6%80%AA%E7%9A%84%E7%BB%93%E6%9E%9C.png)
前段时间,我曾写过一篇文章,介绍如何临时运行自己的 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,结果也很奇怪。
我非常担心,原因如下:
我知道 NSLOOKUP 严格来说是一种诊断工具,但 Windows 服务器是否会以 Windows NSLOOKUP 方式查询 MX 记录?如果是这样,那么这是否会阻止 Exchange 服务器获取我的域的正确 MX 记录?
我经常使用 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 放在那里
- 在那里预设名称服务器条目
- 发行转让
在转移待处理期间,两个名称服务器都会提供域名记录,并且您的旧注册商通常会继续为您的域名提供一段时间的记录,以确保使用缓存(现已过时)名称服务器的客户端能够解析。