DYNDNS.org 自定義 DNS 使用 Windows 的 NSLOOKUP 返回奇怪的結果
我寫了一些關於臨時執行我自己的 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,並且該伺服器也產生了奇怪的結果。
我很擔心,原因如下:
- 我意識到 NSLOOKUP 嚴格來說是一種診斷工具,但是 Windows 伺服器會以某種方式以 Windows NSLOOKUP 方式查詢 MX 記錄嗎?如果是這樣,這是否會阻止 Exchange 伺服器為我的域獲取正確的 MX 記錄?
- 對於這種活動,我經常使用 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 放在那裡
- 在那裡預設名稱伺服器條目
- 發出轉賬
在傳輸未決期間,兩個名稱伺服器都為域記錄提供服務,而您的舊註冊商通常會在一段時間內繼續為您的域記錄提供服務,以確保使用記憶體(現已過時)的名稱伺服器的客戶端能夠解析。