Active Directory的主要還原,Active Directory系列之五

Active Directory的授權還原

 

在上篇博文中我們介紹瞭如何在域中部署額外域控制器,額外域控制器有很多好處,例如可以平衡用戶對AD的訪問壓力,有利於避免唯一的域控制器損壞所導致域的崩潰。從上篇博文中我們得知,域內所有的域控制器都有一個內容相同的Active Directory,而且Active Directory的內容是動態平衡的,也就是說任何一個域控制器修改了Active Directory,其他的域控制器都會把這個Active Directory的變化複製過去。
今天我們要考慮這麼一個問題,如果域中有多個域控制器,但他們所擁有的Active Directory內容不一致,那麼應該以哪個域控制器的Active Directory內容爲準?有的朋友可能會疑惑,怎麼會出現這種情況呢?其實假如有個域控制器由於更換硬件導致有幾天時間沒有在線,而其他的域控制器在這段時間對Active Directory進行了修改,那麼當這個域控制器重新上線時就會出現我們所提到的這種情形。
當域控制器們發現彼此的Active Directory的內容不一致,他們就需要分析一下Active Directory的優先級,從而決定以哪個域控制器的Active Directory內容爲準。Active Directory的優先級比較主要考慮三方面因素,分別是:
1       版本號

2       時間

3       GUID

版本號指的是Active Directory對象的修改次數,版本號高者優先。例如域中有兩個域控制器ABA域控制器上的用戶administrator口令被修改了4次,最後被改爲12345B域控制器上的用戶administrator口令被修改了5次,最後被改爲123456。那麼AB發現他們的Active Directoryadministrator口令不一致,這時AB會分析版本號,發現版本號分別是45,這時A就會把BActive Directory內容複製到本機的Active Direcotry中。經過這麼一輪複製後,ABActive Directory內容就達到了新的平衡,他們Active Directory中所有對象的版本號也都完全一致了。
如果AB兩個域控制器都是對administrator口令修改了4次,那麼版本號就是相同的。這種情況下兩個域控制器就要比較時間因素,看哪個域控制器完成修改的時間靠後,時間靠後者優先。這裏我們順便提及一下,Active Directory中時間是個非常重要的因素,域內計算機的時間誤差不能超過5分鐘,而且Active Directory還有一個墓碑時間的限制,這些我們以後再詳細加以說明。
如果AB兩個域控制器的版本號和時間都完全一致,這時就要比較兩個域控制器的GUID了,顯然這完全是個隨機的結果。一般情況下時間完全相同的非常罕見,因此GUID這個因素只是一個備選方案。
說了這麼多的Active Directory優先級原理,我們引入一個具體的例子讓大家加深理解。如下圖所示,域中有兩個域控制器FlorenceFirenze。現在域中有一個用戶張建國,我們在Firenze上對Active Directory已經進行了備份。現在我們在Florence上不小心把張建國誤刪除了,顯然Firenze會很快把Active Directory中的張建國也刪除,以便和FlorenceActive Directory保持一致。那麼我們應該怎麼做才能把張建國給恢復回來呢?

 

很多朋友會很自然地想到利用Firenze上的Active Directory備份來解決這個問題,既然備份中有張建國,那麼把備份還原回來不就OK了嗎?這個問題沒這麼簡單,如果域中只有一個域控制器,那麼用備份還原是成立的。但現在域中有兩個域控制器,我們就要好好考慮一下了。Firenze從備份還原後,FlorenceFirenzeActive Directory內容就不一樣了,那麼FlorenceFirenzeActive Directory哪個優先級更高呢?哦,不對,似乎是Florence的版本號更高一些!那我們就可以從理論上得出結論,Firenze從備份還原之後,Active Directory中已經擁有了張建國的用戶賬號,但FirenzeFlorence比較了Active Directory之後,Firenze認爲FlorenceActive Directory比自己的優先級高,因此Firenze會把FlorenceActive Directory複製過來,這樣一來,剛被還原的張建國肯定會被重新刪除掉!
難道我們對此就無能爲力了嗎?不是的,在Firenze從備份還原Active Directory之後,我們可以利用一個工具NTDSUTIL.EXE來修改Active Directory對象的版本號,讓Firenze的版本號大於Florence的版本號,這樣我們就可以利用遊戲規則順利地達到目的了。這種還原方式我們稱爲授權還原,下面我們通過一個實例爲大家演示一下具體過程。
現在的場景是Firenze已經對Active Directory進行了備份,備份中包含了域用戶張建國。在備份之後我們誤刪除了張建國,現在我們在Firenze上開始利用備份進行主要還原。首先在Firenze上重啓計算機,BIOS自檢後按下F8,如下圖所示,選擇進入目錄服務還原模式。目錄服務還原模式可以把Active Directory掛起,適合我們從備份還原Active Directory
 

 

進入目錄服務還原模式後,我們從附件中啓動備份工具,如下圖所示,選擇下一步繼續。
 

 

選擇還原文件和設置。
 

 

選擇從備份還原Active Directory
 

 

點擊確定開始Active Directory的還原。
 

 

如下圖所示,還原結束後,千萬別選擇重啓計算機,我們還沒有修改Active Directory的版本號呢,確保選擇“否”。
 

 

還原結束後在Firenze的命令提示符下運行NTDSUTIL,如下圖所示。
 

 

運行了NTDSUTIL後,我們可以輸入?來獲取當前環境下的可執行命令幫助,如下圖所示,我們運行Authoritative restore來修改AD對象的版本號。
 

 

如下圖所示,我們可以簡單地運行restore database,這樣整個AD內所有對象的版本號都將加到最大,版本號加到最大是什麼含義呢?微軟規定,AD對象的版本號每天最多可以增加10萬。在本例中我們不需要把AD中所有對象的版本號都增加到最大,只要修改張建國的版本號就可以了。因此我們可以使用Restore Object命令只針對張建國的版本號進行修改,那如何在AD中表示張建國呢?按照目錄對象的命名規範,張建國隸屬於ADTEST.COM域中的人事部組織單位,那我們描述張建國就應該使用cn=張建國,ou=人事部,dcadtestdccom。如下圖所示,我們輸入修改指令後觀察一下運行的效果。
 

 

系統詢問是否執行授權還原,我們選擇“是”。
 

 

如下圖所示,授權還原成功完成,用quit命令退出NTDSUTIL

 

 

 

授權還原結束後我們重啓Firenze,如下圖所示,FirenzeAD中已經重新擁有了用戶張建國,修改版本號成功了。
 

 

本文出自 “嶽雷的微軟網絡課堂” 博客,請務必保留此出處http://yuelei.blog.51cto.com/202879/119477

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章