使用 Windows 和 APIPA 偵錯名稱解析

使用 Windows 和 APIPA 偵錯名稱解析

對於實驗室設備,我在任何地方都使用預設設置,他們使用IP自動配置(我認為 APIPA 又名 Zeroconf);我已將它們放在私人交換器上。

我總是能夠透過他們的主機名稱來尋址他們,我認為這可以透過 mDNS 來實現。

現在,我用相同的設備更換了一台設備,然後突然停止工作:

C:\>ping FSW26-101414
Ping request could not find host FSW26-101414. Please check the name and try aga
in.

儀器肯定已啟動,主機名稱也絕對正確:

C:\>ping 169.254.27.85

Pinging 169.254.27.85 with 32 bytes of data:
Reply from 169.254.27.85: bytes=32 time<1ms TTL=128
Reply from 169.254.27.85: bytes=32 time<1ms TTL=128
Reply from 169.254.27.85: bytes=32 time<1ms TTL=128
Reply from 169.254.27.85: bytes=32 time<1ms TTL=128

Ping statistics for 169.254.27.85:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms

原因可能是什麼?問題出在「主機」還是「客戶端」?我該如何調試這個?

答案1

本機名稱解析可以使用多種協定。按客戶端作業系統分組:

  • Windows 10(不確定哪個版本,但大約10.1803或更高版本)支援蘋果組播DNS協定(UDP 多播到連接埠 5353)。名稱查詢被傳送到多播群組 224.0.0.251 和 FF02::FB。這不依賴 IP 配置(儘管它是 Zeroconf 套件的一部分,但它不使用也不暗示 APIPA,反之亦然)。它出現只要 LLMNR 處於活動狀態,就會處於作用中狀態。

    (如果您安裝了 iTunes,無論 Windows 版本如何,它都會安裝自己的 mDNS 用戶端 - Apple Bonjour - 作為 Winsock LSP。Bonjour 只解析帶有後綴的名稱.local,而內置客戶端接受單標籤無 TLD 名稱作為出色地。

  • Windows Vista 和 Server 2008 及更高版本支持LLMNR協定(UDP 多播到連接埠 5355)。名稱查詢被傳送到多播群組 224.0.0.252 和 FF02::1:3。這不依賴 IP 配置;只要網路發現處於活動狀態,它就處於活動狀態。

  • 所有 Windows 版本都支援NetBIOS 名稱服務協定(UDP/IPv4 廣播到連接埠 137,以及一些複雜的「主瀏覽器」選)。據我了解,名稱查詢是廣播的。這不依賴 IP 配置,但確實需要安裝並啟用 SMBv1。

我不知道你使用什麼“實驗室設備”,但這些協議中的任何一個可能非 Windows 裝置支援。 (例如,在 Linux 上,mDNS 由 Avahi 或 mDNSResponder 實作;LLMNR 由 systemd-resolved 或 xllmnrd 實作;NBNS 由 Samba nmbd 實作。)許多裝置都使用 mDNS。印表機往往會講這三種甚至更多。

如何對基於組播的協定進行故障排除:

  1. 安裝一個抓包工具
  2. 將其指向您的 LAN 介面。
  3. 嘗試解析名稱,查看您的電腦是否產生預期的 LLMNR 或 mDNS 查詢資料包,以及其他裝置是否有任何回應。
  4. 重新啟動其他裝置(或只是將其重新連接到網路),然後查看該裝置是否宣布自己的名稱登記數據包。

注意nslookup不是通用名稱查找工具。這是嚴格地單播 DNS 用戶端,對 mDNS/LLMNR/NBNS 沒有任何幫助。

相關內容