Chinaunix首页 | 论坛 | 博客
  • 博客访问: 387029
  • 博文数量: 136
  • 博客积分: 4010
  • 博客等级: 上校
  • 技术积分: 1410
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-14 14:11
文章分类

全部博文(136)

文章存档

2008年(16)

2007年(27)

2006年(93)

我的朋友

分类: WINDOWS

2006-11-08 19:41:12

    这两天将公司的域控制器又一个升级到两个,由此产生了一些小问题,在系统日志中能看到:
需要转移FSMO5个角色中一个。下面是参考文档
FSMO中文翻译成操作主控,在说明FSMO的作用以前,先给大家介绍两个概念:
  单主复制:所谓的单主复制就是指从一个地方向其它地方进行复制,这个主要是用于以前的NT4域,我们知道,在NT4域的年代,域网络上区分PDC和BDC,所有的复制都是从PDC到BDC上进行的,因为NT4域用的是这种复制机构,所以要在网络上进行对域的修改就必须在PDC上进行,在BDC上进行是无效的。如果你的网络较小的话,那么这种机构的缺点不能完全的体现,但是如果是一个跨城区的网络,比如你的PDC在上海,而BDC在北京的话,那么你的网络修改就会显得非常的麻烦。

  多主复制:多主复制是相对于单主复制而言的,它是指所有的之间进行相互复制,主要是为了弥补单主复制的缺陷,微软从Windows 开始,不再在网络上区分PDC和BDC,所有的域控制器处于一种等价的地位,在任意一台域控制器上的修改,都会被复制到其它的域控制器上。

  既然Windows 2000域中的域控制器都是等价的,那么这些域控制器的作用是什么呢?在Windows 2000域中的域控制器的作用不取决于它是网络中的第几台域控制器,而取决于FSMO五种角色在网络中的分布情况,现在开始进入正题,FSMO有五种角色,分成两大类:

  1、 森林级别(即一个森林只存在一台DC有这个角色):

  (1)、Schema Master中文翻译成:架构主控

  (2)、Domain Naming Master中文翻译成:域命名主控

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

  (1)、PDC Emulator 中文翻译成:PDC仿真器

  (2)、RID Master 中文翻译成:RID主控

  (3)、Infrastructure Master 中文翻译成:基础架构主控

一、接下来就来说明一下这五种角色空间有什么作用:

  1、 Schema Maste

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

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

  3、 Domain Naming Master

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

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

  5、 PDC Emulator

  在前面已经提过了,Windows 2000域开始,不再区分PDC还是BDC,但实际上有些操作则必须要由PDC来完成,那么这些操作在Windows 2000域里面怎么办呢?那就由PDC Emulator来完成,主要是以下操作:

  ⑴、处理密码验证要求;

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

  ⑵、统一域内的时间;

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

  ⑶、向域内的NT4 BDC提供复制数据源;

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

  ⑷、统一修改的模板;

  ⑸、对 2000以前的操作系统,如WIN98之类的计算机提供支持;

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

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

4、RID Master

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

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

  5、 Infrastructure Master

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

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

  二、在说完FSMO五种角色的作用以后,我们如何知道这五种角色在网络中的分布情况呢?

  对于新建的网络,这五种角色都集中在森林中的第一台域控制器上,但是如果是别人已经建好的网络,比如我们去接手一些网络的时候,很可能这五种角色已经被转移到其它的域控制器上了。这时我们可以通过三种方法来知道,分别是GUI介面,命令行及脚本:

  1、 GUI介面:

  GUI介面下不能一次性获得五种角色的分布,

  ⑴、Schema Maste

  点击“开始-运行”,输入:“regsvr32 schmmgmt”,回车:

  然后点击“确定”。

⑵、RID Master、Infrastructure Master、PDC Emulator

  点击“开始-设置-控制面板-管理工具-Active Directory用户和计算机”

  在域名上单击右键:

  在出来的菜单中选择“操作主机”:

  在出来的画面中可以看到RID Master、PDC Emulator、Infrastructure Master的分布情况。

  ⑶、Domain Naming Master

  点击“开始-设置-控制面板-管理工具-Active Directory域和信任关系”:

  在“Active Directory域和信任关系”上击右键:

  选择“操作主机”:

  这就是“Domain Naming Master”所在的域控制器。

  以上就是用GUI来查看FSMO五种角色的分布情况,用GUI介面不但可以查看,还可以随意的改变这五种角色的分布情况,但缺点是比较麻烦,需要较多的操作项目,如果仅仅是查看就比较的浪费时间。

2、 命令行工具:

  首先你要安装Support Tools,在安装光盘中的Support文件夹下的Tools子文件下。默认安装在系统盘的Program Files文件下。安装成功后,点击“开始-程序-Windows Support Tools-Command Prompt”:

  然后运行“netdom”命令,在这里,运行的是:“netdom query fsmo”:

  看到了吧,马上把当前域里的FSMO五种角色所在的域控制器罗列了出来。

  3、 脚本。

  在这里,我给大家一段脚本:

  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

  WScript.Echo text

  大家把以上内容复制到记事本,保存为fsmo.vbs,然后到域里的计算机上运行,就可以得到如下画面:

  也看到了吧!!!

  三、最后来看一下FSMO的规划,在规划时,请大家按以下原则进行:

  1、占有Domain Naming Master角色的域控制器必须同时也是GC;

  2、不能把Infrastructure Master和GC放在同一台DC上;

  3、建议将Schema Master和Domain Naming Master放在森林根域的GC服务器上;

  4、建议将Schema Master和Domain Naming Master放在同一台域控制器上;

  5、建议将PDC Emulator、RID Master及Infrastructure Master放在同一台性能较好的域控制器上;

  6、尽量不要把PDC Emulator、RID Master及Infrastructure Master放置在GC服务器上;

  好了,关于FSMO我就先说到这里,请大家多多指正。

阅读(1511) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~