共用方式為


針對 DNS 動態更新問題進行疑難解答

本指南解決功能變數名稱系統 (DNS) 動態更新的常見問題,並提供相關的疑難解答步驟。 動態更新對於維護精確的 DNS 記錄至關重要,特別是在 IP 位址經常變更的環境中,例如動態主機設定通訊協定(DHCP)。 本指南涵蓋 DNS 用戶端、DHCP 伺服器和 DNS 伺服器的常見案例、建議和疑難解答秘訣。

一般原因

以下是動態更新失敗的一般原因:

  • DNS 用戶端不會傳送動態更新。
  • DHCP 應該更新記錄,但該功能無法如預期般運作。
  • DNS 伺服器不會因為許可權問題而更新記錄。

在進行疑難解答之前,建議您實作下列最佳做法。

Microsoft標準建議

用戶端 DNS 註冊

在許多環境中,DHCP 會代表用戶端更新 DNS 記錄。 鑒於這些天基礎結構的混合式本質,以及使用虛擬專用網 (VPN) 的員工連線到辦公室,通常有多個與一個端點相關聯的IP。 如果客戶端註冊其記錄,則可以避免這種情況。 因此,建議不要使用 DHCP 選項 81,而是讓用戶端註冊其記錄。

如需 DHCP 選項 81 運作方式的詳細資訊,請參閱下列兩篇文章:

將動態更新設定為「僅限安全」

網域區域上的動態更新應設定為 僅限安全。

如果執行動態註冊的用戶端計算機已加入網域(應該由網域的系統管理員或解決方案架構師驗證),請將網域區域設定為只允許具有 Secure 的動態更新,以確保動態註冊的行為一致。

啟用動態記錄的時間戳

根據預設,動態記錄不包含時間戳。 設定區域屬性時,您可以在區域屬性對話方塊的 [過時] 區段下啟用 [Scavenge 過時記錄] 選項。 啟用此選項之後,新註冊的記錄會包含時間戳。

如果您打算刪除過時的記錄,則需要時間戳。 如果沒有時間戳,DNS 記錄就無法與目前時間進行比較,而且不會被視為過時,即使它已動態註冊也一樣。

注意

如果您最近啟用指定的選項,在變更之前註冊的記錄將不會包含時間戳或清除。

AD 整合區域中 DNS 的復寫設定

區域過時屬性中的 [Scavenge 過時記錄] 選項可確保 Active Directory (AD) 物件能夠攜帶時間戳。 不過,實際清除過時的記錄會發生在 DNS 伺服器層級,影響啟用此設定的所有區域。 如需清除的詳細說明,請參閱 DNS 清除設定

清除迴圈是 DNS 進程的低優先順序線程,因此可能不一定一致地執行。 若要最大化執行的機會,請在AD整合區域環境中在域控制器 (DC) DNS 伺服器上設定清除沒有重要角色,例如彈性單一主機作業 (FSMO) 角色,特別是避免主要域控制器 (PDC) 模擬器。 在理想情況下,應該在DC上設定清除,而不需要任何FSMO角色。 如果無法進行此設定,請避免在 PDC 模擬器上進行設定。

維護標準 DNS 區域許可權

標準 DNS 區域許可權應該保持不變。

在AD整合區域設定中,許可權會遵循與New Technology File System (NTFS) 或文件系統類似的標準階層。 這表示,如果帳戶具有建立、刪除或修改區域及其子對象的許可權,則可以執行這些作業。 根據預設,只有企業系統管理員(全樹系)和網域管理員(全網域)具有這些許可權。

啟用 [僅安全動態更新] 時,如果帳戶是該記錄的擁有者,則已驗證的帳戶(例如加入網域的計算機)可以更新、刪除或修改 DNS 記錄。 這可確保只有記錄的原始建立者可以修改或刪除它,這是只保護動態更新的預期行為。

不過,當 DHCP 伺服器代表用戶端使用完整功能變數名稱 (FQDN) DHCP 選項 (選項 81) 更新 DNS 記錄時,可能會發生挑戰。 在這種情況下,可能會發生不一致的情況,因為 DHCP 伺服器更新的 DNS 記錄無法由原始用戶端修改,反之亦然。

如先前所述,我們建議用戶端計算機更新自己的 DNS 記錄,而不是依賴 DHCP 伺服器。 這是因為有數個原因,而且Microsoft也實作設計變更來強制執行此行為。 這項變更可防止 DHCP 伺服器更新用戶端的 A 和 PTR 記錄。 若要覆寫此行為,請參閱如果 DHCP 伺服器使用「永遠動態更新 DNS 記錄」,請參閱非預期的 DNS 記錄註冊行為。

