網域控制站診斷工具 (dcdiag.exe)
DCDiag.exe 的作用是什麼?
此命令列工具會分析樹系中一個或所有網域控制站的狀態,並報告任何問題,以協助疑難排解。DCDiag.exe 由各種測試組成,這些測試可獨立執行或隨一組測試一起執行,以確認網域控制站的狀況。
工具要求
• | 除了以下指示的項目以外,DCDiag 中的所有命令都可在 Windows XP Professional 及 Windows Server 2003 系列產品 (成員伺服器及網域控制站) 上執行。 |
• | 從 Windows XP 或 Windows Server 2003 成員電腦或 Windows Server 2003 網域控制站的主控台執行時,新的 DCDIAG /TESTNS 命令可以確認 Windows 2000 Server (SP3 或更新版本) 或 Windows Server 2003 系列產品網域控制站的 DNS 狀況。 |
這個功能適用的對象
下列對象會對此功能有興趣:
• | DNS 系統管理員 |
• | 網域控制站系統管理員 |
• | DCDiag.exe 使用者 |
在 Windows Server 2003 Service Pack 1 中對此功能新增了什麼功能?
Windows Server 2003 Service Pack 1 中對 DCDiag 做了兩項重大改進:
• | DCDIAG /TESTNS 用於確認 DNS 狀況。 |
• | DCDIAG /CheckSecurityError 用於偵測導致 Active Directory 複寫失敗的安全性設定. |
這些新增強功能的詳細資料說明如下。
新的 DNS 診斷測試
詳細說明
Windows
Server 2003 Service Pack 1 中已對 DCDiag.exe 進行加強,使其包含用於報告網域控制站整體 DNS 狀況的新
DNS 功能。有七個可個別或同時執行的新 DNS 相關測試。這些測試可在 Active Directory
樹系內一個或所有網域控制站上執行。完成測試時,DCDiag.exe 會呈現結果摘要,以及每個測試之網域控制站的詳細資訊。
命令列語法
Windows Server 2003 SP1 dcdiag 使用的基本語法與舊版 dcdiag 相同。執行新 DNS 測試的語法如下:
Dcdiag
/testNS [/DnsBasic | /DnsForwarders | /DnsDelegation |
/DnsDynamicUpdate | /DnsRecordRegistration | /DnsResolveExtName
[/DnsInternetName:InternetName] | /DnsAll] [/f:Logfile] [/ferr:Logerr] /S:DCName[/e] [/v]
/testNS | 在指定範圍的一組網域控制站上執行所有七項子測試 (/DnsInternetName 測試除外)。最常見的 DCDIAG 命令列引數是 DCDIAG /TESTNS /V /S:DCNAME 及 DCDIAG /TESTNS /V /E,前者在單一網域控制站 (DC) 上執行六項預設 DNS 子測試,後者則在主控台電腦測試樹系內的所有 DC 上執行這六項預設 DNS 子測試。未定義個別子測試時,DCDIAG /TESTNS 命令與 /DnsAll 命令相同。 |
/testNS [DNS test] | 執行所指定的 DNS 測試。如果未指定測試,則預設使用 /DnsAll。 |
/DnsBasic | 執行基本 DNS 測試 (包括網路連線能力、DNS 用戶端設定、服務可用性及區域存在性)。 |
/DnsForwarders | 執行 /DnsBasic 測試,也會檢查轉寄站的設定。 |
/DnsDelegation | 執行 /DnsBasic 測試,也會檢查正確的委派。 |
/DnsDynamicUpdate | 執行 /DnsBasic 測試,同時判定是否已在 Active Directory 區域中啟用動態更新。 |
/DnsRecordRegistration | 執行 /DnsBasic 測試,也會檢查是否登錄 A、CNAME 及已知 SRV 記錄。此外,會依據結果來建立庫存報告。 |
/DnsResolveExtName [/DnsInternetName:InternetName] | 執行 /DnsBasic 測試,也會嘗試解析範例內部網路或網際網路名稱。如果未指定 /DnsInternetName,則命令會嘗試解析名稱 www.microsoft.com。如果指定 /DnsInternetName,則命令會嘗試解析使用者所提供的網際網路名稱。 |
/DnsAll | 執行所有測試 (DnsResolveExtName 測試除外),並產生一個報告。 |
/f:Logfile | 將輸出重新導向到使用者所提供的記錄檔。 |
/ferr:Logerr | 將嚴重錯誤輸出重新導向到不同的記錄檔。 |
/s:DCName | 指定在其上執行測試的網域控制站。 |
/e | 會在 Active Directory 樹系中的所有網域控制站上執行 /testNS 所指定的所有測試。 |
/v | 詳細資訊。除了錯誤及警告的資訊外,也會呈現成功測試結果的資訊 (如果沒有使用 /v 參數,則只會呈現錯誤及警告資訊)。Microsoft 建議在摘要表格中報告錯誤或警告時,使用 /v 參數 |
企業 DNS 基礎結構測試 (/e)
• | /testNS 與 /e 參數搭配執行時,會在 Active Directory 樹系中的所有網域控制站上執行 test:/DNS 所指定的所有測試。 |
連線能力測試
• | 連線能力測試是強制測試,且會在執行任何其他 dcdiag 測試之前自動執行。 |
• | 連線能力測試會決定網域控制站是否已登錄在 DNS 中、是否可進行 Ping,以及是否具有 LDAP/RPC 連線能力。 |
• | 如果給定控制站上的連線能力測試失敗,則該網域控制站上不會執行其他測試。 |
基本 DNS 測試 (/DnsBasic)
• | 基本 DNS 測試會確認下列必要服務執行中,且可在 dcdiag 所測試的網域控制站上取得: • | DNS 用戶端服務 | • | Netlogon 服務 | • | KDC 服務 | • | DNS 伺服器服務 (如果 DNS 是安裝在網域控制站上) |
|
• | 基本 DNS 測試會透過確認可連線所有介面卡上的 DNS 伺服器,來確認每個網域控制站的網路連線能力。 |
• | 基本 DNS 測試會確認最少在用戶端上所設定的一個 DNS 伺服器上登錄每個網域控制站的 A 記錄。 |
• | 如果網域控制站執行的是「DNS 伺服器」服務,則基本 DNS 測試會確認 Active Directory 網域區域及 Active Directory 網域區域的 SOA 記錄是存在的。 |
• | 基本 DNS 測試會檢查根 (.) 區域是否存在。 |
轉寄站測試 (/DnsForwarders)
• | 轉寄站測試會決定是否啟用遞迴。 |
• | 如
果已設定轉寄站或根提示,則轉寄站測試會確認 DNS
伺服器上的所有轉寄站或根提示正在作用,也會確定已解析「_ldap._tcp.<樹系根網域> DC 定位器」記錄
(而針對樹系根網域控制站上所設定的轉寄站或根提示,不會嘗試「_ldap_tcp.<樹系根網域> DC 定位器」記錄的解析)。 |
委派測試 (/DnsDelegation)
• | 委派測試會確認委派名稱伺服器是可作用的「DNS 伺服器」。 |
• | 委派測試會確定目標網域控制站所在之 Active Directory 網域區域中的所有 NS 記錄,都具有對應的黏附 A 記錄,來檢查中斷的委派。 |
動態更新測試 (/DnsDynamicUpdate)
• | 動態更新測試會確認已設定安全動態更新的 Active Directory 網域區域,以及執行測試記錄 (_dcdiag_test_record) 的登錄。之後會刪除測試記錄。 |
記錄登錄測試 (/DnsRecordRegistration)
• | 記錄登錄測試會驗證所有「DNS 伺服器」上之所有必要「DC 定位器」記錄的登錄,而這些伺服器是在網域控制站的每個介面卡上所設定。此測試會傳回下列記錄。 CNAME GUID | 登錄成 DNS 伺服器之 canonical 名稱 (CNAME) 的 GUID。 | A | 主機位址 (A) 資源記錄。將 DNS 網域名稱對應到網際網路通訊協定 (IP) 版本 4 的 32 位元位址。 | LDAP SRV | LDAP 服務的服務定位器 (SRV) 資源記錄。 | GC SRV | 通用類別目錄 (GC) 伺服器的服務定位程式 (SRV) 資源記錄。 | PDC SRV | 主要網域控制站 (PDC) 的服務定位器 (SRV) 資源記錄。 |
|
外部名稱解析測試 (/DnsResolveExtName)
• | 外部名稱解析測試會使用範例網際網路名稱 (www.microsoft.com),來驗證給定用戶端之外部 DNS 的基本解析,或使用者提供的網際網路名稱。 |
• | 外部名稱解析測試無法解析外部網際網路名稱,而此名稱是位在使用 Proxy 伺服器的環境中。 |
• | 可使用內部網路或網際網路名稱來測試名稱解析。 |
• | 若要解析使用者提供的網際網路或內部網路名稱 (而非預設名稱 www.microsoft.com),則必須使用 /DnsInternetName 參數。 |
如何讀取 DNS 加強 dcdiag 的輸出
下列步驟會摘要如何解譯 DNS 加強 dcdiag 所提供的結果:
1.
| 執行 dcdiagtest:DNS /e /f:dns.txt。Microsoft 建議固定使用 /v 參數來取得詳細資訊。 |
2.
| 以 [記事本] 或其他相容的編輯器開啟報告。 |
3.
| 捲動到報告結尾,並讀取摘要表格。 |
4.
| 在摘要表格中識別任何子測試是傳回「警告」或「失敗」狀態的伺服器。 |
5.
| 檢視該伺服器的輸出區段以查看所偵測到的問題 (提示:使用 [編輯] 功能表上的 [尋找] 命令搜尋字串 "DC: DC_computername" (不包括引號),來尋找特定 DC 的詳細區段)。 |
6.
| 依需要,解析 DNS 用戶端或 DNS 伺服器上的問題。 |
7.
| 再次執行 dcdiag /test:DNS /v /e (或 /s:DCName) 以確認所做的修正。視需要重複步驟 1 到 6,直到瞭解並調解所有失敗為止。 |
警告及錯誤
Dcdiag 採用了較保守的方式,即識別可能存在問題、不符合最佳作法設定,或 dcdiag 無法完全驗證的 DNS 用戶端或 DNS 伺服器設定。因此,dcdiag 的摘要及詳細區段可能會報告目前作用之 DNS 設定的警告。透過 dcdiag 予以識別時,系統管理員應檢閱及驗證此類設定。
下列各表包含設定,而這些設定可觸發 dcdiag,以報告每個 DNS 子測試的警告或錯誤。
基本
警告:介面卡 <配接器名稱> 具有動態 IP 位址 | 所有 DNS 伺服器建議使用靜態 IP 位址。 |
警告:介面卡 <介面卡名稱> 具有無效的 DNS 伺服器:<名稱> <IP 位址> | 可能無法連線 DNS 伺服器。 |
警告:沒有 DNS RPC 連線能力 (正在執行錯誤的或非 Microsoft DNS 伺服器) | 如果 DNS 伺服器是 BIND 或其他非 Microsoft DNS 伺服器,則請略過此警告。 |
警告:找不到此 DC/DNS 伺服器的 Active Directory 區域 | N/A |
警告:在此 DC/DNS 伺服器上發現根區域 | N/A |
錯誤:驗證因所指定的認證而失敗 | DCDIAG 要求有 Enterprise Admin 認證,才能執行所有測試。 |
錯誤:沒有 LDAP 連線能力 | N/A |
錯誤:沒有 DS RPC 連線能力 | N/A |
錯誤:沒有 WMI 連線能力 | DNS 測試要求有 WMI 連線能力,才能在遠端電腦上執行。 |
錯誤:無法透過 WMI 讀取作業系統版本 | 這可能是因為遠端電腦沒有 WMI 連線能力。 |
錯誤:不支援 <作業系統名稱> (只有 Windows 2000、Windows XP 及 Windows Server 2003 支援此工具) | N/A |
錯誤:開啟服務控制管理員失敗 | 無法發現服務是否正在執行。 |
錯誤:未執行 Kdc/netlogon/DNS/dnscache | 未執行部份金鑰服務。 |
錯誤:無法透過 WMI 讀取網路介面卡資訊 | N/A |
錯誤:所有 DNS 伺服器無效。 | 用戶端所指向的 DNS 伺服器可能無法連線、不是 DNS 伺服器,或具有無效的 IP 位址。 |
錯誤:找不到此 DC 的 A 記錄 | 每個 DC 應登錄 A 記錄。確定已在用戶端所指向的所有 DNS 伺服器上登錄 A 記錄。 |
錯誤:區域列舉找不到根及 AD 區域 | N/A |
錯誤:無法查詢此 DC 上的 DNS 區域 | 請確定存在 DC 將要登錄的區域。 |
轉寄站
錯誤:轉寄站清單具有無效的轉寄站:<轉寄站的 IP 位址> | DNS 伺服器上設定的轉寄站具有無效的 IP 位址或不是 DNS 伺服器,或名稱解析無法運作 (也就是說,如果是非根網域 DC,則無法解析樹系根網域 SRV 記錄)。 |
錯誤:都未設定根提示及轉寄站。請設定轉寄站或根提示。 | 除非 DNS 伺服器主控有根區域,否則請確定已在 DNS 伺服器上設定轉寄站或根提示。 |
錯誤:根提示清單具有無效的根提示伺服器:<根目錄提示伺服器的 IP 位址> | DNS 伺服器上所設定的根提示伺服器具有無效的 IP 位址或不是 DNS 伺服器,或名稱解析未運作 (即如果樹系根網域 SRV 記錄是非根網域 DC,則無法解析該記錄)。 |
錯誤:<根提示伺服器名稱> IP:<無法使用> 狀態:<伺服器狀態> | 設定的根提示伺服器不具有對應的 IP 位址。狀態欄位會告知您伺服器的狀態 |
錯誤:<根提示伺服器名稱> IP:<無法使用> Status:找不到 A 記錄 | 設定的根提示伺服器不具有 A 記錄。 |
錯誤:無法列舉 <DNS 伺服器名稱> 上的根提示伺服器 | 無法列出目標 DNS 伺服器上的根提示伺服器。 |
委派
警告:DNS 伺服器:<DnsServer 名稱> IP:<Ipaddress> 失敗:遺失黏附 A 記錄 | 設定的委派遺失黏附 A 記錄。 |
DNS 伺服器:<伺服器名稱> IP:<IP 位址> 錯誤:中斷的委派 -詳細資訊 | 已設定委派,但名稱伺服器未回應。 |
DNS 伺服器:<伺服器名稱> IP:<IP 位址> 錯誤:中斷的委派網域 <委派網域名稱> -非詳細資訊 | N/A |
錯誤:無法列舉伺服器之區域根處的記錄 | N/A |
DynamicUpdate
警告:已在區域上啟用動態更新,但不是安全的 <區域名稱> | 建議使用安全動態更新。 |
警告:無法新增測試記錄 _dcdiag_test_record,區域 <區域名稱> 發生錯誤 <錯誤碼> | 測試會動態新增虛擬的記錄 |
警告:無法刪除測試記錄 _dcdiag_test_record,區域 <區域名稱> 發生錯誤 <錯誤碼> | 也會一併刪除新增的記錄。 |
錯誤:區域 <區域名稱> 上未啟用動態更新 | Active Directory 區域上未啟用動態更新,因此用戶端無法登錄它的記錄。 |
記錄登錄
警告:DNS 伺服器上遺失 DC SRV 記錄 <記錄名稱> | 如果 DNSAvoidRegisterRecord 登錄機碼或其群組原則已設定為阻止登錄此記錄,請忽略此錯誤。 |
警告:DNS 伺服器上遺失 GC SRV 記錄 <記錄名稱> | 如果 DNSAvoidRegisterRecord 登錄機碼或其群組原則已設定為阻止登錄此記錄,請忽略此錯誤。 |
警告:DNS 伺服器上遺失 PDC SRV 記錄 <記錄名稱> | 如果 DNSAvoidRegisterRecord 登錄機碼或其群組原則已設定為阻止登錄此記錄,請忽略此錯誤。 |
警告:在部份網路介面卡中找不到記錄登錄 | N/A |
錯誤:DNS 伺服器 <DNS 伺服器 IP 位址> 上遺失一筆記錄:<記錄名稱> | DC 未在所指定的 DNS 伺服器上登錄其 A 記錄。 |
錯誤:DNS 伺服器 <DNS 伺服器 IP 位址> 上遺失 CNAME 記錄:<CNAME 記錄名稱> | DC 未在所指定的 DNS 伺服器上登錄其 CNAME 記錄。 |
錯誤:DNS 伺服器 <DNS 伺服器 IP 位址> 上遺失 DC SRV 記錄:<SRV 記錄名稱> | DC 未在所指定的 DNS 伺服器上登錄其 DC SRV 記錄。 |
錯誤:DNS 伺服器 <DNS 伺服器 IP 位址> 上遺失 GC SRV 記錄:<SRV 記錄名稱> | DC 未在所指定的 DNS 伺服器上登錄其 GC SRV 記錄。 |
錯誤:DNS 伺服器 <DNS 伺服器 IP 位址> 上遺失 PDC SRV 記錄:<SRV 記錄名稱> | DC 未在所指定的 DNS 伺服器上登錄所指定的 PDC SRV 記錄。停止及啟動 netlogon 服務,即可登錄所有這些記錄。 |
錯誤:找不到所有網路介面卡的記錄登錄 | 如果有多個網路介面卡,則測試會檢查每個介面卡上所設定之所有 DNS 伺服器上的所有記錄是否存在。如果 DNS 伺服器上的記錄登錄遺失,則會發生此錯誤。 |
外部名稱解析
錯誤:無法解析網際網路名稱 <名稱> | 無法解析所指定的網際網路名稱。確定已正確設定 Proxy 用戶端、伺服器、根提示及轉寄站。 |
企業 DNS 基礎結構測試
警告:都未設定從下層網域到上層網域的轉寄站及根提示 | 上層或下層網域的 DNS 伺服器中需要設定轉寄站或根提示,而這些網域會主控其對應網域的授權區域,讓名稱解析運作。 |
錯誤:上層網域上未設定委派 | 應從上層到下層網域來設定委派。 |
錯誤:有委派,但黏附記錄遺失 | 已設定委派,但名稱伺服器遺失它們的黏附記錄。 |
錯誤:未從上層網域到下層網域來設定轉寄站 | 必須從下層網域到上層網域來設定轉寄站。 |
錯誤:未從上層網域到下層網域來設定根提示 | 必須從下層網域到上層網域來設定根提示。 |
錯誤:從下層到上層網域來設定轉寄站,但有一部份的 DNS 伺服器測試失敗 (請參閱 DNS 伺服器區段,以取得錯誤詳細資料) | 所設定的轉寄站具有無效的 IP 位址或不是有效的 DNS 伺服器,或名稱解析未運作 (如果樹系根網域 SRV 記錄是位於非根網域中,則無法解析該記錄)。 |
錯誤:從下層到上層網域來設定根提示,但有一部份的 DNS 伺服器測試失敗 (請參閱 DNS 伺服器區段,以取得錯誤詳細資料) | 所設定的根提示具有無效的 IP 位址或不是有效的 DNS 伺服器,或名稱解析未運作。 |
範例:
下列範例將說明 Windows Server 2003 SP1 dcdiag 的使用方式。應將斜體的參數取代成您環境適用的那些參數:
• | 在處於非詳細資訊模式的單一網域控制站上執行所有 DNS 測試: Dcdiag /test:DNS /s:TargetDCName /f:LogFileName |
• | 在處於詳細資訊模式的單一網域控制站上執行所有 DNS 測試: Dcdiag /test:DNS /s:TargetDCName /v /f:LogFileName |
• | 在處於非詳細資訊模式的整個樹系上執行所有 DNS 測試: Dcdiag /test:DNS /e /f:LogFileName |
• | 在處於詳細資訊模式的整個樹系上執行所有 DNS 測試: Dcdiag /test:DNS /v /e /f:LogFileName |
• | 在單一網域控制站上執行 DNS 基本測試: Dcdiag /test:DNS /DnsBasic /s:TargetDCName /f:LogFileName |
• | 在單一網域控制站上執行 DNS 轉寄站測試: Dcdiag /test:DNS /DnsForwarders /s:TargetDCName /f:LogFileName |
• | 在單一網域控制站上執行 DNS 委派測試: Dcdiag /test:DNS /DnsDelegation /s:TargetDCName /f:LogFileName |
• | 在單一網域控制站上執行 DNS 動態更新測試: Dcdiag /test:DNS /DnsDynamicUpdate /s:TargetDCName /f:LogFileName |
• | 在單一網域控制站上執行 DNS 記錄登錄測試: Dcdiag /test:DNS /DnsRecordRegistration /s:TargetDCName /f:LogFileName |
• | 解析範例網際網路或內部網路名稱: Dcdiag /test:DNS /DnsResolveExtName /DnsInternetName:InternetName /f: LogFileName |
新的 Active Directory 複寫安全性測試
詳細說明
Windows Server 2003 Service Pack 1 中已對 DCDiag.exe 進行加強,使其包含了一項新功能,以識別可能會導致 Active Directory 複寫失敗的安全性設定。
新的 CheckSecurityError 測試可在 Active Directory 樹系中的一個或所有網域控制站上執行。該測試會執行下列作業:
• | 檢查金鑰發佈中心 (KDC) 在目標及來源網域控制站之網域中的可用性。 |
• | 確認目標 DC 可以傳輸並接收足夠大的 UDP 格式的封包 (由 Kerberos 使用)。 |
• | 確認目標 DC 的系統時鐘,與目標及來源網域中的 KDC 以及來源 DC 的系統時間相差不超過 5 分鐘。 |
• | 確認來源網域控制站上的每個命名內容根都已設定必要的使用權限。 |
• | 確認來源及目標 DC 電腦帳戶未遭停用、為可供委派的可信任帳戶,並且包含所有必要的服務主要名稱。 |
完成測試時,DCDiag.exe 呈現的摘要包括每個測試之網域控制站的結果,以及所發生之安全性錯誤的診斷。
使用下列語法,可在命令列中執行此測試:
Dcdiag /test:CheckSecurityError
可選擇性將參數 /ReplSource:SourceDC 新增到命令中,以將特定的網域控制站識別成複寫嘗試中的來源。/replsource:
參數中指定的網域控制站不必是目前的來源網域控制站,即目前正被測試的網域控制站的複寫來源
(亦即目標網域控制站目前具有的輸入連線物件的來源)。此測試會從網域控制站、金鑰發佈中心 (KDC) 來源與目標伺服器,以及 Active
Directory 收集資訊。
這個變更重要的原因
如果複寫無法運作,且錯誤是安全性錯誤 (例如「拒絕存取」、「目標帳戶名稱不正確」或「RPC 伺服器無法使用」),則導致這個問題的原因有很多。此測試會自動化診斷,方法是透過查看這些錯誤的最常用來源,並報告它們以讓您解決問題。