一.定义及作用

(一)全局编录服务器(GC)

全局编录是存储林中所有 Active Directory 对象的副本的域控制器。全局编录存储林中主持域的目录中所有对象的完全副本,以及林中所有其他域中所有对象的部分副本

1:存储对象信息副本,提高搜索性能

全局编录服务器中除了保存本域中所有对象的所有属性外,还保存林中其它域所有对象的部分属性,这样就允许用户通过全局编录信息搜索林中所有域中对象的信息,而不用考虑数据存储的位置。通过GC执行林中搜索时可获得最大的速度并产生最小的网络通信量。

2:存储通用组成员身份信息,帮助用户构建访问令牌

全局组成员身份存储在每个域中,但通用组成员身份只存储在全局编录服务器中。

我们知道,用户在登陆过程中需要由登录的DC构建一个安全的访问令牌,而要构建成功一个安全的访问令牌由三方面信息组成:用户SID,组SID,权力。其中用户SID和用户权力可以由登录DC获得,但对于获取组SID信息时,需要确定该用户属不属于通用组,而通用组信息只保存在GC中。所以当GC故障,负责构建安全访问令牌的DC就无法联系GC来确认该用户组的SID,也就无法构建一个安全的访问令牌。

注:在Win2003中,可以通过通用组缓存功能解决GC不在线无法登录情况,具体操作本文略过。

3:提供用户UPN名称登录身份验证。

当执行身份验证的域控制器没有用户UPN帐号信息时,将由GC解析用户主机名称(UPN)进行身份验证,以完成登录过程。

4:验证林中其他域对象的参考

当域控制器的某个对象的属性包含另一个域某个对象的参考时,将由全局编录服务器来完成验证。

(二)森林级别角色:

  1. 架构主机:Schema master:森林级别:作用是修改活动目录的源数据。我们知道在活动目录里存在着各种各样的对像,比如用户、计算机、打印机等,这些对像有一系列的属性,活动目录本身就是一个数据库,对象和属性之间就好像表格一样存在着对应关系,那么这些对像和属性之间的关系是由谁来定义的,就是Schema Master,如果大家部署过Exchange的话,就会知道Schema是可以被扩展的,但需要大家注意的是,扩展Schema一定是在Schema Master进行扩展的,在其它域控制器上或成员服务器上执行扩展程序,实际上是通过网络把数据传送到Schema上然后再在Schema Master上进行扩展的,要扩展Schema就必须具有Schema Admins组的权限才可以。

建议:在占有Schema Master的域控制器上不需要高性能,因为我们不是经常对Schema进行操作的,除非是经常会对Schema进行扩展,不过这种情况非常的少,但我们必须保证可用性,否则在安装Exchange或LCS之类的软件时会出错。

  1. 域命名主机Domain Naming Master这也是一个森林级别的角色,它的主要作用是管理森林中域的添加或者删除。如果你要在你现有森林中添加一个域或者删除一个域的话,那么就必须要和Domain Naming Master进行联系,如果Domain Naming Master处于Down机状态的话,你的添加和删除操作那上肯定会失败的。

建议:对占有Domain Naming Master的域控制器同样不需要高性能,我想没有一个网络管理员会经常在森林里添加或者删除域吧?当然高可用性是有必要的,否则就没有办法添加删除森里的域了。

(三)域级别(一个域里面只存一台DC有这个角色):

  1. PDC Emulator :PDC仿真器:在前面已经提过了,Windows 2000域开始,不再区分PDC还是BDC,但实际上有些操作则必须要由PDC来完成,那么这些操作在Windows 2000域里面怎么办呢?那就由PDC Emulator来完成,主要是以下操作:
  2. 处理密码验证要求;

