題 當'nslookup'工作正常時,為什麼'ping'無法解析名稱?


在我的Windows XP工作站上,我可以在DNS中找到我想要連接的機器 nslookup

nslookup wolfman
Server: dns.company.com
Address: 192.168.1.38

Name: wolfman.company.com
Address: 192.168.1.178

但是,當我嘗試連接到該計算機時,我收到錯誤,告訴我無法找到該計算機(即無法在DNS中查找):

C:\> ping wolfman
Ping request could not find host wolfman. Please check the name and try again.

如果我直接使用IP地址,我可以連接:

C:\> ping 192.168.1.178

Pinging 192.168.1.178 with 32 bytes of data:

Reply from 192.168.1.178: bytes=32 time=41ms TTL=126
Reply from 192.168.1.178: bytes=32 time=41ms TTL=126
Reply from 192.168.1.178: bytes=32 time=44ms TTL=126
Reply from 192.168.1.178: bytes=32 time=38ms TTL=126

我可以通過添加一個條目來解決這個問題 hosts 文件,但我想知道為什麼會這樣。這個問題很短暫,大部分時間我都可以很好地連接到機器上。

這怎麼可能?

ETA:為了簡潔,我把它留了下來,但它被要求:

C:\> ping wolfman.company.com
Ping request could not find host wolfman.company.com. Please check the name and try again.

ETA:其他應用程序獲得相同的結果。我只試過ping來簡化。 telnet無法連接,Cygwin應用程序打印出“未知的主機狼人”消息。

更新:使用wireshark,我發現我的工作站沒有嘗試DNS查找。它只是報告“找不到主機”錯誤消息。


123
2017-10-29 19:11


起源


如果你發生了什麼 ping wolfman.company.com? - SLaks
你有wireshark安裝?您可以在嘗試解析主機時看到ping是否使用了其他內容。你有沒有試過telnet和ftp? - ott--
您可以為其添加默認DNS後綴 .company.com。 - billc.cn
@ billc.cn我已經有了這個DNS後綴。 - skiphoppy
可能重複: superuser.com/questions/220471/... - Der Hochstapler


答案:


我相信nslookup在DNS端口上打開winsock連接並發出查詢,而ping使用DNS客戶端服務。您可以嘗試停止此服務,看看這是否有所作為。

一些將重新初始化各種網絡狀態的命令:

將WINSOCK條目重置為安裝默認值: netsh winsock reset catalog
將TCP / IP堆棧重置為安裝默認值: netsh int ip reset reset.log
刷新DNS解析器緩存: ipconfig /flushdns
續訂DNS客戶端註冊並刷新DHCP租約: ipconfig /registerdns
刷新路由表: route /f  (需要重啟)


95
2017-11-20 08:40



我敢打賭Active Directory可能很活躍,但我不知道如何測試。 - skiphoppy
我禁用了DNS客戶端服務,問題似乎消失了!不確定是不是僥倖。當我重新啟動服務時問題沒有回來。 - skiphoppy
有時只是停止並重新啟動服務修復了DNS問題(不要問我為什麼)。問題是這將持續多久。一些不幸的人需要一次又一次地重複它。 - harrymc
sfc / scannow以防dns客戶端服務系統文件巧妙地損壞?我也看到一些患有病毒引起的類似問題的人。 - Jon Kloske
在這個答案中我缺少的是 ipconfig /registerdns (我在下面的答案中詳細說明) - Mick Halsband


嘗試ping主機名後跟一個點。而不是 ping wolfman 使用 ping wolfman.

這應該讓你解決,而無需與主機文件等做變通辦法。


26
2018-05-05 01:08



這是我的解決方案。 - IAmTheSquidward
哇,這對我也有用。我的猜測是某些東西需要一個未配置的域名 - user1190
好的,這個有用......為什麼? - Daniel B.
任何建議為什麼這是有效的,以及如何使用本地名稱而不留尾點? - Ruberoid
@Ruberoid請看 我的答案 如何自動完成此操作。 - Frederik Aalund


嘗試 ipconfig /displaydns 並尋找狼人。如果它被緩存為“名稱不存在”(可能是因為之前的間歇性查找失敗),您可以刷新緩存 ipconfig /flushdns

nslookup 不使用緩存,而是直接查詢DNS服務器。


16
2017-11-19 21:57



我試過了:它沒有被緩存。清除緩存也無法解決問題。 - skiphoppy
你能發布的輸出嗎? nslookup -all?是 novc 上市? - craig65535


嘗試添加 . 到該連接的DNS後綴。即,去:

  1. 以太網狀態
  2. 單擊屬性
  3. Internet協議版本4
  4. 單擊屬性
  5. 單擊高級
  6. 附加這些DNS足夠(按順序)
  7. . 作為後綴。

