2017-03-28

Windows Name Resolution

名稱解析 (name resolution) 雖然是存在已久的機制,但有時候還是會遇到一些因為實作差異而導致行為不同的地方。一般在 Windows 下常用的解析工具大概有 nslookup 跟 ping,撇除 single-label server name (a.k.a. Windows host name) 隸屬於 NetBIOS/WINS 的管轄範圍,當使用這兩個工具作一般網域名稱解析,需要注意的有:

  • Windows 內建 DNS Client 服務 (service name: Dnscache),會讀取系統網路介面 (network interface) 的 DNS 設定,負責 DNS cache。
  • 當變更時網路介面 DNS 設定,DNS Client 並不見得會立即套用新設定,cache 資料也可能不會 flush。
  • ping 解析時會先向 DNS Client 查詢,因此單獨變更 DNS 設定可能導致 ping 仍然讀取到舊資料;nslookup 不透過 DNS Client 因此會直接套用最新設定查詢。
  • 可以透過系統管理介面,重新啟動 DNS Client 服務,達到套用新設定與 flush cache 的目的;單獨 flush DNS cache 可使用指令 ipconfig /flushdns
  • 當 DNS Client 無該筆資料時,DNS Client 會根據 DNS 設定向外查詢,並將結果寫回 cache;nslookup 則無 cache 機制。
  • 在 nslookup shell 中變更 default server 只會暫時有效,並不會寫回系統。
  • 重啟網路介面時,亦會會重啟 DNS Client。
  • %Systemroot%\System32\Drivers\Etc\hosts 檔案為 DNS Client cache 預載內容。
see also: ping vs. nslookup

沒有留言: