
對於實驗室設備,我在任何地方都使用預設設置,他們使用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。印表機往往會講這三種甚至更多。
如何對基於組播的協定進行故障排除:
- 安裝一個抓包工具。
- 將其指向您的 LAN 介面。
- 嘗試解析名稱,查看您的電腦是否產生預期的 LLMNR 或 mDNS 查詢資料包,以及其他裝置是否有任何回應。
- 重新啟動其他裝置(或只是將其重新連接到網路),然後查看該裝置是否宣布自己的名稱登記數據包。
注意nslookup
是不是通用名稱查找工具。這是嚴格地單播 DNS 用戶端,對 mDNS/LLMNR/NBNS 沒有任何幫助。