共用方式為


如果 DHCP 伺服器使用「一律動態更新 DNS 記錄」,則發生非預期的 DNS 記錄註冊行為

適用於: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 伺服器也會儲存一組控管動態 DNS 更新行為的選項 81 旗標。 DHCP DORA (探索/供應專案/要求/認可) 程式的一部分牽涉到用戶端和伺服器之間比較選項 81 旗標的值,以判斷誰負責 DNS 更新。 徵兆 一節中 所述的行為所涉及的旗標會命名為 O (覆寫) 和 S (伺服器) 位。 flags 的運作方式如下:

  • 如果 是 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 伺服器的 Option 81 OS 值。 如果客戶端設定為更新 A 記錄,即使伺服器也設定為更新 A 記錄,它仍會繼續執行此動作。 當您在 DHCP 管理控制台中選取 [ 永遠動態更新 DNS 記錄 ] 時,就會發生這種情況。

如果您針對 僅限安全 動態更新設定 DNS 區域,則只有 (DHCP 用戶端、DHCP 伺服器或 DHCP 服務設定為使用) 建立 DNS 記錄的實體才能更新或刪除該記錄。 如果 DHCP 用戶端而不是 DHCP 伺服器建立 DNS 記錄,DHCP 伺服器稍後就無法修改該記錄。

注意事項

Microsoft 的 DHCP 用戶端不提供直接在使用者介面中設定用戶端 OS 值的方法。 根據預設,這兩個值都是 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 中備份及還原登錄

  1. 瀏覽至下列子機碼: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters

  2. 在 子機碼下,建立下列專案:

    • 名稱: RegistrationOverwrite
    • 類型: REG_DWORD
    • 值: 2

    注意事項

    RegistrationOverwrite 具有下列可能的值:

    • 0 - 無覆寫。
    • 1 - DNS 用戶端建立的記錄會覆寫 DHCP 伺服器所建立的記錄。 這是預設值。
    • 2 - DHCP 伺服器建立的記錄會覆寫 DNS 用戶端建立) 記錄。
  3. 重新啟動客戶端電腦。

  4. 在 DNS 伺服器管理控制台中,檢查正向和反向對應區域。 根據您的特定環境,您可能必須手動刪除 DHCP 伺服器沒有刪除或變更許可權的 A 和 PTR 記錄。