(源自microsoft.com)多網域控制器環境下Active Directory災難恢復

摘要
本文講述了在多網域控制器環境下,主網域控制器由於硬體故障突然損壞,而又事先又沒有做好備份,如何使額外網域控制器接替它的工作,使Active Directory正常運行,並在硬體修理好之後,如何使損壞的主網域控制器恢復。
 
目錄
Active Directory操作主機角色概述
環境分析
從AD中清除主網域控制器DC-01.test.com 對象
在額外網域控制器上通過ntdsutil.exe工具執行奪取五種FMSO操作
設置額外網域控制器為GC(全局編錄)
重新安裝並恢復損壞主網域控制器
附:用於檢測AD中五種操作主機角色的腳本
參考資訊
作者介紹
 
一、Active Directory操作主機角色概述
Active Directory 定義了五種操作主機角色(又稱FSMO):
架構主機 schema master、
域命名主機 domain naming master
相對標識號 (RID) 主機 RID master
主網域控制器模擬器 (PDCE)
基礎結構主機 infrastructure master
而每種操作主機角色負擔不同的工作,具有不同的功能:
架構主機
具有架構主機角色的 DC 是可以更新目錄架構的唯一 DC。這些架構更新會從架構主機複製到目錄林中的所有其他網域控制器中。 架構主機是基於目錄林的,整個目錄林中只有一個架構主機。
域命名主機
具有域命名主機角色的 DC 是可以執行以下任務的唯一 DC:
向目錄林中添加新域。
從目錄林中刪除現有的域。
添加或刪除描述外部目錄的交叉引用物件。
相對標識號 (RID) 主機
此操作主機負責向其他 DC 分配 RID 池。只有一個伺服器執行此任務。在創建安全主體(例如用戶、
組或電腦)時,需要將 RID 與域範圍內的識別字相結合,以創建唯一的安全識別字 (SID)。 每一個
Windows 2000 DC 都會收到用於創建物件的 RID 池(默認為 512)。RID 主機通過分配不同的池來確保這
些 ID 在每一個 DC 上都是唯一的。通過 RID 主機,還可以在同一目錄林中的不同域之間移動所有物件。
域命名主機是基於目錄林的,整個目錄林中只有一個域命名主機。相對標識號(RID)主機是基於域的,目錄林中的每個域都有自己的相對標識號(RID)主機
PDCE
主網域控制器模擬器提供以下主要功能:
向後相容低級用戶端和伺服器,允許 Windows NT4.0 備份網域控制器 (BDC) 加入到新的 Windows 2000 環境。 本機 Windows 2000 環境將密碼更改轉發到 PDCE。每當 DC 驗證密碼失敗後,它會與 PDCE 取得聯繫,以查看該密碼是否可以在那裏得到驗證,也許其原因在於密碼更改還沒有被複製到驗證 DC 中。
時間同步 — 目錄林中各個域的 PDCE 都會與目錄林的根域中的 PDCE 進行同步。
PDCE是基於域的,目錄林中的每個域都有自己的PDCE。
基礎結構主機
基礎結構主機確保所有域間操作物件的一致性。當引用另一個域中的對象時,此引用包含該對象的
全局唯一識別字 (GUID)、安全識別字 (SID) 和可分辨的名稱 (DN)。如果被引用的物件移動,則在域中擔
當結構主機角色的 DC 會負責更新該域中跨域物件引用中的 SID 和 DN。
基礎結構主機是基於域的,目錄林中的每個域都有自己的基礎結構主機
默認,這五種FMSO存在于目錄林根域的第一台DC(主網域控制器)上,而子域中的相對標識號 (RID) 主機、PDCE 、基礎結構主機存在於子域中的第一台DC。
 
二、環境分析
公司Test.com(虛擬)有一台主網域控制器DC-01.test.com,還有一台額外網域控制器DC-02.test.com。現主網域控制器(DC-01.test.com)由於硬體故障突然損壞,事先又沒有DC-01.test.com的系統狀態備份,沒辦法通過備份修復主網域控制器(DC-01.test.com),我們怎麼讓額外網域控制器(DC-02.test.com)替代主網域控制器,使Acitvie Directory繼續正常運行,並在損壞的主網域控制器硬體修理好之後,如何使損壞的主網域控制器恢復。
如果你的第一台DC壞了,還有額外網域控制器正常,需要在一台額外網域控制器上奪取這五種FMSO,並需要把額外網域控制器設置為GC。
 