在理想情況下,客戶端應該更新自己的 DNS 記錄。 不過,如果 DHCP 伺服器先前已更新記錄,實際客戶端將無法修改它。 為了解決這個問題,有些企業會強制 DHCP 伺服器繼續更新客戶端的記錄,這強烈建議您不要這樣做。

建議的方法是允許 DHCP 伺服器或清除程式移除記錄。 拿掉之後,用戶端就可以更新它們。

將 DHCP 伺服器與 ADDS 區隔

DHCP 伺服器應該裝載於不同的伺服器上,而不是裝載在執行 Active Directory 網域服務的 DC 上(ADDS)。

在安全的更新設定中,DHCP 伺服器會使用其電腦的網域帳戶來註冊 DNS 記錄。 當 DHCP 伺服器在 DC 上執行時,它會使用 DC 的帳戶來註冊記錄。 這表示如果已啟用 FQDN 選項,且未使用專用服務帳戶設定 DHCP 伺服器,則可以由 DHCP 伺服器覆寫靜態記錄。 這可能會導致非預期清除靜態記錄之類的問題。

若要避免這類問題,DHCP 伺服器應該使用服務帳戶進行設定,並在不同的伺服器上執行。 如需詳細資訊,請參閱 如何在 Windows 中設定 DNS 動態更新。

針對一般和已知問題進行疑難解答

用戶端問題

  • 找不到授權單位 (SOA) 的開頭。
  • 用戶端不會傳送動態更新。 如需詳細資訊,請參閱 如何在 Windows 中啟用或停用 DNS 更新。
  • 客戶端無法從 DC 取得驗證票證交易簽章(TSIG)。

DHCP 伺服器問題

  • DHCP 伺服器不會代表用戶端傳送動態更新。
  • DHCP DNS 更新佇列長度。 如需詳細資訊,請參閱 DNS 註冊的 DHCP 動態更新延遲或未處理
  • DHCP 嘗試更新客戶端記錄時發生衝突,因為它已經向用戶端的電腦帳戶註冊。 如需詳細資訊,請參閱如果 DHCP 伺服器使用「永遠動態更新 DNS 記錄」,則為非預期的 DNS 記錄註冊行為。

DNS 伺服器問題

  • DNS 區域的許可權問題。
  • DNS 區域層級已驗證帳戶設定中的變更。
  • DHCP 針對動態更新的服務帳戶設定。

針對 DNS 動態更新問題進行疑難解答

注意

此多部分區段討論從 Windows 用戶端到伺服器的各種層面,這些層面應該在發生這類問題時加以檢查。

您必須從基本檢查開始,例如判斷問題是否會影響相同子網上的多個用戶端、相同子網上的用戶端或特定用戶端。 這有助於縮小問題是否在於客戶端、伺服器或網路。 如需如何觸發 DNS 動態更新的說明,包括範例,請參閱 如何在 Windows 中設定 DNS 動態更新。

瞭解 DNS 動態更新之後,您可以使用下列檢查清單來確保客戶端的動態更新設定已就緒。

DNS 用戶端檢查清單

檢查是否已 選取 [在 DNS 中註冊此聯機的位址]:

#Get the list of interfaces that are up and connected.
$Adapters = Get-NetAdapter | Where-Object Status -eq Up

#If there's only one interface, the following command will work.
Get-DnsClient -InterfaceIndex $Adapters.ifIndex

#If more than one interface is active and up, you can use "Get-DNSClient" to see the registration status of all interfaces.

在輸出中, RegisterThisConnectionsAddress 應該是 True。 如果值為 False,請將值變更為 True

#Get the list of interfaces that are up and connected.
$Adapters = Get-NetAdapter | Where-Object Status -eq Up

#If there's only one interface, the following command will work.
Set-DnsClient -RegisterThisConnectionsAddress $True -InterfaceIndex $Adapters.ifIndex

取得 Get-DnsClient 輸出以確認 值,並確定 RegisterThisConnectionsAddress 已設定為 True

有一個組策略可以修改此行為。 根據預設,網路介面會設定為註冊其連線。 不過,企業可以使用 動態更新 組策略設定來控制用戶端傳送 DNS 動態更新的方式。 組策略位於:

計算機設定>系統管理範本>網路>DNS用戶端>動態更新

DNS 伺服器端檢查清單

確定區域可寫入

