為什麼在 Windows 中新增私有和公用 DNS 伺服器會導致意外行為?

為什麼在 Windows 中新增私有和公用 DNS 伺服器會導致意外行為?

我在 Windows 的網路設定下配置了兩個 DNS 伺服器:

  • Preferred DNS server:我的 DNS 伺服器
  • Alternate DNS server:ISP 提供的公共 DNS

當我開啟一個應該使用我的私人 DNS 伺服器解析的 Intranet 網站時,我的瀏覽器會開啟一個公共 Internet 網站。當我刪除備用 DNS 伺服器(公共 DNS)時,它會開啟 Intranet 網站。

根據我的理解,一旦私有 DNS 解析了 IP,它就不應該嘗試使用公共 DNS 進行解析。當我檢查命令提示字元時,它僅解析為 Intranet,但在瀏覽器中則不一樣。

為什麼會發生這種情況以及如何解決它?

答案1

1)事實並非如此。

我吸取了 Windows 的慘痛教訓不是按順序使用此 DNS 伺服器清單。你不能假設當它無法解析名稱時,它將簡單地沿著列表走下去。

TechNet上有很長的解釋,你可以找到這裡。我個人遇到的問題是這裡的這個小片段引起的:

DNS 用戶端服務會追蹤哪些伺服器回應名稱查詢的速度較快,並根據伺服器回應名稱查詢的速度在清單中上下移動伺服器。

我們的 DHCP 設定中列出了五個 DNS 伺服器,最後兩個是本地 ISP 的。我們的另外三台都是非常舊的機器,我們認為最好是添加本地 ISP 的伺服器作為備份。猜猜誰比較快?

當伺服器停止解析內部名稱時,這並不有趣。

這促使我威脅切換到Linux。

2)那麼為什麼它在命令提示字元下起作用呢?

我假設你用過nslookup,這會總是除非您另外指定,否則使用 DNS 清單中的第一個伺服器。由於您總是檢查您的私人 DNS 伺服器,因此它始終有效。一旦您開啟 Internet Explorer 並開始實際嘗試解析名稱,行為就會有所不同(如上面的冗長流程圖所示)。

這不是非常令人困惑嗎?我花了一個星期的時間來解決名稱解析問題,想知道為什麼它總是可以使用nslookup,但由於某種原因 Lotus Notes 永遠找不到它的郵件伺服器。直到使用 Wireshark 檢查它是如何真正解析名稱時才弄清楚。

3)我該如何修復它?

您可以透過使用轉發器設定 DNS 伺服器來解決您的特定問題。當您的私有 DNS 伺服器找不到名稱時,它會將請求轉送到您指定的伺服器。這樣,您只需使用 DNS 伺服器即可,無需使用其他任何東西,從而防止奇怪的行為。

答案2

您想要做的不是設定兩個 DNS 伺服器,而是只使用您的私人 DNS,然後讓該 DNS 伺服器使用外部 DNS 檢查它不知道的結果。確切的配置方法將取決於您的專用 DNS 伺服器,但這應該會提供更統一的結果,因為當您的備用 DNS 伺服器認為主 DNS 伺服器繁忙時,可能會使用它。

相關內容