摘要
本文讲述了在多域控制器环境下,主域控制器由于硬件故障突然损坏,而又事先又没有做好备份,如何使额外域控制器接替它的工作,使
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