Domain-Name-System

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

  • March 10, 2010

我寫了一些關於臨時執行我自己的 DNS 伺服器的文章,以幫助促進兩個註冊商之間的域名移動,而不會停機。此後,我從 DYNDNS 購買了 CustomDNS 包,並為我的域 Sugarcreekcctexas.com(目前位於 GoDaddy)填充了 DNS 記錄。我的目標是將 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 在發送查詢時都會顯示正確的答案。

我安裝了 BIND 工具的 Windows 版本,從他們的網站獲得。這些工具包括 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
.
>

這裡是挖

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 的名稱伺服器返回我所期望的。所以為什麼?

也許 nslookup 附加了預設的 DNS 後綴?嘗試要求

sugarcreekcctexas.com.

代替

sugarcreekcctexas.com

可能是windows nslookup 版本使用了windows DNS 記憶體,同時綁定了nslookup 和dig 繞過記憶體。這只是一個猜測。嘗試清除 DNS 記憶體並重新檢查您的發現。記憶體通常通過發出來清除

ipconfig /flushdns

但我不確定這是否也適用於 Vista。

如果我們執行從一個註冊商到另一個註冊商的遷移,我們通常可以在遷移之前設置目標名稱伺服器,這樣我們就不會遇到任何停機時間。它是這樣工作的:

  • 尋找新的註冊商
  • 告訴他們你想把域 xyz 放在那裡
  • 在那裡預設名稱伺服器條目
  • 發出轉賬

在傳輸未決期間,兩個名稱伺服器都為域記錄提供服務,而您的舊註冊商通常會在一段時間內繼續為您的域記錄提供服務,以確保使用記憶體(現已過時)的名稱伺服器的客戶端能夠解析。

引用自:https://serverfault.com/questions/121203