適用於: Windows 11、Windows 10、Windows 8.1
徵兆
您有一個基礎結構,其使用 Windows 動態主機設定通訊協定 (DHCP) 用戶端和Microsoft DHCP 伺服器來指派和管理 IP 位址。 在 DHCP 伺服器上,您可以根據下列設定選取 [啟用 DNS 動態更新],並一律動態更新 DNS 記錄。 在此設定中,您預期 DHCP 伺服器會管理 A 記錄和 PTR 記錄的動態 DNS 更新。 不過,您觀察到用戶端和伺服器都會建立 DNS 記錄。 根據您的組態,此行為具有下列效果:
- 如果您為不安全且安全的動態更新設定 DNS 區域,您會看到 DHCP 伺服器會建立記錄,然後 DHCP 用戶端會刪除並重新建立相同的記錄。
- 如果您設定僅限動態更新的 DNS 區域,DNS 記錄可能會變得不一致。 DHCP 伺服器和 DHCP 用戶端都會建立記錄。 不過,DHCP 伺服器無法更新 DHCP 用戶端所建立的記錄,而且 DHCP 用戶端無法更新 DHCP 伺服器所建立的記錄。
原因
為了取得IP位址,DHCP 用戶端會將 DHCP 要求訊息傳送至 DHCP 伺服器。 一般而言,此訊息包含用戶端的完整功能變數名稱 (FQDN) 和控管動態 DNS 更新行為的旗標。 這項資訊統稱為 選項 81 (也稱為 用戶端 FQDN 選項)。
注意
某些較舊的 DHCP 用戶端不會使用選項 81。 若要提供這些客戶端的動態更新,請將 DHCP 伺服器設定為針對不要求更新的 DHCP 用戶端啟用動態更新 DNS 記錄(例如,執行 Windows NT 4.0 的用戶端)。
DHCP 伺服器也會儲存一組選項 81 旗標,以控管動態 DNS 更新行為。 DHCP DORA(探索/供應專案/要求/通知)程式的一部分涉及用戶端與其選項 81 旗標值伺服器之間的比較,以判斷誰負責 DNS 更新。 [徵兆] 區段中所描述之行為的旗標會命名為 O (override) 和 S (server) 位。 旗標函式如下所示:
- 如果為 S = 0,用戶端會負責更新 A 記錄。
- 如果為 S = 1,伺服器會負責更新 A 記錄。
- 如果用戶端在其要求中傳送的 S 值與伺服器的 S 值不同,伺服器會將其 O 值設定為 1。
如 RFC 所述,DHCP 伺服器對要求訊息的回復應包含其旗標值。 如果 O 在伺服器的訊息中設定為 1 ,客戶端應該瞭解伺服器正在覆寫用戶端的 S 值。
在 Windows 8.1 中,已對 DHCP 用戶端的動態 DNS 更新行為引入刻意的設計變更。 這項變更支援更新版本的Microsoft操作系統中 TCP/IP(傳輸控制通訊協定/因特網通訊協定)堆疊的持續開發和增強功能。 在 Windows 8.1 和更新版本中,DHCP 用戶端不接受 DHCP 伺服器的選項 81 O 和 S 值。 如果客戶端設定為更新 A 記錄,即使伺服器也設定為更新 A 記錄,它仍會繼續執行此動作。 當您在 DHCP 管理控制台中選取 [永遠動態更新 DNS 記錄 ] 時,就是這樣。
如果您將 DNS 區域設定為 [僅 保護動態更新],則只有建立 DNS 記錄的實體(DHCP 用戶端、DHCP 伺服器或 DHCP 服務設定為使用的帳戶)可以更新或刪除該記錄。 如果 DHCP 用戶端而非 DHCP 伺服器建立 DNS 記錄,DHCP 伺服器之後就無法修改該記錄。
注意
Microsoft的 DHCP 用戶端不提供方法,直接在使用者介面中設定用戶端的 O 和 S 值。 根據預設,這兩個值都是 0。 您可以藉由記錄 DHCP 用戶端要求的 netsh 追蹤 ,以及使用 Netmon 之類的工具來檢視結果,以檢視這些值。
您可以使用 Windows PowerShell Cmdlet Get-DhcpServerv4OptionValue 來檢視 DHCP 伺服器的 Option 81 值。 不過,Cmdlet 會將此值報告為單一整數,將數個不同的設定合併為位值。 例如,如果您在 DHCP 範圍屬性視窗的 [DNS] 索引標籤上選取 [永遠動態更新 DNS 記錄],這會將 S 值設定為 1。 但是 Cmdlet 會報告選項 81 的八個可能值之一。 所有這些都使用 S=1。 特定值取決於 DNS 索引標籤上所做的設定組合。
如需 DHCP 用戶端、DHCP 伺服器和 DNS 伺服器之間動態更新運作方式的詳細資訊,請參閱 DNS 程式和互動
解決方法
如果您的架構要求您使用 Always 動態更新 DNS 記錄,您可以在用戶端電腦上建立登錄機碼,以強制 DHCP 用戶端接受 DHCP 伺服器覆寫。
重要
這個章節、方法或工作包含修改登錄的步驟。 然而,不當修改登錄可能會發生嚴重的問題。 因此,請務必小心執行下列步驟。 若要獲得保護,請在進行修改前先備份登錄,以便在出現問題時還原登錄。 如需備份和還原登錄的詳細資訊,請參閱如何在 Windows 中備份及還原登錄。
瀏覽至下列子機碼:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters
在子機碼下,建立下列專案:
- 名稱: RegistrationOverwrite
- 類型: REG_DWORD
- 值: 2
注意
RegistrationOverwrite 具有下列可能的值:
- 0 - 不覆寫。
- 1 - DNS 用戶端所建立的記錄會覆寫 DHCP 伺服器所建立的記錄。 這是預設值。
- 2 - DHCP 伺服器建立的記錄會覆寫 DNS 用戶端所建立的記錄。
重新啟動用戶端電腦。
在 DNS 伺服器管理控制台中,檢查正向和反向對應區域。 視您的特定環境而定,您可能需要手動刪除 DHCP 伺服器無權刪除或變更的 A 和 PTR 記錄。