河南 劉進京
某單位在網絡環境中部署了多臺Windows Server 2012 R2域控制器,近日在域控制之間復制時出現異常現象。系統顯示“沒有足夠的站點連接信息用于KCC 創建跨越樹復制拓撲,或者具有此目錄分區的一個或者多個目錄服務器無法復制目錄分區信息,這可能源于目錄服務無法訪問”的錯誤信息,造成域控之間復制失敗,活動目錄數據庫無法及時同步更新。
對于域控復制失敗問題,首先執行“repadmin/showrepl”命令檢測域控復制狀態,在返回信息中出現“DSA 選項:IS_GC DISABLE_INBOUND_RFEPL DISABLE_OUTBOUND_REPL”的提示信息,說明出站和入站的復制狀態均為“Disable”,即域控復制被禁用。
執行“repadmin/options dc1-DISABLE_INBOUND_REPL”和“repadmin/options dc1-DISABLE_OUTBOUND_REPL”命令,在返回信息中的“新的DCA 選項”行中只顯示“IS_GC”項,說明啟用了域控制器的復制功能,“dc1”為該域控名稱。
之后執行“repadmin/showconn”命令,確認域控之間是否成功創建復制鏈接。接著執行“repadmin/showrepl”命令,顯示當前域控的復制狀態,在返回信息中出現“由于DNS 查找故障,DSA 操作無法進行”的信息。執行“repadmin/syncall dc1/force”命令,強制當前域控和目標域控之間強制進行復制,出現“到DC1的DsBindWithCred 失敗,狀態:1732<0x6ba> RPC 服務器不可用”的提示。
使用ping 命令對目標域名進行探測也出現異常,對域控之間的網絡連接進行檢測,并更換連接的網線,但在強制復制時依然出現問題。
經檢查在這些域控主機上都部署了Active Directory 集成區域DNS 服務。在對該域控上打開DNS控制臺,對配置信息進行檢測時,發現“_msdcs.xxx.com”子域中的配置信息存在缺失的情況,可能是有人誤操作對該子域造成了破壞。
活動目錄使用DNS 來定位域控制器,之后才可以使用活動目錄提供的服務,包括全局編錄服務、Kerberos、輕量級負載協議和域控制器等,所有的SRV 紀錄全部保存在該子域中。Netlogon 進程會在每個域控制器上動態注冊所需的紀錄。
所有的域控會通過復制機制同步該子域內容。該子域配置會通過活動目錄數據庫的多主機復制機制,同步到每個運行DNS 域的控制器。在該子域中包含DC、Domain、GC 以及PDC 等項目,這些項目會標注活動目錄服務中常見的服務所在的域控制器及定義域控制器的屬性。如果該子域出現問題,不僅會導致域控之間復制失敗,還會造成客戶端登錄驗證失敗。
為解決問題,需要對該子域進行恢復。因為該子域已被破壞,可以先刪除,再重建來進行恢復操作。
在DNS 管理器中選擇“正向查找區域”項,右擊“新建區域”項,在新建區域向導界面中點擊“下一步”,在區域類型窗口中選擇“主要區域”和“在Active Directory 中存儲區域(只有DNS 服務器是可寫控制器時才可用)”。該區域支持安全更新,域中所有計算機的地址變化后都會向該區域注冊自己的IP。
點擊“下一步”按鈕,在Active Directory 區域傳送作用域窗口中選擇“至此域中域控制器上運行的所有DNS 服務器”項,表示僅僅在部署Active Directory 集成區域DNS 服務的服務器上進行區域傳送。
點擊“下一步”,在“區域名稱”欄中輸入“_msdcs.xxx.com”,點擊“下一步”,在動態更新窗口中選擇“只允許安全的動態更新(適合Active Directory 使用)”,點擊“完成”,創建該子域。打開“網絡連接屬性窗口→Internet協議版本4(TCP/Ipv4)→使用下面的DNS 服務器地址”項,保證首選DNS服務器指向域控地址。
執行“net stop netlogon”和“net start netlogon”命令,重新注冊并生成新服務,檢測“_msdcs.xxx.com”子域下是否包含DC、Domain、GC及PDCPDC 等子文件。
完成以上操作后,打開 Active Directory 站點和服務窗口,在左側選擇“Sites→站點名稱→Serves→域控名稱→NTDS Settings”項,在右側窗口中選擇由KCC 自動生成的目標復制鏈接,右擊“立即復制”項,在彈出窗口點擊“立即復制”,強制在指定域控之間立即執行復制操作。
也可以執行“repadmin/replicate dc1 dc2 dc=xxx,dc=com/force”命令,在指定的域控之間執行強制復制操作,其中的“xxx”為聚義的域名,“dc1”和“dc2”為具體的域控名稱。執行“repadmin/showrepl”命令,顯示域控之間復制信息。執行“repadmin/syncall”命令,可以同步所有的域控。可以看到,域控之間的復制可以順利進行了。