動態註冊客戶端的網域必須是可寫入的複製區域。 這表示區域應該包含裝載它的 DNS 伺服器的 SOA 記錄,而且客戶端必須能夠透過網路連線到此伺服器。

通常有兩種類型的設定:

  1. 指向僅限快取 DNS 伺服器的用戶端:此 DNS 伺服器不會裝載任何網域區域,但會使用條件式轉寄站或轉寄站來指向保存區域(可寫入或可讀取)的實際 DNS 伺服器。
  2. 簡單設定:用戶端會直接指向裝載網域區域的 DNS 伺服器。

選項一通常會選擇用於負載平衡,以及具有許多用戶端的較大型環境。 其概念是將名稱解析的負載從可用的 DC 轉移到額外的伺服器。 不過,在此設定中,客戶端必須具有 DNS 通訊協定的連線能力,才能連線到裝載網域區域 SOA 記錄的伺服器。 否則,動態更新將會失敗。

允許動態更新

裝載於Microsoft DNS 伺服器上的 AD 整合 DNS 區域有三個選項可供動態更新:

  • None
  • 不安全且安全
  • 僅限安全

注意

最後一個選項僅適用於AD整合式 DNS 區域。

若要允許動態更新,區域應設定為 [不安全且安全] 或 [僅限安全] 更新類型。 僅限 AD 整合區域使用安全。

檢查 DNS 稽核

DNS 伺服器記錄會在 DNS 記錄和診斷討論。 具體來說,它旨在確認您關心的記錄是否已註冊,並可透過 DNS 稽核事件、事件標識碼 519 進行追蹤。 您可以使用指定的識別碼來篩選預設啟用的 DNS 稽核事件,並確認記錄是否已成功註冊。

注意

Audit 事件記錄檔是指定 DNS 伺服器的本機,這表示指定的標識碼只會顯示在註冊記錄的 DNS 伺服器上。

案例:DHCP 伺服器無法代表用戶端完成動態更新,或註冊延遲

DHCP 伺服器已設定為更新 DHCP 用戶端的記錄。 設定是在如何在 Windows 中設定 DNS 動態更新中指定的。 Windows 用戶端也會設定為接受 DHCP 選項 81。 當 DHCP 伺服器管理動態 DNS 更新時,其設定為非預期的 DNS 記錄註冊行為中所述

注意

我們建議客戶端註冊其記錄,而不是 DHCP 或任何其他裝置。

所有設定都就緒后,DNS 記錄可能會以顯著的延遲註冊,或可能完全未註冊。 您可以藉由檢查位於 C:\Windows\System32\DHCP 每日稽核檔案中的 DHCP 伺服器稽核記錄來確認這一點。

重要

DNS 註冊的 DHCP 動態更新會 延遲或未處理類似的問題。

原因

發生此問題的原因有很多,但常見的原因是 DHCP 伺服器的 DNS 動態更新佇列已滿,這表示無法處理新的要求。 此問題通常會因為下列兩個主要原因而發生:

  1. DNS 伺服器(在 DHCP 範圍中設定)不會傳回 SOA 回應,因為 SOA 查詢適用於 DNS 伺服器上未設定的反向對應區域。
  2. SOA 伺服器上不允許SOA回應或動態更新。 如需詳細資訊,請參閱 DNS 註冊的 DHCP 動態更新延遲或未處理

解決方案:在 DNS 伺服器上建立反向對應區域

方法 1

請檢查並諮詢您的網路小組和 DHCP 設定,以取得網路中所有範圍/子網的清單。 為每個這類子網建立反向對應。 此方法適用於 IPv4 和 IPv6 反向對應區域。

方法 2

若要避免任何遺漏,請建立具有私人IP根範圍的區域。 例如:

  • 168.192.in-addr.arpa
  • 16.172.in-addr.arpa
  • 10.in-addr.arpa

這涵蓋環境中 IPv4 位址的所有子網範圍。 如果您已建立一些反向對應區域,它們會自動成為這些區域中的委派。

說明

設定 DHCP 選項 81 時,DHCP 伺服器會檢查用戶端傳回的 FQDN,並從範圍中設定的 DNS 伺服器要求其 SOA。 如果未傳回 SOA,要求會排入佇列以重試。 當缺少反向對應區域時,佇列通常會填滿,因為每個租用都會有要求,但沒有區域可註冊 PTR 記錄。 同樣地,針對正向查閱,如果在SOA伺服器上停用動態更新,或無法連線到SOA伺服器,佇列也會填滿。