三、從AD中清除主網域控制器DC-01.test.com對象
3.1在額外網域控制器(DC-02.test.com)上通過ntdsutil.exe工具把主網域控制器(DC-01.test.com)從AD中刪除;
c:>ntdsutil
ntdsutil: metadata cleanup
metadata cleanup: select operation target
select operation target: connections
server connections: connect to domain test.com
server connections: quit
select operation target: list sites
Found 1 site(s)
0 - CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=com
select operation target: select site 0
Site - CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=com
No current domain
No current server
No current Naming Context
select operation target: List domains in site
Found 1 domain(s)
0 - DC=test,DC=com
select operation target: select domain 0
Site - CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=com
Domain - DC=test,DC=com
No current server
No current Naming Context
select operation target: List servers for domain in site
Found 2 server(s)
0 - CN=DC-01,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=te
st,DC=com
1 - CN=DC-02,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=te
st,DC=com
select operation target: select server 0
select operation target: quit
metadata cleanup:Remove selected server

出現對話方塊,按“確定“刪除DC-01主控伺服器。
metadata cleanup:quit
ntdsutil: quit
3.2使用ADSI EDIT工具刪除Active Directory users and computers中的Domain controllers中DC-01伺服器物件,
ADSI EDIT是Windows 2000 support tools中的工具,你需要安裝Windows 2000 support tool,安裝程式在windows 2000光碟中的support\tools目錄下。打開ADSI EDIT工具,展開Domain NC[DC-02.test.com],展開OU=Domain controllers,右擊CN=DC-01,然後選擇Delete,把DC-01伺服器物件刪除,如圖1:
3.3 在Active Directory Sites and Service中刪除DC-01伺服器物件
打開Administrative tools中的Active Directory Sites and Service,展開Sites,展開Default-First-Site-Name,展開Servers,右擊DC-01,選擇Delete,單擊Yes按鈕,如圖2:
 
四、在額外網域控制器上通過ntdsutil.exe工具執行奪取五種FMSO操作
c:>ntdsutil
ntdsutil: roles
fsmo maintenance: Select operation target
select operation target: connections
server connections: connect to domain test.com
server connections: quit
select operation target: list sites
Found 1 site(s)
0 - CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=com
select operation target: select site 0
Site - CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=com
No current domain
No current server
No current Naming Context
select operation target: List domains in site
Found 1 domain(s)
0 - DC=test,DC=com
select operation target: select domain 0
Site - CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=com
Domain - DC=test,DC=com
No current server
No current Naming Context
select operation target: List servers for domain in site
Found 1 server(s)
0 - CN=DC-02,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=te
st,DC=com
select operation target: select server 0
select operation target: quit
fsmo maintenance:Seize domain naming master
出現對話方塊,按“確定“
fsmo maintenance:Seize infrastructure master
出現對話方塊,按“確定“
fsmo maintenance:Seize PDC
出現對話方塊,按“確定“
fsmo maintenance:Seize RID master
出現對話方塊,按“確定“
fsmo maintenance:Seize schema master
出現對話方塊,按“確定“
fsmo maintenance:quit
ntdsutil: quit
(注:Seize是在原FSMO不線上時進行操作,如果原FSMO線上,需要使用Transfer操作)
 
五、設置額外控制(DC-02.test.com)為GC(全局編錄)
打開Administrative Tools中的Active Directory Sites and Services,展開Sites,展開Default-First-Site-Name,展開Servers,展開DC-02.test.com(額外控制器),右擊NTDS Settings選擇Properties,然後在"Global Catalog"前面打勾,單擊"確定"按鈕,然後重新啟動伺服器。
 