在默认情况下,Windows 2000域里的所有DC会每5分钟复制一次,但有一些情况是例外的,比如密码的修改,一般情况下,一旦密码被修改,会先被复制到PDC Emulator,然后由PDC Emulator触发一个即时更新,以保证密码的实时性,当然,实际上由于网络复制也是需要时间的,所以还是会存在一定的时间差,至于这个时间差是多少,则取决于你的网络规模和线路情况。

  1. 统一域内的时间;

微软活动目录是用Kerberos协议来进行身份认证的,在默认情况下,验证方与被验证方之间的时间差不能超过5分钟,否则会被拒绝通过,微软这种设计主要是用来防止回放式攻击。所以在域内的时间必须是统一的,这个统一时间的工作就是由PDC Emulator来完成的。

  1. 向域内的NT4 BDC提供复制数据源;

对于一些新建的网络,不大会存在Windows 2000域里包含NT4的BDC的现象,但是对于一些从NT4升级而来的Windows 2000域却很可能存有这种情况,这种情况下要向NT4 BDC复制,就需要PDC Emulator。

  1. 统一修改组策略的模板;
  2. 对Windows 2000以前的操作系统,如WIN98之类的计算机提供支持;

对于Windows 2000之前的操作系统,它们会认为自己加入的是NT4域,所以当这些机器加入到Windows 2000域时,它们会尝试联系PDC,而实际上PDC已经不存在了,所以PDC Emulator就会成为它们的联系对象!

建议:从上面的介绍里大家应该看出来了,PDC Emulator是FSMO五种角色里任务最重的,所以对于占用PDC Emulator的域控制器要保证高性能和高可用性。

RID Master :RID主控: 在Windows 2000的安全子系统中,用户的标识不取决于用户名,虽然我们在一些权限设置时用的是用户名,但实际上取决于安全主体SID,所以当两个用户的SID一样的时候,尽管他们的用户名可能不一样,但Windows的安全子系统中会把他们认为是同一个用户,这样就会产生安全问题。而在域内的用户安全SID=Domain SID+RID,那么如何避免这种情况?这就需要用到RID Master,RID Master的作用是:分配可用RID池给域内的DC和防止安全主体的SID重复。

建议:对于占有RID Master的域控制器,其实也没有必要一定要求高性能,因为我们很少会经常性的利用批处理或脚本向活动目录添加大量的用户。这个请大家视实际情况而定了,当然高可用性是必不可少的,否则就没有办法添加用户了。

  1. Infrastructure Master :结构主控

FSMO的五种角色中最无关紧要的可能就是这个角色了,它的主要作用就是用来更新组的成员列表,因为在活动目录中很有可能有一些用户从一个OU转移到另外一个OU,那么用户的DN名就发生变化,这时其它域对于这个用户引用也要发生变化。这种变化就是由Infrastructure Master来完成的。

建议:其实在活动目录森林里仅仅只有一个域或者森林里所有的域控制器都是GC(全局编录)的情况下,Infrastructure Master根本不起作用,所以一般情况下对于占有Infrastructure Master的域控制器往忽略性能和可能性。

  1. FSMO的规划原则:
  2. 占有Domain Naming Master角色的域控制器必须同时也是GC;
  3. 不能把Infrastructure Master和GC放在同一台DC上;
  4. 建议将Schema Master和Domain Naming Master放在森林根域的GC服务器上;
  5. 建议将Schema Master和Domain Naming Master放在同一台域控制器上;
  6. 建议将PDC Emulator、RID Master及Infrastructure Master放在同一台性能较好的域控制器上;
  7. 尽量不要把PDC Emulator、RID Master及Infrastructure Master放置在GC服务器上;

二. 操作主机角色转移

(一)角色查询

  1. 使用netdom query fsmo命令查询

对于查询FSMO主机的方式有很多,本人一般在命令行下,用netdom query fsmo命令查询.要注意的是本命令需要安装windows 的Support Tools.


AD FSMO活动目录角色作用及角色转移操作_Windows

  1. 使用Dsquery工具查看

Dsquery Server –Hasfsmo Schema //查看架构主机

