DNS在活動目錄中,除了提供域名解析功能外,還可以記錄域控和全局編錄服務器相關的信息,并將其提交給客戶端使用。域控會在DNS服務器上注冊記錄信息,包括主機記錄信息、各種服務記錄信息等。客戶端需要查詢這些記錄信息,才可以找到域控,之后才可以執行登錄到域環境、查詢Active Directory信息等操作。
Active Directory要想正常運作,必須建立在DNS正確配置和正常工作基礎之上。使用廣播或者WINS等方法,雖然也可以讓客戶端找到域控,不過因為劃分VLAN和缺乏配置等原因,這些方法已經很少使用了。
因此,針對AD的排錯,首先要確認DNS工作正常。在DNS中和活動目錄相關的記錄里面,“msdec”區域是比較重要的,該區域中包含了所有域控的服務記錄,AD中的林根域中的“msdcs”區域中額外包含了林中所有全局編錄服務器的記錄信息,該區域的主要作用是對域控和全局編錄服務器進行定位,在林中每個域都存在域控,但是在默認情況下,全局編錄服務器只能是根域的第一臺域控。如果該區域中的記錄缺失或者配置不正確,AD自然會出現故障。如果在網絡中存在多個域,那么只有根域的DNS服務器上才可以看到該區域的信息。
對于與DNS相關的故障來說,可以使用NSLOOKUP命令,來驗證DNS記錄是否完整。如果DNS記錄確實,可以通過重啟NetLogon服務加以修復,也可以執行“nltest.exe /dsregdns”命令進行修復。

圖1 對DNS服務進行測試
對DNS本身也應該進行一定的配置,包括允許動態更新、區域名稱和AD域名一致、DNS服務器本身需要配置DNS余名后綴等。
如果DNS記錄沒有正確注冊,原因在于沒有對DNS進行合理的配置,例如在域控上的TCP/IP屬性設定中,沒有正確地設置DNS服務器地址。在DNS服務器上配置存在異常,誤刪了一些不許存在的區域等。
在域控上執行“nslookup”命令,在“Defauit Server”欄中顯示的不是默認的活動目錄DNS服務器,則一定存在問題。找不到正確的DNS服務器,就會造成某些延遲。
例如,當客戶機加入域時特別慢,系統一直提示正在準備網絡連接的話,幾乎都是DNS設定出了問題。在NSLOOKUP命令行中繼續輸 入“_ldap.tcp._msdcs.xxx.com”命令,其中的“xxx.com”表示具體的域名,來查找LDAP服務器(即域控),如果提示該服務器沒有找到的話,那么客戶端自然無法定位域控。
在Nslookup命令行下執行“ls xxx.com”命令,可以查看域中所有的記錄信息。執行“ls-tsrv”命令,可以查看所有的SRV記錄。如果這些記錄異常的話,就說明DNS配置存在問題。
此外,可以在DNS控制左側選擇主機名,在其屬性窗口中的“監視”面板(如圖1)中選擇“對此DNS服務器的簡單查詢”和“對此服務器的遞歸查詢”項,點擊“立即測試”按鈕,對DNS服務進行快速測試。執行“net stop netlogon” 和“netlogonstart netlogon”命令,來重啟NetLogon服務,會執行DNS配置的修復操作。
如果網絡比較繁忙的話,又不存在多臺域控的情況下,不建議使用上述命令。執行“nltest.exe /dsregdns”命令,會提示命令執行成功,也可以修復DNS配置。打開DNS控制臺,執行刷新操作,可以看到DNS配置已經恢復如初了。
如果該方法無效的話,說明相關DNS區域也許并不存在。為此需要在DNS控制臺左側選擇“正向查找區域”項,在其右鍵菜單上點擊“新建區域”項,在向導界面(如圖2)中選擇“主要區域”項,選擇“在Active Directory中存儲區域”項。點擊“下一步”按鈕,選擇“在此域中的所有域控制器上運行的所有DNS服務器”項,之后輸入區域名稱,必須和域名一致。
點擊“下一步”,選擇“至允許安全的動態更新”項,點擊完成按鈕,創建該DNS區域。因為“msdcs”應該作為獨立的區域存在,尤其對于林中存在多域的情況而言尤為重要。所以可以選擇“正常查找區域→xxx.com→_msdcs”項,將其刪除。

圖2 創建所需的DNS區域
如果操作失敗,說明多臺域控之前的同步尚未完成。之后選擇“正向查找區域”項,在其右鍵菜單上點擊“新建區域”項,點擊“下一步”,在Active Directory區 域復制作用域窗口中選擇“至Active Directory林xxx.com中的所有DNS服務器”項,在之后的“區域名稱”欄中輸入“_msdcs.xxx.com”項,其余設置與上述相同,點擊“完成”,創建該獨立的區域。如果不將該區域獨立出來,會出現可以找到本域的域控,但是無法找到林中的全局編錄服務器。
選擇“正向查找區域→xxx.com”項,在右鍵菜單上點擊“新建委派”項,在向導界面中的“委派的域”欄中輸入“_msdcs”,讓其他的查詢者知道該區域由誰負責。
在下一步窗口中點擊“添加”按鈕,在“服務器完全合格的域名”欄中輸入“gc=dc1.xxx.com”,在“IP地址”loan中輸入本地IP,點擊“添加”按鈕將其添加進來。這樣就可以讓其指向自身,“dc1.xxx.com”表示本機名稱。點擊“完成”按鈕,將DNS配置恢復到初始狀態。
如果存在多臺DNS服務器的話,就會涉及到如何在彼此之間進行復制的問題。比較好的解決方法是,在每臺域控上安裝DNS服務,將相關的DNS區域設置為活動目錄集成區域,從整體上進行DNS的復制和活動目錄的復制,這樣可以有效提高安全性。
使 用“dnscmd”命 令,可以對DNS配置進行快速調整,例如執行“dnscmd /clearcache”命令,可以清除DNS緩存。執行“dnscmd/zoneinfo”命令,可以查看區域信息。執行“dnscmd xxx.com /zoneexport yyy.com c:”命 令,將“xxx.com”域中的“yyy.com”域名導出到指定的目錄中。
為了避免因為DNS注冊問題,導致客戶端無法登錄的情況,可以先在客戶端檢測DNS設置是否正常,是否指向正確的地址。之后在服務器端檢測DNS服務是否可用,并驗證DNS區域是否已經配置為自動更新狀態。
如果存在多臺DNS服務器,必須保證其彼此之間可以復制數據庫。在DNS控制臺左側選擇域名,在其屬性窗口中的“區域傳送”面板中選擇“允許區域傳送”項,來執行同步操作。點擊“通知”按鈕,可以指定輔助DNS服務器接收區域更新通知。執行“dcdiag /test:dns”命令,來驗證域控是否可以在DNS服務器上注冊其A記錄。如果因為身份驗證錯誤,導致用戶無法登錄的情況,可以使用Netdiag命令加以判斷,來驗證客戶端是否可以聯系到域控。