六、重新安裝並恢復損壞主網域控制器
修理好DC-01.test.com損壞的硬體之後,在DC-01.test.com伺服器重新安裝Windows 2000 Server,安裝好Windows 2000 Server之後,再運行Dcpromo升成額外的網域控制器;如果你需要使DC-01.test.com擔任五種FMSO角色,通過ntdsutil工具進行角色轉換,進行Transfer操作就行了(注意:不能用Seize)。並通過Active Directory Sites and Services設置DC-01.test.com為GC,取消DC-02.test.com的GC功能。
建議domain naming master不要和RID master在一台DC上,而domain naming master同時必須為GC。
 
附:用於檢測AD中五種操作主機角色的腳本
給大家一個腳本,用於檢測AD中五種FSMO角色,把下面的代碼,保存為FSMO.VBS,然後執行它.
Set objRootDSE = GetObject("LDAP://rootDSE")

Dim text

' Schema Master
Set objSchema = GetObject("LDAP://" & objRootDSE.Get("schemaNamingContext"))
strSchemaMaster = objSchema.Get("fSMORoleOwner")
Set objNtds = GetObject("LDAP://" & strSchemaMaster)
Set objComputer = GetObject(objNtds.Parent)
text="Forest-wide Schema Master FSMO: " & objComputer.Name & vbCrLf

Set objNtds = Nothing
Set objComputer = Nothing

' Domain Naming Master
Set objPartitions = GetObject("LDAP://CN=Partitions," & _
objRootDSE.Get("configurationNamingContext"))
strDomainNamingMaster = objPartitions.Get("fSMORoleOwner")
Set objNtds = GetObject("LDAP://" & strDomainNamingMaster)
Set objComputer = GetObject(objNtds.Parent)
text=text&"Forest-wide Domain Naming Master FSMO: " & objComputer.Name & vbCrLf

Set objNtds = Nothing
Set objComputer = Nothing

' PDC Emulator
Set objDomain = GetObject("LDAP://" & objRootDSE.Get("defaultNamingContext"))
strPdcEmulator = objDomain.Get("fSMORoleOwner")
Set objNtds = GetObject("LDAP://" & strPdcEmulator)
Set objComputer = GetObject(objNtds.Parent)
text=text&"Domain's PDC Emulator FSMO: " & objComputer.Name & vbCrLf

Set objNtds = Nothing
Set objComputer = Nothing

' RID Master
Set objRidManager = GetObject("LDAP://CN=RID Manager$,CN=System," & _
objRootDSE.Get("defaultNamingContext"))
strRidMaster = objRidManager.Get("fSMORoleOwner")
Set objNtds = GetObject("LDAP://" & strRidMaster)
Set objComputer = GetObject(objNtds.Parent)
text=text&"Domain's RID Master FSMO: " & objComputer.Name & vbCrLf


Set objNtds = Nothing
Set objComputer = Nothing

' Infrastructure Master
Set objInfrastructure = GetObject("LDAP://CN=Infrastructure," & _
objRootDSE.Get("defaultNamingContext"))
strInfrastructureMaster = objInfrastructure.Get("fSMORoleOwner")
Set objNtds = GetObject("LDAP://" & strInfrastructureMaster)
Set objComputer = GetObject(objNtds.Parent)
text=text&"Domain's Infrastructure Master FSMO: " & objComputer.Name & vbCrLf

text=text & vbCrLf &" Design by coolnetboy(Email住址會使用灌水程式保護機制。你需要啟動Javascript才能觀看它)"
WScript.Echo text
 
參考資訊
Microsoft Windows 2000 Server Resource Kit
 
作者介紹
黃義輝(Email住址會使用灌水程式保護機制。你需要啟動Javascript才能觀看它),持有MCSE、MCDBA證書,擅長Windows 2000、AD、Exchange 2000 Server、ISA 2000 Server、SQL Server等系統規劃、部署及管理.
 
版權聲明
凡在本網站發表的文章,作者必須保證是原創文章;如果不是原創文章,由此帶來的版權糾紛由作者自己承擔。微軟有義務對本站點發表的文章進行審核,但您需要考慮這些文章的使用風險。本站點僅提供一個用戶相互交換技術資訊和學習的園地,並不對來自社區用戶的技術文章承擔任何風險。