我有一個 Windows 7 Pro 機器,有一個關於 DNS 伺服器使用的奇怪問題。
該盒子從我本地網路上基於 Linux 的 DHCP 伺服器分配了一個 IP 位址和 2 個 DNS 伺服器。 2 個 DNS 伺服器是我的本機 DNS 伺服器(用於私人主機),以及我的 ISP 的 DNS 伺服器,以便在我的內部 DNS 發生故障時提供冗餘。
儘管 Win7 上的 IPCONFIG 顯示 DNS 位址已正確發布,但解析並未按我的預期運作。當嘗試透過主機名稱從內部網路伺服器啟動頁面時,Win7 瀏覽器(Chrome、IE)表示無法解析該位址。 netmon 追蹤顯示 Windows 實際上將 DNS 請求直接轉送到ISP 的DNS 和絕不到我的網路的本機 DNS 伺服器。它應該總是首先嘗試本地 DNS 伺服器。奇怪的是,當使用 nslookup 時,解析按預期工作(本地優先)。
我假設(也許是錯誤的)由 DHCP 發布的 DNS 伺服器將按順序使用,這意味著本地 DNS 將始終是首選伺服器。這不正確嗎?
在研究這個問題時,我讀到了一些與此非常相似的問題,這些問題通常與解決以下問題的解決方案有關:手動的配置 DNS 伺服器的使用順序,在我看來,這削弱了 DHCP 的便利性。
Windows 7 中是否有 IP/登錄設定會強制其依照 DHCP 指定的順序使用 DNS 伺服器?
提前謝謝了。
答案1
基本設定
如果我沒記錯的話,DNS 條目被視為平等。如果 Windows 無法連接到其中一個,則會使用另一個。因此,來自一個 dns 的「找不到主機」回覆不會使 Windows 詢問另一個 dns。此回覆表示連線成功。 DNS 查找在此時停止。
根據您的情況,dns 和 dhcp 應設定如下:
- DHCP 僅分配內部 DNS
- 內部 DNS 將解析內部位址和網際網路位址。
預設情況下,BIND9 應先基於本機區域檔案進行解析,然後查詢頂級網域(如果盒子能夠存取網際網路)。您可以透過執行以下操作從 Windows 盒子進行測試
nslookup
> server <IP of your internal dns box>
> <internal hostname>
> google.com
Bind 應該能夠解析內部主機名稱和 google.com。
如果您想使用您的 ISP dns,請將其放入轉發部分。它應該在/etc/bind/named.option
.
雙/備份 DNS
當手動或透過 dhcp 提供多個 dns 伺服器時,客戶端電腦會平等對待它們。沒有「主要」或「次要」之分。這對於windows和linux都是一樣的。
為了提供冗餘,「簡單」的方法是設定 2 個內部 dns,其中一個可以為主,另一個可以為從。這樣就只需要更新一個。 DHCP 將提供這 2 個 dns 伺服器的 IP 供內部使用。
關於外部dns冗餘,將多個外部dns放在內部dns伺服器的轉送部分。
PS:綜上所述,我假設您確實需要內部計算機/伺服器的 dns 查找。如果沒有,事情可以簡單得多。