刘锐欢迎你的到来!

ms_masthead_10x7a_ltr.jpg          mcse.gif              mcp.gif           huawei.gif              logo.gif

多域控制器环境下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

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

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

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(coolnetboy@hotmail.com)"

WScript.Echo text

posted on 2006-04-15 16:10 www.liserui.cnitblog.com 阅读(284) 评论(0)  编辑 收藏 引用 所属分类: 微软技术

只有注册用户登录后才能发表评论。