以下屏幕截圖中說明了相同的步驟:

這應該是 ping wolfman 工作。

說明

nslookup wolfman (名稱服務器查找:wolfman)發送主機名(wolfman)到DNS(域名系統)獲取相應的IP地址。這是唯一的目的 nslookup 命令。這已經有效,所以我們已經驗證了DNS的工作原理 wolfman 確實對應於IP地址。

相反, ping wolfman 需要做兩件事:

  1. 獲取主機名的IP(wolfman)對應。
  2. 將數據包發送到IP並偵聽響應

在Windows上(即使是最新版本,如Windows 10),第一步很容易失敗。為了向後兼容,Windows支持各種主機名解析方法(主機文件,DNS,NetBIOS / WINS,LMHO​​ST文件)。

不幸的是,似乎Windows' ping 命令並不總是嘗試DNS查找。我不知道觸發此行為的具體條件。

幸運的是,我們可以強制Windows使用a進行DNS查找 FQDN (完全合格的域名)。在實踐中,我們通過後綴a來做到這一點 . 點到主機名: wolfman.。嘗試 ping wolfman. 並驗證它是否有效。

最後一步是強制Windows自己附加此點。我已經在這個答案的開頭展示瞭如何做到這一點。


11
2017-10-09 11:51



這讓我大吃一驚! - djsmiley2k
只是想說這就是我正在研究的機器上成功的因素。看起來很愚蠢。不僅僅是針對ping,還針對其他應用程序。我不確定你對什麼做的解釋是對的(但你承認你不確定)。但是,通過嘗試使用手動添加點後綴的域名進行ping操作,可以輕鬆診斷出此故障是一個很大的優勢。 - gwideman


nslookup 在Windows上解析名稱/ IP地址時,與其他命令的工作方式不同。

Windows上的常規分辨率方法 如下:

  1. 客戶端檢查查詢的名稱是否為自己的名稱。
  2. 然後,客戶端搜索本地主機文件,存儲在本地計算機上的IP地址列表和名稱。
  3. 查詢域名系統(DNS)服務器。
  4. 如果仍未解析名稱,則使用NetBIOS名稱解析序列作為備份。可以通過配置客戶端的NetBIOS節點類型來更改此順序。

nslookup 另一方面用於 測試域名服務器。


10
2017-11-19 21:29



是否有任何設置可以將NetBIOS查詢更高地移動到該列表中?我有直覺感覺NetBIOS查找涉及某種方式,但由於DNS查詢肯定有效,我無法看到它如何進入該步驟,如果上面的序列是不可變的。 - skiphoppy


我一直在努力解決類似問題,並嘗試過@harrymc建議的解決方案。 我發現最終似乎(至少在某種程度上)在microsoft technet論壇上工作 (nslookup可以工作,但在獨立的Win7 PC上沒有其他DNS

這是引用:

...嘗試使用以下命令刷新並重置客戶端解析程序緩存以進行測試。

ipconfig / flushdns

ipconfig / registerdns

有關詳細信息,請參閱以下鏈接。    http://jefferyland.wordpress.com/2011/07/28/quick-review-of-flushdns-registerdns-and-dns-queries/

所以基本上缺少的是我 ipconfig /registerdns


8
2017-09-22 08:32



@harrymc的原始答案現在反映了失踪 /registerdns 命令 - Mick Halsband
我在Win10上玩這個問題已經玩了大約一年了。當我的筆記本電腦醒來時,它無法找到任何公司服務器,但像microsoft.com這樣的外部網站可以正常工作。這似乎發生在改變WiFi網絡(家庭/ VPN與辦公室)時。 flushdns有時會解決問題,但並非總能如此。今天我嘗試了registerdns,並立即糾正了問題。明天我會嘗試添加。到名稱的末尾(但是ping已經因內部服務器的FQDN而失敗)。這非常令人沮喪。最重要的是 - 如果我等待一段時間,問題就會自行解決。 - ripvlan


就在今天,我們有了 同樣的問題,但是 解決方案不同。所以我想,我會添加它作為參考,因為這是最重要的搜索結果。

  • 問題ping 不會解析主機名,但是 nslookup 能夠。 (在2個不同的Windows Server 2012 R2主機上觀察。)
  • 原因:(對於每個主機)主機連接了多個NIC,並且有 多個默認網關 配置。
  • :(對於每個主機)從所有NIC的配置中刪除默認網關,但是一個,所以有重新發送 只有一個默認網關

6
2018-04-28 08:41



啊這對我來說。完善。 - IAmTheSquidward
簡短而簡單 - Frank Fu