Dsquery Server –Hasfsmo Name //查看域 主机

Dsquery Server –Hasfsmo PDC //查看PDC模拟器主机

Dsquery Server –Hasfsmo RID //查看RID主机

Dsquery Server –Hasfsmo Infr //查看基础结构主机

(二)使用命令角色转移

  1. 使用Ntdsutil工具更改操作主机角色

首先查看五个角色在哪台服务器上面:

> netdom query fsmo


AD FSMO活动目录角色作用及角色转移操作_Domain_02

在主域控和辅助域控都正常运行的时候 角色迁移,使用Transfer:

>ntdsutil

ntdsutil: roles

fsmo maintenance: connections

server connections: connect to server DC2              //连接到辅助域控制器

server connections: q                                  //quit to up level 返回到上一级

fsmo maintence: transfer naming master

fsmo maintence: transfer PDC

fsmo maintence: transfer RID master

fsmo maintence: transfer schema master

fsmo maintence: transfer infrastructure master


AD FSMO活动目录角色作用及角色转移操作_服务器_03

后面四个角色同样选择Yes,确认转移。

完成转移之后,再来使用netdom查看一下五个角色所在的服务器:

netdom query fsmo


AD FSMO活动目录角色作用及角色转移操作_Domain_04

Tips: 如果主域控Down了。在辅助域控制器中强占五个角色,同样使用上面的命令进行转移,只是将Transfer命令替换为Seize

2.在PS中使用Move-ADDirectoryServerOperationMasterRole命令

要将5个角色转移到另一个域控制器,可以运行以下命令。其中-Identity指定辅助域控制器,-OperationMasterRole指定需要转移的角色。-force强制执行,当主域控制器Down掉,-force选项在辅助域控制器中就派上用场了。

> Move-ADDirectoryServerOperationMasterRole -Identity DC2 -OperationMasterRole 0,1,2,3,4 -force


AD FSMO活动目录角色作用及角色转移操作_Domain_05

执行ntdsutil命令,可以看到五个角色已经转移到DC2了:


AD FSMO活动目录角色作用及角色转移操作_Windows_06

下面详细列出了五个FSMO角色对应的0,1,2,3,4五个序号:

PDC Emulator – 0

RID Master – 1

Infrastructure Master – 2

Schema Master – 3

Domain Naming Master – 4

Ntdsutil工具的功能非常强大,可以进行AD数据库维护,查看和更换操作主机角色以及删除无法通过图形界面删除的DC遗留的元数据。通过Ntdsutil工具不但可以清理无效的DC信息,也可以使用Transfer子命令转移操作主机角色,使用Seize子命令夺取操作主机角色。

(三)图形配置角色转移

  1. 转移-(RID、PDC、基础结构 ) 操作主机角色

通过【Active Directory 用户和计算机】管理工具操作实现,如下图所示:


AD FSMO活动目录角色作用及角色转移操作_Windows_07

  1. 转移-(域命名)操作主机

通过【Active Directory域和信任关系】管理工具操作实现,如下图所示:


AD FSMO活动目录角色作用及角色转移操作_服务器_08

  1. 转移-(架构主机)

先注册dll文件:regsvr32 schmmgmt.dll,如下图所示:


AD FSMO活动目录角色作用及角色转移操作_Domain_09

在MMC管理单元中,添加管理单元:Active Directory架构,如下图所示:


AD FSMO活动目录角色作用及角色转移操作_Domain_10

连接到目标DC,就是要把角色转移到的那台DC,本次是把角色从windc-01转移到windc-02,那就连接到windc-02,如下图所示:


AD FSMO活动目录角色作用及角色转移操作_Domain_11


AD FSMO活动目录角色作用及角色转移操作_Domain_12


AD FSMO活动目录角色作用及角色转移操作_Windows_13


AD FSMO活动目录角色作用及角色转移操作_Domain_14