为什么我们需要域?Active Directory系列之一
对很多刚开始钻研微软技术的朋友来说,域是一个让他们感到很头疼的对象。域的重要性毋庸置疑,微软的重量级服务产品基本上都需要域的支持,很多公司招聘工程师的要求中也都明确要求应聘者熟悉或精通Active Directory。但域对初学者来说显得复杂了一些,众多的技术术语,例如Active Directory,站点,组策略,复制拓扑,操作主机角色,全局编录….很多初学者容易陷入这些技术细节而缺少了对全局的把握。从今天开始,我们将推出Active Directory系列博文,希望对广大学习AD的朋友有所帮助。
今天我们谈论的第一个问题就是为什么需要域这个管理模型?众所周知,微软管理计算机可以使用域和工作组两个模型,默认情况下计算机安装完操作系统后是隶属于工作组的。我们从很多书里可以看到对工作组特点的描述,例如工作组属于分散管理,适合小型网络等等。我们这时要考虑一个问题,为什么工作组就不适合中大型网络呢,难道每台计算机分散管理不好吗?下面我们通过一个例子来讨论这个问题。
假设现在工作组内有两台计算机,一台是服务器Florence,一台是客户机Perth。服务器的职能大家都知道,无非是提供资源和分配资源。服务器提供的资源有多种形式,可以是共享文件夹,可以是共享打印机,可以是电子邮箱,也可以是数据库等等。现在服务器Florence提供一个简单的共享文件夹作为服务资源,我们的任务是要把这个共享文件夹的访问权限授予公司内的员工张建国,注意,这个文件夹只有张建国一个人可以访问!那我们就要考虑一下如何才能实现这个任务,一般情况下管理员的思路都是在服务器上为张建国这个用户创建一个用户账号,如果访问者能回答出张建国账号的用户名和密码,我们就认可这个访问者就是张建国。基于这个朴素的管理思路,我们来在服务器上进行具体的实施操作。
首先,如下图所示,我们在服务器上为张建国创建了用户账号。
2
然后在共享文件夹中进行权限分配,如下图所示,我们只把共享文件夹的读权限授予了用户张建国。
3
好,接下来张建国就在客户机Perth上准备访问服务器上的共享文件夹了,张建国准备访问资源Florence人事档案,服务器对访问者提出了身份验证请求,如下图所示,张建国输入了自己的用户名和口令。
如下图所示,张建国成功地通过了身份验证,访问到了目标资源。
4
看完了这个实例之后,很多朋友可能会想,在工作组模式下这个问题解决得很好啊,我们不是成功地实现了预期目标嘛!没错,在这个小型网络中,确实工作组模型没有暴露出什么问题。但是我们要把问题扩展一下!现在假设公司不是一台服务器,而是500台服务器,这大致是一个中型公司的规模,那么我们的麻烦就来了。如果这500台服务器上都有资源要分配给张建国,那会有什么样的后果呢?由于工作组的特点是分散管理,那么意味着每台服务器都要给张建国创建一个用户账号!张建国这个用户就必须痛不欲生地记住自己在每个服务器上的用户名和密码。而服务器管理员也好不到哪儿去,每个用户账号都重新创建500次!如果公司内有1000人呢?我们难以想象这么管理网络资源的后果,这一切的根源都是由于工作组的分散管理!现在大家明白为什么工作组不适合在大型的网络环境下工作了吧,工作组这种散漫的管理方式和大型网络所要求的高效率是背道而驰的。
既然工作组不适合大型网络的管理要求,那我们就要重新审视一下其他的管理模型了。域模型就是针对大型网络的管理需求而设计的,域就是共享用户账号,计算机账号和安全策略的计算机集合。从域的基本定义中我们可以看到,域模型的设计中考虑到了用户账号等资源的共享问题,这样域中只要有一台计算机为公司员工创建了用户账号,其他计算机就可以共享账号了。这样就很好地解决刚才我们提到的账号重复创建的问题。域中的这台集中存储用户账号的计算机就是域控制器,用户账号,计算机账号和安全策略被存储在域控制器上一个名为Active Directory的数据库中。
上述这个简单的例子说明的只是域强大功能的冰山一角,其实域的功能远远不止这些。从下篇博文我们将开始介绍域的部署以及管理,希望大家在使用过程中逐步增加感性认识,对域有更加深入及全面的了解,能够掌握好Active Directory这个微软工程师必备的重要知识点。
5
部署第一个域:Active Directory系列之二
在上篇博文中我们介绍了部署域的意义,今天我们来部署第一个域。一般情况下,域中有三种计算机,一种是域控制器,域控制器上存储着Active Directory;一种是成员服务器,负责提供邮件,数据库,DHCP等服务;还有一种是工作站,是用户使用的客户机。我们准备搭建一个基本的域环境,拓扑如下图所示,Florence是域控制器,Berlin是成员服务器,Perth是工作站。
部署一个域大致要做下列工作: 1 DNS前期准备 2 创建域控制器 3 创建计算机账号 4 创建用户账号
6
一 DNS前期准备
DNS服务器对域来说是不可或缺的,一方面,域中的计算机使用DNS域名,DNS需要为域中的计算机提供域名解析服务;另外一个重要的原因是域中的计算机需要利用DNS提供的SRV记录来定位域控制器,因此我们在创建域之前需要先做好DNS的准备工作。那么究竟由哪台计算机来负责做DNS服务器呢?一般工程师有两种选择,要么使用域控制器来做DNS服务器,要么使用一台单独的DNS服务器。我一般使用一台独立的计算机来充当DNS服务器,这台DNS服务器不但为域提供解析服务,也为公司其他的业务提供DNS解析支持,大家可以根据具体的网络环境来选择DNS服务器。
在创建域之前,DNS服务器需要做好哪些准备工作呢?
1 创建区域并允许动态更新
首先我们要在DNS服务器上创建出一个区域,区域的名称和域名相同,域内计算机的DNS记录都创建在这个区域中。我们在DNS服务器上打开DNS管理器,如下图所示,右键单击正向查找区域,选择新建一个区域。出现新建区域向导后,点击下一步继续。
7
区域类型选择“主要区域”。
区域名称和域名相同,是adtest.com。
8
区域一定要允许动态更新,因为在创建域的过程中需要向DNS区域中写入A记录,SRV记录和Cname记录。
区域创建完毕,点击完成结束创建。
9
2检查NS和SOA记录
区域创建完成后,一定要检查一下区域的NS记录和SOA记录。在前面的DNS课程中,我们已经介绍了NS记录和SOA记录的意义,NS记录描述了有多少个DNS服务器可以解析这个区域,SOA记录描述了哪个DNS服务器是区域的主服务器。如果NS记录和SOA记录出错,域的创建过程中就无法向DNS区域中写入应有的记录。在DNS服务器上打开DNS管理器,在adtest.com区域中检查ns记录,如下图所示,我们发现ns记录不是一个有效的完全合格域名,我们需要对它进行修改。
如下图所示,我们把ns记录改为 ns.adtest.com.,解析出的IP地址和DNS服务器的IP是吻合的,这样我们就完成了ns记录的修改。
10
如下图所示,我们把区域的SOA记录也同样进行修改,现在区域的主服务器是ns.adtest.com.,这样SOA记录也修改完毕了。
至此,DNS准备工作完成,我们接下来可以部署域了。
11
二 创建域控制器
有了DNS的支持,我们现在可以开始创建域控制器了,域控制器是域中的第一台服务器,域控制器上存储着Active Directory,可以说,域控制器就是域的灵魂。我们准备在Florence上创建域控制器,首先检查Florence网卡的TCP/IP属性,注意,Florence应该使用192.168.11.1作为自己的DNS服务器。因为我们刚刚在192.168.11.1上创建了adtest.com区域。
如下图所示,在Florence上运行Dcpromo,开始域控制器的创建。
12
如下图所示,出现Active Directory安装向导,创建域控制器其实就是在Florence上安装一个Active Directory数据库,点击下一步继续。
Adtest.com是一个新创建的域,因为我们选择创建“新域的域控制器”。
13
如下图所示,我们选择创建一个“在新林中的域”,这个选项是什么意思呢?我们虽然只是简单地创建了一个域,但其实从逻辑上讲是创建了一个域林。因为域一定要隶属于域树,域树一定要隶属于域林。因为我们实际上是创建了一个域林,虽然这个域林内只有一棵域树,域树内只有一个树根。
输入域的DNS名称,adtest.com。
14
域的NETBIOS名称是ADTEST,由于.在NETBIOS名称中是非法字符,因为基本上域的NETBIOS名称就是域名中.之前的部分。
Active Directory数据库的路径我们使用了默认值,如果在生产环境,可以考虑把数据库和日志部分分开存储。
15
Sysvol文件夹的路径我们也使用默认值,至于Sysvol文件夹是干嘛的,我们后续会有介绍。
接下来Active Directory的安装向导会对DNS服务器进行检测,检查是否在DNS服务器上已经创建了和域名相同的区域,而且区域是否允许动态更新。如下图所示,DNS检测通过。注意,如果DNS检测有问题,我们应该及时排除故障,而不应该继续向下进行。
16
接下来要选择用户和组的默认权限,我们选择了不允许匿名用户查询域中的信息。
设置一下还原模式的管理员口令,我们从备份中恢复Active Directory时需要用到。
好,如下图所示仔细检查一下创建域的各项设置是否正确,如果没有问题我们就开工了!17
如下图所示,Active Directory安装向导开始在Florence上安装Active Directory。
如下图所示,重启计算机后即可完成Active Directory的安装。
18
重启Florence后我们发现已经可以用域管理员的身份登录了,adtest.com域已经被成功创建了。
检查DNS服务器,我们发现DNS区域中已经自动创建了很多记录,这些记录的作用以后我们再来分析,现在大家只要注意检查一下创建域时有没有把这些记录创建出来,如果没有那就有问题了。
19
至此,我们完成了域控制器的创建,adtest.com域诞生了!
三 创建计算机账号
创建计算机账号就是把成员服务器和用户使用的客户机加入域,这些计算机加入域时会在Active Directory中创建计算机账号。创建计算机账号从操作上看非常简单,但其实背后涉及的东西很多,例如域控制器和加入域的计算机要共享一个密钥等等,这些内容我们在后期会为大家介绍。
以Berlin为例为大家介绍如何把计算机加入域,首先要确保Berlin已经使用了192.168.11.1作为自己的DNS服务器,否则Berlin无法利用DNS定位域控制器。
20
如下图所示,在Berlin的计算机属性中切换到“计算机名”标签,点击“更改”。
21
我们选择让Berlin隶属于域,域名是adtest.com。
这时系统需要我们输入一个有权限在Active Directory中创建计算机账号的用户名和口令,我们输入了域管理员的用户名和密码。
系统弹出一个窗口欢迎Berlin加入域,这时在Florence上打开Active Directory用户和计算机,如下图所示,我们发现Berlin的计算机账号已经被创建出来了。
22
四 创建用户账号
创建完计算机账号后,我们需要为企业内的员工在Active Directory中创建关联的用户账号。首先我们应该在Active Directory中利用组织单位展示出企业的管理架构,如下图所示,我们为大家演示一下如何创建一个组织单位。打开Active Directory用户和计算机,选择新建组织单位。
23
输入组织单位的名称,点击确定后一个组织单位就创建完成了,是不是很简单呢。
创建了组织单位后,我们就可以在组织单位中创建用户账号了,如下图所示,我们在人事部的组织单位中选择新建一个用户。
24
输入用户的姓名及登录名等参数,点击下一步继续。
输入用户密码,选择“密码永不过期”。
点击完成后我们就可以轻松地创建出一个用户账号。其实,用户账号中有很多的配置工作需要做,我们在后续的课程中会有一个专题为大家介绍。
25
目前为止,我们已经创建了一个域,也在域中创建了计算机账号和用户账号。那么,域的管理优势如何能够加以体现,目前这个域模型有没有什么缺陷呢?我们在下篇博文中将解决这个问题。
26
用备份进行Active Directory的灾难重建:Active Directory系列之三
上篇博文中我们介绍了如何部署第一个域,现在我们来看看我们能够利用域来做些什么。域中的计算机可以共享用户账号,计算机账号和安全策略,我们来看看这些共享资源给我们在分配网络资源时带来了哪些改变。实验拓扑如下图所示,我们现在有个简单的任务,要把成员服务器Berlin上一个共享文件夹的读权限分配给公司的员工张建国。上次我们实验时已经为张建国创建了用户账号,这次我们来看看如何利用这个用户账号来实现资源分配的目标。
如下图所示,我们在成员服务器Berlin上右键点击文件夹Tools,选择“共享和安全”,准备把Tools文件夹共享出来。
27
把Tools文件夹共享出来,共享名为Tools,同时点击“权限”,准备把Tools文件夹的读权限只分配给张建国。
28
Tools文件夹的默认共享权限是Everyone组只读,我们删除默认的权限设置,点击添加按钮,准备把文件夹的读权限授予张建国。
如下图所示,我们选择adtest.com域中的张建国作为权限的授予载体,这时我们要理解域的共享用户账号的含义,在域控制器上为张建国创建了用户账号后,成员服务器分配资源时就可以使用这些用户账号了。
29
我们把Tools文件夹的读权限授予了张建国。
我们先用域管理员登录访问一下Berlin上的Tools共享文件夹,如下图所示,域管理员没有访问共享文件夹的权限。这个结果和我们的权限分配是一致的,我们只把共享文件夹的权限授予了张建国。
如下图所示,在Perth上以张建国的身份登录。
30
张建国访问Berlin上的共享文件夹Tools,如下图所示,张建国顺利地访问到了目标资源,我们的资源分配达到了预期的效果。
做完这个实验后,我们应该想一下,为什么张建国在访问共享文件夹时没有被要求身份验证呢?这是个关键问题,答案是这样的。当张建国登录时,输入的用户名和口令将送到域控制器请求验证,域控制器如果认可了张建国输入的用户名和口令,域控制器将为张建国发放一个电子令牌,令牌中描述了张建国隶属于哪些组等信息,令牌就相当于张建国的电子身份证。当张建国访问Berlin上的共享文件夹时,Berlin的守护进程会检查访问者的令牌,然后和被访问资源的访问控制列表进行比较。如果发现两者吻合,例如本例中Berlin上的共享文件夹允许域中的张建国访问,而访问者的令牌又证明了自己就是域中的张建国,那么访问者就可以透明访问资源,无需进行其他形式的身份验证。
31
我们可以设想一下基于域的权限分配,每天早晨公司员工上班后,在自己的计算机上输入用户名和口令,然后域控制器验证后发放令牌,员工拿到令牌后就可以透明地访问域中的各种被授权访问的资源,例如共享打印机,共享文件夹,数据库,电子邮箱等。员工除了在登录时要输入一次口令,以后在访问资源时都不需要再输入口令了,这种基于域的资源分配方式是不是非常的高效灵活呢?
但是,我们要考虑一个问题,万一这个域控制器坏了怎么办?!如果这个域控制器损坏了,那用户登录时可就无法获得令牌了,没有了这个令牌,用户就没法向成员服务器证明自己的身份,嘿嘿,那用户还能访问域中的资源吗?结果不言而喻,整个域的资源分配趋于崩溃。这个后果很严重,那我们应该如何预防这种灾难性的后果呢?我们可以考虑对活动目录进行备份以及部署额外域控制器,今天我们先看如何利用对Active Directory的备份来实现域控制器的灾难重建。
如果只有一个域控制器,那么我们可以利用Windows自带的备份工具对Active directory进行完全备份,这样万一这个域控制器有个三长两短,备份可以帮助我们从困境中解脱出来。
在Florence上依次点击 开始-程序-附件-系统工具-备份,如下图所示,出现了备份还原向导,点击下一步继续。
32
选择备份文件和设置。
不用备份计算机上的所有信息,我们只备份Active Directory,因此我们手工选择要备份的内容。
33
如下图所示,我们选择备份System State,System State中包含了Active Directory。其实我们只需要System State中的Active Directory,Registry和Sysvol就够了,但备份工具中不允许再进行粒度更细致的划分,因此我们选择备份整个System State。
我们把System State备份在C:ADBAK目录下。
34
点击完成结束备份设置。
如下图所示,备份开始,等备份完成后我们把备份文件复制到文件服务器进行保存即可。
35
好,备份完成后,我们假设域控制器Florence发生了物理故障,现在我们用另外一台计算机来接替Florence。如下图所示,我们把这台新计算机也命名为Florence,IP设置和原域控制器也保持一致,尤其是一定要把DNS指向为ADTEST.COM提供解析支持的那个DNS服务器,在此例中就是192.168.11.1。而且新的计算机不需要创建Active Directory,我们从备份中恢复Active Directory即可。
36
从文件服务器上把System State的备份复制到新的Florence上,然后启动备份工具,如下图所示,选择下一步继续。
37
这次我们选择还原文件和设置。
如下图所示,通过浏览按钮选择要还原的文件是C:ADBAKBACKUP.BKF,备份工具显示出了BACKUP.BKF的编录内容,勾选要还原的内容是System State,选择下一步继续。
38
还原设置完毕,点击完成结束。
如下图所示,还原开始,还原结束后我们重新启动计算机即可Active Directory的重建工作。
39
重新启动Florence后,如下图所示,我们发现Active Directory已经恢复了。
Florence的角色也发生了改变。
40
尝试让域用户进行登录,一切正常,至此,Active Directory恢复完成!
如果域中唯一的域控制器发生了物理故障,那整个域的资源分配就要趋于崩溃,因此我们很有必要居安思危,未雨绸缪。使用用备份工具对Active Directory数据库进行备份,然后在域控制器崩溃时利用备份内容还原Active Directory是工程师经常使用的灾难恢复手段。这种方案简单易行,很适合小型企业使用,希望大家都能掌握这种基础手段。下次我们将介绍通过部署额外域控制器来解决Active Directory的容错和性能问题。
41
部署额外域控制器,Active Directory系列之四
在前面的博文中我们介绍了域控制器在进行网络资源分配时的核心作用,而且我们分析了一下一
旦域控制器崩溃会导致的灾难场景,上篇博文中我们提出使用对AD数据备份的方法来进行域控制器的灾难重建,今天我们介绍使用额外域控制器来避免域的崩溃。
如果域中只有一台域控制器,一旦出现物理故障,我们即使可以从备份还原AD,也要付出停机等待的代价,这也就意味着公司的业务将出现停滞。部署额外域控制器,指的是在域中部署第二个甚至更多的域控制器,每个域控制器都拥有一个Active Directory数据库。使用额外域控制器的好处很多,首先是避免了域控制器损坏所造成的业务停滞,如果一个域控制器损坏了,只要域内其他的域控制器有一个是工作正常的,域用户就可以继续完成用户登录,访问网络资源等一系列工作,基于域的资源分配不会因此停滞。使用域控制器还可以起到负载平衡的作用,如果公司内只有一个域控制器,而公司用户达到上万人,假设域控制器处理一个用户登录的时间是0.1秒,那最后一个用户登录进入系统肯定要遭遇一定的延迟。如果有额外域控制器,那么每个额外域控制器都可以处理用户的登录请求,用户就不用等待那么长时间了。尤其是如果域的地理分布跨了广域网,例如域内的计算机有的在北京,有的在上海,有的在广州,那么显然上海用户的登录请求通过低速的广域网提交到北京的域控制器上进行验证不是一个效率高的办法,比较理想的办法是在北京,上海,广州都部署额外域控制器以方便用户就近登录。
域中如果有多个域控制器,那么每个域控制器上都拥有Active Directory数据库,而且域控制器上的Active Directory内容是动态同步的,也就是说,任何一个域控制器修改了Active Directory,其他的域控制器都要把这个修改作用到自己的Active Directory上,这样才能保证Active Directory数据的完整性和唯一性。否则如果每个域控制器的Active Directory内容不一致,域控制器的权威性就要受到质疑了。
提到这里,顺便说一下主域控制器这个名词,很多朋友喜欢把域内的第一台域控制器称为主域控
制器,其他的额外域控制器称为辅域控制器,严格来说这种说法并不严谨。主域控制器这个术语在NT4的环境下是成立的,因为NT4的域把域控制器分为两类,主域控制器和备份域控制器。两者的区别在于只有主域控制器才能修改域内的数据,而备份域控制器只有读取域内数据的权限,类似于DNS的主服务器和辅助服务器的区别。NT4的这种结构我们称之为单主复制,而自从Win2000使用了Active Directory之后,所
42
有的域控制器都可以自主地修改Active Directory数据库的内容,现在的域结构我们称之为多主复制。因此,Win2003域中的第一台域控制器我们称之为主域控制器是不太严谨的,虽然事实上第一台域控制器比其他的域控制器承担了更多的任务。
这次实验我们准备在域中部署一个额外域控制器,额外域控制器的角色由Firenze来承担,拓扑如下图所示,DNS服务器仍然是由一台单独的计算机192.168.11.1来承担。
首先我们要在Firenze上设置TCP/IP的属性,如下图所示,我们要确保Firenze使用的DNS服务器是正确的,因为Firenze要依靠DNS服务器来定位域控制器。Firenze不用先加入域,Firenze是工作组内的一台独立计算机也是可以的。
43
在Firenze上运行Dcpromo,如下图所示。
出现Active Directory的安装向导,点击下一步继续。
44
这次我们选择创建现有域的额外域控制器,点击下一步继续。
输入域管理员账号,用以证明自己有权限完成额外域控制器的部署。
45
Firenze将成为adtest.com域的额外域控制器。
Active Directory数据库的存储路径使用默认值即可。
46
Sysvol文件夹的存储路径也可以使用默认值。
输入目录服务还原模式的管理员密码,以后我们从备份还原Active Directory时可以用到。
47
确认所有的设置无误,点击下一步继续。
如下图所示,Firenze通过网络从第一个域控制器Florence那里复制Active Directory到本机。
48
Active Directory安装完毕,点击完成后Firenze会重新启动,至此,额外域控制器部署结束。
Firenze部署完毕后,我们打开Firenze上的Active Directory用户和计算机,如下图所示,我们可以看到Firenze已经把Florence的Active Directory内容复制了过来。
49
检查DNS服务器,可以看到DNS中已经有了Firneze的SRV记录。
至此,部署Firenze作为额外域控制器成功完成,从过程来看并不复杂。现在我们请大家考虑一个问题,Florence和Firenze是现在域中的两个域控制器,Florence和Firenze的Active Directory内容应该完全一致,但如果现在Florence和Firenze的Active Directory内容出现了差异,那应该以哪个域控制器的内容为主呢?问题的答案将在下篇博文中揭晓。
50
Active Directory的主要还原,Active Directory系列之五
在上篇博文中我们介绍了如何在域中部署额外域控制器,额外域控制器有很多好处,例如可以平衡用户对AD的访问压力,有利于避免唯一的域控制器损坏所导致域的崩溃。从上篇博文中我们得知,域内所有的域控制器都有一个内容相同的Active Directory,而且Active Directory的内容是动态平衡的,也就是说任何一个域控制器修改了Active Directory,其他的域控制器都会把这个Active Directory的变化复制过去。
今天我们要考虑这么一个问题,如果域中有多个域控制器,但他们所拥有的Active Directory内容不一致,那么应该以哪个域控制器的Active Directory内容为准?有的朋友可能会疑惑,怎么会出现这种情况呢?其实假如有个域控制器由于更换硬件导致有几天时间没有在线,而其他的域控制器在这段时间对Active Directory进行了修改,那么当这个域控制器重新上线时就会出现我们所提到的这种情形。
当域控制器们发现彼此的Active Directory的内容不一致,他们就需要分析一下Active Directory的优先级,从而决定以哪个域控制器的Active Directory内容为准。Active Directory的优先级比较主要考虑三方面因素,分别是:
1 版本号
2 时间
3 GUID
版本号指的是Active Directory对象的修改次数,版本号高者优先。例如域中有两个域控制器A和B,A域控制器上的用户administrator口令被修改了4次,最后被改为12345;B域控制器上的用户administrator口令被修改了5次,最后被改为123456。那么A和B发现他们的Active Directory中administrator口令不一致,这时A和B会分析版本号,发现版本号分别是4和5,这时A就会把B的Active Directory内容复制到本机的Active Direcotry中。经过这么一轮复制后,A和B的Active Directory内容就达到了新的平衡,他们Active Directory中所有对象的版本号也都完全一致了。
51
如果A和B两个域控制器都是对administrator口令修改了4次,那么版本号就是相同的。这种情况下两个域控制器就要比较时间因素,看哪个域控制器完成修改的时间靠后,时间靠后者优先。这里我们顺便提及一下,Active Directory中时间是个非常重要的因素,域内计算机的时间误差不能超过5分钟,而且Active Directory还有一个墓碑时间的限制,这些我们以后再详细加以说明。
如果A和B两个域控制器的版本号和时间都完全一致,这时就要比较两个域控制器的GUID了,显然这完全是个随机的结果。一般情况下时间完全相同的非常罕见,因此GUID这个因素只是一个备选方案。
说了这么多的Active Directory优先级原理,我们引入一个具体的例子让大家加深理解。如下图所示,域中有两个域控制器Florence和Firenze。现在域中有一个用户张建国,我们在Firenze上对Active Directory已经进行了备份。现在我们在Florence上不小心把张建国误删除了,显然Firenze会很快把Active Directory中的张建国也删除,以便和Florence的Active Directory保持一致。那么我们应该怎么做才能把张建国给恢复回来呢?
很多朋友会很自然地想到利用Firenze上的Active Directory备份来解决这个问题,既然备份中有张建国,那么把备份还原回来不就OK了吗?这个问题没这么简单,如果域中只有一个域控制器,那么用备份还原是成立的。但现在域中有两个域控制器,我们就要好好考虑一下了。Firenze从备份还原后,Florence和Firenze的Active Directory内容就不一样了,那么Florence和Firenze的Active Directory哪个优先级更高呢?哦,不对,似乎是Florence的版本号更高一些!那我们就可以从理论上得出结论,Firenze从备份还原之后,Active Directory中已经拥有了张建国的用户账号,但Firenze和Florence比较了Active Directory之后,Firenze认为Florence的Active Directory比自己的优先级高,因此Firenze会把Florence的Active Directory复制过来,这样一来,刚被还原的张建国肯定会被重新删除掉!
难道我们对此就无能为力了吗?不是的,在Firenze从备份还原Active Directory之后,我们可以利用一个工具NTDSUTIL.EXE来修改Active Directory对象的版本号,让Firenze的版本号大于Florence的版本号,这样我们就可以利用游戏规则顺利地达到目的了。这种还原方式我们称为主要还原,下面我们通过一个实例为大家演示一下具体过程。
现在的场景是Firenze已经对Active Directory进行了备份,备份中包含了域用户张建国。在备份之后我们误删除了张建国,现在我们在Firenze上开始利用备份进行主要还原。首先在Firenze上重启计算
52
机,BIOS自检后按下F8,如下图所示,选择进入目录服务还原模式。目录服务还原模式可以把Active Directory挂起,适合我们从备份还原Active Directory。
进入目录服务还原模式后,我们从附件中启动备份工具,如下图所示,选择下一步继续。
53
选择还原文件和设置。
选择从备份还原Active Directory。
54
点击确定开始Active Directory的还原。
如下图所示,还原结束后,千万别选择重启计算机,我们还没有修改Active Directory的版本号呢,确保选择“否”。
还原结束后在Firenze的命令提示符下运行NTDSUTIL,如下图所示。
55
运行了NTDSUTIL后,我们可以输入?来获取当前环境下的可执行命令帮助,如下图所示,我们运行Authoritative restore来修改AD对象的版本号。
56
如下图所示,我们可以简单地运行restore database,这样整个AD内所有对象的版本号都将加到最大,版本号加到最大是什么含义呢?微软规定,AD对象的版本号每天最多可以增加10万。在本例中我们不需要把AD中所有对象的版本号都增加到最大,只要修改张建国的版本号就可以了。因此我们可以使用Restore Object命令只针对张建国的版本号进行修改,那如何在AD中表示张建国呢?按照目录对象的命名规范,张建国隶属于ADTEST.COM域中的人事部组织单位,那我们描述张建国就应该使用cn=张建国,ou=人事部,dc=adtest,dc=com。如下图所示,我们输入修改指令后观察一下运行的效果。
系统询问是否执行授权还原,我们选择“是”。
57
如下图所示,授权还原成功完成,用quit命令退出NTDSUTIL。
授权还原结束后我们重启Firenze,如下图所示,Firenze的AD中已经重新拥有了用户张建国,修改版本号成功了。
58
离线部署额外域控制器,Active Directory系列之六
在上篇博文中我们介绍了部署额外域控制器的意义,同时介绍了如何在线部署额外域控制器,也就是额外域控制器通过网络以在线方式从复制伙伴那里获取Active Directory数据。在线部署额外域控制器是我们部署额外域控制器时的首选,它方便易行,在拥有快速网络连接的环境下使用非常合适。但我们也要考虑另外一种场景,域控制器之间是通过低速网络连接的!如果域控制器之间的网络质量不理想,例如有的域控制器需要部署到非洲,那我们就不能希望获得一个高速,稳定,可靠的通讯网络。在这种情况下,如果我们还使用在线方式部署额外域控制器,就有可能事倍功半!那我们遇到这种情况应该如何解决呢?我们可以考虑使用离线方式来部署额外域控制器,也就是说额外域控制器在复制Active Directory时不通过网络从其他的域控制器复制,而是从Active Directory的离线文件复制,这样就可有效避免对网络环境的依赖。
那我们如何获得Active Directory的离线文件呢?我们可以从Active Directory的备份中得到。具体是这样的,我们对Active Directory备份之后,把离线部署额外域控制器所需要的文件从备份中提取出来,然后通过各种手段传送到需要部署额外域控制器的计算机上。例如我们可以把离线文件刻录到光盘上,然后在出差时带过去;或者可以放在一个支持断线续传下载的服务器上,让对方通过网络慢慢下载。对方得到了Active Directory的离线文件后,就可以通过Dcpromo来调用离线文件从而完成额外域控制器的部署。
我们通过一个具体实例加以说明,实验拓扑如下图所示,Florence是域控制器,Firenze是准备用离线方式部署的额外域控制器。
具体的部署过程分为下列两个阶段:
1、 获得Active Directory的离线文件
2、 离线部署额外域控制器
一 获得Active Directory的离线文件
首先我们在域控制器Florence上对Active Directory进行备份,备份工具使用系统自带的NTBACKUP,具体的备份过程参见前期博文,在此不在赘述。Active Directory的离线数据来源于对Active
59
Directory的备份,但大家要注意的是,由于NTBACKUP备份的粒度并不太细致,因此我们对System State进行备份时,还备份了除Active Directory之外的其他内容。如下图所示,我们发现备份的System State的内容分为五部分,分别是Active Directory,Boot Files,COM+ Class Registration Database,Registry和SYSVOL。其实我们用离线方式部署额外域控制器,只需要Active Directory,Registry和SYSVOL三部分即可。
下图是备份System State后生成的备份文件,我们可以看到备份文件的大小是480M左右,其实其中只有少部分数据是我们需要的。
60
如下图所示,千万不要选择完成,一定要点击“高级”按钮进行设置,否则系统会把备份文件还原到原位置。
我们不能把备份还原到原位置,而是应如下图所示还原到备用位置,我们选择的备用位置是C:ADBAK,这其实就是把备份文件中的内容展开到C:ADBAK中。
61
还原选项使用默认值即可。
仍然保留默认设置。
62
如下图所示,还原顺利完成。
看看展开后的备份文件是什么内容,如下图所示,我们可以看到备份文件被展开成了五个目录,每个目录存储备份中的一部分内容。离线部署其实只需要Active Directory,Registry和SYSVOL三个文件夹的内容,这三个文件夹的数据大概是40M左右,相比较备份文件的480M体积确实缩水了不少。我们把这三个文件夹的内容传送到要部署成额外域控制器的计算机上,至此结束了Active Directory离线文件的准备。
63
我们准备从备份中提取Active Directory的离线数据,我们使用的工具还是NTBACKUP-系统自带的备份工具,如下图所示,我们在Florence上启动NTBACKUP后,选择“还原文件和设置”。
选择对System State的备份文件进行还原,从编录结果中我们可以看到System State的备份中包含了五部分内容。
64
二 离线部署额外域控制器
拿到了Active Directory的离线文件后,我们就可以在Firenze上部署额外域控制器了,如下图所示,我们在Firenze上运行 Dcpromo /adv。
出现Active Directory安装向导,点击下一步继续。
65
选择成为额外域控制器。
选择从备份文件复制Active Directory,备份文件的路径是C:ADBAK,里面包括了从Florence复制来的三个文件夹,Active Directory,Registry和SYSVOL。
66
是否将Firenze设置成全局编录取决于实际需求,在此实验中我们不需要把Firenze配置成全局编录服务器。
输入域管理员的口令用以在Firenze上创建Active Directory。
67
输入还原模式口令,下一步继续。
如下图所示,Firenze上开始离线部署额外域控制器。
68
Active Directory创建完成,重启后就可以发现Firenze已经成为了域控制器,至此,利用备份离线部署额外域控制器顺利完成!
69
Active Directory的脱机碎片整理,Active Directory系列之七
Active Directory是一个被设计用于查询的非关系型数据库,Active Directory使用一段时间后,需要对数据库内容进行维护,以减少数据碎片及提高查询效率,今天我们就为大家介绍一下如何对Active Directory的数据库进行离线维护。
Active Directory创建时默认的数据库及事务日志的存放路径是C:WindowsNTDS,我们打开前文中创建的域控制器Florence,定位到C:WindowsNTDS目录下,先来了解一下下图中各文件的作用。其中的NTDS.DIT是Active Directory的数据库文件,EDB.LOG是事务日志文件,事务日志文件记录了数据库内容的变更,非常重要。默认的事务日志文件大小只有10M,如果事务日志文件已经记录满了,系统就会自动地生成edb00001.log用以继续存储事务日志,如果edb00001.log也存满了,就会接下来生成edb00002.log,以此类推。顺便提一下,在生产环境下,我们应该把数据库文件和事务文件分开存储,这样既可以提高性能,也可以增加数据安全性,但Win2003要求Active Directory的数据库和事务日志都存储在同一个硬盘上,不像Win2000中Active Directory的数据库和事务日志可以存储在不同的硬盘上。
EDB.CHK是事务日志的检查点文件,记录了硬盘上的Active Directory和内存中Active Directory在内容上的差异,一般此文件用于Active Directory的初始化或还原。RES1.LOG和RES2.LOG是系统保留的事务日志文件,这两个文件一共占用了20M空间,主要目的就是为了给Active Directory的事务日志预留20M空间,避免当硬盘空间用光后无法正常关机。
70
Active Directory使用一段时间后,会产生数据碎片,表现为Active Directory占用的空间增大,响应速度降低,这时就需要对Active Directory做一些碎片整理了。Active Directory的碎片整理分为在线和离线两部分,默认情况下在线整理会12小时进行一次。在线整理的好处是在数据库维护的过程中不需要关闭Active Directory,用户不会受到影响;缺点是在线整理只能在已分配的数据库空间内进行碎片整理,无法减少数据库占用的空间。如果Active Directory的规模不大,数据变更不频繁,我们使用默认的在线整理也就可以了。如果Active Directory的数据库很大,达到上G的规模,而且数据频繁更改,这时我们就要使用今天提到的离线维护了。离线维护需要对Active Directory进行脱机处理,然后再进行Active Directory的碎片整理,这个过程中Active Directory无法使用,基于AD的业务系统会受到影响,因此建议在工作空闲时间例如晚上进行。Active Directory进行脱机碎片处理后,可以有效地减少Active Directory数据库的大小,提高查询速度,有的单位经过第Active Directory进行脱机碎片处理后,可以把Active Directory的大小从11G降为6G!因此对Active Directory更新频繁,而且Active Directory内包含海量数据的单位来说,离线维护还是很有必要做的。
如何才能对Active Directory进行离线的脱机碎片整理呢?我们以域控制器Florence举例为大家演示应该如何操作,首先我们在Florence上要进入目录服务还原模式,在这个模式下,Active Directory将被脱机挂起,然后我们就可以对离线的Active Directory数据库进行处理了。如下图所示,我们重启Florence,然后在自检结束后按F8键选择进入“目录服务还原模式”。
71
进入目录服务恢复模式后,我们输入命令 NTDSUTIL,如下图所示,我们将使用NTDSUTIL对Active Directory进行碎片整理。
如下图所示,我们在NTDSUTIL中输入Files。
72
如下所示,我们输入Compact To C:,意思是对Active Directory数据库清理碎片后压缩到C盘的根目录下,这样我们将在C盘的根目录下得到一个消除了Active Directory碎片的Ntds.dit。
如下图所示,大家可以发现真正压缩Active Directory的是esentutl.exe,这个工具大家以后也会经常使用,而且大家会在Exchange中发现有类似的工具,这主要是因为Active Directory,Exchange,WINS等服务器都使用了类似的非关系型数据库引擎。
73
如下图所示,压缩成功后我们用新的ntds.dit覆盖了原来的Active Directory数据库文件,同时删除了原有的日志文件,但仍然保留edb.chk文件。
如下图所示,这就是我们进行碎片整理后的Active Directory文件,如果在一个大型网络中,经过这种离线整理后可以很明显地看出对磁盘空间的释放。
对Active Directory进行脱机碎片处理只能在单台域控制器上分别进行,对Active Directory压缩不会影响Active Directory现有数据,也不会影响Active Directory的复制。
74
Active Directory的复制拓扑,Active Directory系列之八
在前面的博文中我们在域中部署了额外域控制器,而且我们已经知道每个域控制器都有一个内容相同的Active Directory数据库,今天我们要讨论一下额外域控制器在进行Active Directory复制时所使用复制拓扑。
在NT4的时代,域控制器被分为两类,PDC和BDC。PDC是主域控制器的缩写,BDC是备份域控制器的缩写。每个域中只能有一个PDC,BDC可以有多个,BDC的目录数据是从PDC复制而来。只有PDC才可以更改域中的用户账号,计算机账号等目录数据,BDC的内容是只读的!这种复制模型我们称为单主复制,这种模型我们并不陌生,类似于DNS服务器的辅助服务器和主服务器的关系。单主复制模型比较简单,管理难度不大,但较容易构成单点故障。
从Win2000开始,Active Directory开始使用多主复制的模型,也就是说每个域控制器都可以自主地修改Active Directory的内容,域中不再有PDC和BDC的区别了。Win2003使用了和Win2000同样的多主复制模型,而Win2008则在多主复制的基础上又增加了一个RODC,也就是只读域控制器,可以看出Win2008试图在多主复制模型中增加一些单主复制的元素,因为RODC的设计理念显然和BDC是有些关联的。
现在我们知道了Win2003的Active Directory中使用了多主复制的模型,也就是任何一个域控制器都可以修改Active Directory。为了维护Active Directory的权威性,显然所有域控制器上的Active Directory内容应该都相同。那么,如果一个域控制器修改了自己的Active Directory,修改的的内容是如何复制到其他域控制器上的呢?这就是我们今天要讨论的内容,Active Directory的复制拓扑!
Active Directory的复制拓扑是一个比较复杂的问题,今天我们只讨论在同一域中域控制器之间的复制拓扑。当域中的域控制器数量发生变化,例如增加或减少了域控制器,域控制器上的进程KCC就会进行Active Directory复制拓扑的计算。KCC被翻译为知识一致性验证器,我们在任务管理器的进程列表中看不到KCC,因为它属于LSACC进程的一部分。KCC可以自动计算出域控制器进行复制时所使用的拓扑,当域控制器数量较少时,KCC倾向于在域中使用环形拓扑进行Active Directory复制,也就是说当一个域控制器的Active Directory内容发生变化时,这个更改不会同时传递给其他所有的域控制器,而是要沿着KCC设计的环形拓扑一一传递下去。而且为了实现冗余以及提高效率,KCC设计的拓扑还是双环拓扑,下图就
75
是一个域控制器的复制拓扑示意图,从图中可以看到,每个域控制器都有两个复制伙伴,Active Directory的复制沿着顺时针和逆时针两个方向进行。
域控制器复制Active Directory时,一般会使用“带通知的拉复制”,也就是说,当DC1修改了Active Directory后,DC1会在5分钟内通知自己的复制伙伴DC2,“快来,我的AD中有些新内容”。DC2收到通知后,会启动一个Active Directory的复制请求,以增量复制的方式从DC1把Active Directory复制到DC2。如果Active Directory中发生了一些紧急事件,例如用户口令被修改,那么此时域控制器将不受5分钟的时间限制,而是在最短时间内把Active Directory复制给PDC操作主机。如果一个域控制器在一个小时之内都没有收到复制伙伴发来的通知,它就会向复制伙伴发出一个查询,询问复制伙伴是否在线。
我们通过一个实例来观察一下域控制器的复制拓扑,Adtest.com域中有Florence,Firenze和Berlin三个额外域控制器,我们在Florence打开Active Directory站点和服务,可以看到每个域控制器的复制伙伴。
76
如下图所示,Florence的复制伙伴是Berlin和Firenze。
而Firenze的复制伙伴是Florence和Berlin。
77
Berlin的复制伙伴是Florence和Firenze。
看完三个域控制器的复制伙伴,我们很容易勾勒出Active Directory的复制拓扑,这是一个标准的双环拓扑,拓扑如下图所示。
78
双环拓扑非常优美,但并非适合所有场合!在域控制器较多的网络中,标准的环形拓扑就不太合适,因为域控制器复制Active Directory时有个严格的限制,那就是从源域控制器到目标域控制器不能超过三个域控制器的间隔。具体来说就是如果DC1的Active Directory发生了变化,那么DC1可以复制给DC2,DC2可以接着复制给DC3,DC3还可以复制给DC4,但DC4就不能再复制给DC5了!因为这时从DC1到DC5中间间隔的域控制器已经超过了三个。微软进行这个限制,估计是为了避免在大型网络中进行Active Directory复制时环形拓扑导致的延迟问题,试想一下,如果一个大型网络中有100个域控制器,域控制器复制的平均间隔为5分钟,那么从第一个域控制器复制到最后一个域控制器可能需要大约500分钟!这种延迟是不可接受的,因此在大型网络中KCC会使用网状拓扑,网状拓扑就不像环形拓扑那样有规律了,每个域控制器可能会有多个复制伙伴,看起来并不像环形拓扑那样有规律。域控制器的复制拓扑最好由KCC来规划,当然,也可以自己指定域控制器的复制伙伴,例如我们想指定Florence的复制伙伴,我们可以如下图所示,在Florence上选择“新建Active Directory连接”。
79
如下图所示,Florence可以从域控制器列表中选择自己的复制伙伴。这样一来,我们就完成了对Florence复制伙伴的手工指定。
域控制器的复制拓扑最好由KCC来自动计算,域控制器一旦复制拓扑出现问题,处理时需要相当的耐心,而且要结合DNS的SRV记录来进行排错,可能还需要对Active Directory数据进行手工处理。以后有机会我们会介绍一些Active Directory排错的高级工具以及实际案例供大家参考,希望大家都能够处理好这个问题。
80
详解操作主机角色,Active Directory系列之九
而且修改后的结果会被其他的域控制器所承认。从这个角度讲,域控制器之间的地位是平等的,但我们决不能认为域控制器之间是没有区别的!事实上,域中的第一个域控制器往往比其他的域控制器承担了更多的任务。
有些企业中部署了多个域控制器之后,就开始忽略第一个域控制器的作用,有时甚至可能会一不经意间把第一个域控制器给处理掉了。但这些企业的用户很快就会发现域中会出现一些异常现象,例如无法创建域用户账号,无法安装Exchange,无法部署子域等等。原因很简单,第一个域控制器承担的任务并没有被转嫁到其他的域控制器上,而这些任务对一个域来说又是不可或缺的,因此我们才会面临如此多的问题。那么,究竟第一个域控制器和其他的域控制器相比承担了哪些更多的任务呢?这就是我们今天要讨论的话题,操作主机!
操作主机是由域控制器来扮演的一种角色,操作主机角色共有五种,分别是PDC主机,RID主机,结构主机,域命名主机和架构主机,今天的这篇博文将分别介绍五种操作主机的用途。
我们先来介绍PDC主机,PDC是主域控制器的缩写,在NT4时代,域控制器被分别PDC(主域控制器)和BDC(备份域控制器),只有PDC才可以修改目录数据库,BDC的数据库是从PDC复制而来的。从Win2000开始,所有的域控制器都可以修改Active Directory了,那为什么Win2003的操作主机中还有PDC主机这个角色呢?原因是这样的,微软为了保护用户的前期投资,允许NT4服务器称为Win2003域中的额外域控制器,但NT4充当域控制器时一定要和域中的PDC联系,这种情况下PDC主机就要挺身而出,以主域控制器的身份和NT4的域控制器通讯。这就是PDC主机的第一个用途,兼容NT4服务器。
PDC主机的第二个用途是可以优先成为主浏览器,这里说的浏览器可不是上网冲浪用的浏览器,而是网络中的一种计算机角色。我们都知道打开网上邻居后可以看到当前网络中有多少台计算机,双击计算机名还可以看到这台计算机提供的共享资源。这些网络资源列表是由谁来提供呢,在微软网络中被一种称为主浏览器的计算机来提供。那么哪些计算机可以成为主浏览器呢?只要操作系统的版本在Windows workgroup 3.1以上的计算机都有机会成为主浏览器。如果一个网络中的多台计算机都希望成为主浏览器,那么这些计算机就会通过“选举”来解决问题,我们有时用抓包工具可以抓到电子选举包就和这个过程有关。每台计算机选举时首先比较操作系统版本,版本新的优先成为主浏览器,例如Win2003优于Win2000。如
81
果操作系统版本相同,再比较谁是域控制器,域控制器比普通的计算机优先。如果参与选举的有多个域控制器,那么PDC主机会优先。最后再多说一句,如果一个广播域内有多个域,而且有多个PDC操作主机,那么它们之间又如何进行主浏览器的选举呢?它们之间会通过GUID来选出最后的胜利者。
PDC主机的第三个用途就是Active Directory的优先复制权,正常情况下,Active Directory的复制周期是5分钟,但如果Active Directory中发生了一些紧急事件,例如修改了用户口令。这种情况下源域控制器就会在最短时间内通知PDC主机,由PDC主机来统一管理这些Active Directory的紧急事件。如果一台域控制器发现用户输入的口令和Active Directory中存储的口令不一致,域控制器考虑到有两种可能性,一种可能是用户输入错误,一种可能是用户输入的口令是正确的,但是自己的Active Directory还没有接收到最新的变化。域控制器为了避免自己判断错误,就会向PDC主机发出查询,请PDC主机来验证口令的正确与否,因为前面已经提到,任意一个域控制器修改了用户口令,都会在最短时间内通知PDC主机。
PDC主机除了上述的几种用途,还可用于充当域内的权威时间源,同时PDC主机也是组策略的首选存储地点。顺便提一下,PDC主机的作用级别是域级别,也就是说,在一个域中只能有一台域控制器充当PDC主机。
介绍完PDC主机的作用后,我们来介绍RID主机。RID是SID的一部分,什么是SID呢?SID是安全标识符(Security Identify)的缩写,当我们在域中创建用户账号或计算机账号时,操作系统会为被创建的账号建立一个对应的SID,也就是说,SID真正对应了用户账号或计算机账号。一个域用户对应的SID格式是这样的,S-1-5-21-D1-D2-D3-RID,S是SID的缩写,1是SID的版本号,5代表授权机构,21代表子授权,D1-D2-D3是三个数字,代表对象所在的域或计算机,RID是对象在域中或计算机中的相对号码。以大家熟悉的管理员账号为例,管理员的SID就是S-1-5-21-3855104193-3464347045-3256418734-500,其中的RID是500。
RID是SID的组成部分,RID主机的作用就是为Active Directory提供一个可用的RID池(默认500个),而且当池中的RID被消耗到一定程度后再自动补充满。如果RID主机出现故障,显然会对我们创建大量的用户账号造成麻烦。和PDC主机类似,RID主机的作用级别也是域级别。
结构主机的作用是负责对跨域对象的引用进行更新,假如A域的一个用户加入了B域的一个组,B域的结构主机就会负责关注A域的这个用户是否发生了什么变化,例如是否被删除了,结构主机的工作可以确保域间对象引用的可操作性。如果是一个单域,基本上用不着结构主机做什么工作。如果在一个多
82
域的林环境,有一点要切记,结构主机不要和GC(全局编录)放在同一台域控制器上,否则结构主机无法正常工作。结构主机的作用级别也是域级别。
下一个要介绍的操作主机是域命名主机,这个操作主机的作用级别是林级别的!域命名主机主要负责控制域林内域的添加或删除,也就是说如果在域林内添加一个新域,必须由域命名主机判断域名合法,操作才可以继续。如果域命名主机不在线,我们就无法完成域林内新域的创建。除了对域名做出诠释,域命名主机还要负责添加或删除描述外部目录的交叉引用对象。
最后我们要介绍的是架构主机,架构主机的作用级别同样是林级别。架构主机的作用非常重要,如果要修改Active Directory的架构,我们只能从架构主机上进行操作。微软的很多高级服务器产品在部署时都需要修改Active Directory的架构,例如Exchange,Office Communications Server,SMS等。以最著名的Exchange为例,如果我们在域中部署Exchange时无法在线联系上架构主机,那Exchange的部署就无法继续,MCSE的考题中曾经考过这个知识点。
从上面的介绍中我们可以看出,操作主机都有各自的职能,一旦操作主机有问题我们就会遇到种种麻烦,因此我们在下篇博文中将介绍如何转移操作主机角色以及如何夺取操作系统角色,敬请期待。
83
实战操作主机角色转移,Active Directory系列之十
我们首先要明确一个重要原则,那就是操作主机角色有且只能有一个!如果操作主机角色工作在林级别,例如架构主机和域命名主机,那在一个域林内只能有一个架构主机和域命名主机。如果操作主机角色工作在域级别,例如PDC主机,结构主机和RID主机,那就意味着一个域内只能有一个这样的操作主机角色。
我们的实验拓扑如下图所示,Adtest.com域内有两个域控制器,Florence和Firenze。Florence是域内的第一个域控制器,目前所有的操作主机角色都在Florence上,我们通过实验来介绍如何在Florence和Firenze间切换操作主机角色。
其实当我们用Dcpromo卸载域控制器上的Active Directory时,这个域控制器会自动把自己所承担的操作主机角色转移给自己的复制伙伴,这个过程完全不需要管理员的干预。但如果我们希望指定一个域控制器来负责操作主机角色,我们就需要手工操作了。我们首先为大家介绍如何用MMC控制台把五个操作主机角色从Florence转移到Firenze上。
84
一 从Florence转移到Firenze
在Florence上打开Active Directory用户和计算机,如下图所示,右键点击域名,在菜单中选择“操作主机”。
85
如下图所示,我们发现可以转移三个操作主机角色,分别是PDC主机,RID主机和结构主机,但奇怪的是,我们希望把操作主机角色从Florence转移到Firenze,但为何工具中显示的是我们只能把操作主机角色从Florence转移到Florence呢?
上述问题很容易解释,如果我们希望把Firenze作为操作主机角色转移的目标,那我们就需要把域控制器的焦点首先指向Firenze。从下图所示,在Active Directory用户和计算机中右键单击adtest.com,选择“连接到域控制器”,从域控制器列表中选择Firenze即可。
86
我们把域控制器的焦点指向Firenze后,接下来就发现可以把操作主机角色从Florence转移到Firenze了,
87
如下图所示,我们点击“更改”,准备把RID主机角色从Florence转移到Firenze。系统弹出窗口询问是否确定进行操作主机角色的转移,我们选择“是”。
通过上述过程,我们可以非常轻松地把RID主机角色从Florence转移到Firenze,如下图所示,操作主机角色的转移已经成功。用同样的方法,我们可以很轻松地把PDC和结构主机也转移到Firenze上。
88
转移了RID主机,PDC主机和结构主机后,我们来尝试一下域命名主机。在Florence上打开Active Directory域和信任关系,注意先把域控制器的焦点指向Firenze,然后如下图所示,右键单击Active Directory域和信任关系,从菜单中选择“操作主机”。
如下图所示,我们点击“更改”把域命名主机角色从Florence转移到Firenze,整个过程实现起来非常简单。
89
如下图所示,域命名主机角色已经转移到Firenze上了。
最后我们要转移的操作主机角色是架构主机,架构主机由于角色非常重要,微软甚至没有为我们预设管理工具,因此我们首先要通过注册动态链接库来获得转移架构主机所需要的管理工具。如下图所示,我们运行regsvr32 schmmgmt.dll,系统提示注册动态链接库成功。
注册了动态链接库后,我们运行MMC,在文件菜单中选择“添加/删除管理单元”,这时我们会发现可以添加一个名为“Active Directory架构”的管理单元,这就是注册了动态链接库的作用。使用这个Active Directory架构管理单元,
90
如下图所示,选择“操作主机”进行架构主机的转移,同样不要忘记在之前把域控制器焦点指向Firenze。
如下图所示,点击“更改”把架构主机角色转移到Firenze上。
91
从下图的结果来看,架构主机的转移是成功的,至此,我们完成了五个操作主机角色的转移。
二 从Firenze转移到Florence
现在五个操作主机角色都集中在Firenze上,我们再为大家介绍一种方法把操作主机角色完璧归赵,还给Florence,这种方法就是使用我们非常熟悉的工具NTDSUTIL。如下图所示,运行ntdsutil,然后输入roles,准备进行操作主机角色的转移。
92
如下图所示,在Roles状态下,我们首先要使用connections命令来连接到特定的域控制器,连接到哪个域控制器呢?应该连接到操作主机转移的目标域控制器,在我们这个例子中应该是Florence,如图所示,我们输入命令connect to server Florence。
连接到Florence后,如下图所示,我们用quit命令返回上级菜单,用?列出当前状态下的所有可执行指令,我们发现转移五个操作主机角色只需要简单执行五条命令即可,这五条指令分别是:
Transfer domain naming master 转移域命名主机
Transfer infrastructure master 转移结构主机
Transfer PDC 转移PDC主机
Transfer RID master 转移RID主机
Transfer schema master 转移架构主机
93
还有五条命令是强行把连接到的域控制器指定为操作主机角色,这个很适合在操作主机离线时进行操作,如果我们不小心把操作主机所在的域控制器给格式化了,我们就可以利用这些指令强行把一个域控制器指定为操作主机。这五条指令分别是:
Seize domain naming master 指定域命名主机
Seize infrastructure master 指定结构主机
Seize PDC 指定PDC主机
Seize RID master 指定RID主机
Seize schema master 指定架构主机
94
如下图所示,我们执行转移操作主机角色的五条指令,很轻松地把操作主机角色从Firenze又转到了Florence上。
95
在本篇博文中,我们可以利用MMC和NTDSUITL进行操作主机角色的转移,也可以在操作主机离线的情况下进行操作主机角色的指定,掌握了这些,基本上就可以应对工作中对操作主机的需求了。
96
什么是站点,Active Directory系列之十一
什么是站点
谈到Active Directory中的站点,很多Active Directory的初学者都会深感头疼,为什么呢?搞不清楚这个站点究竟是起什么作用。有很多同学都问过这样的问题,站点和域有什么区别?到底是域大还是站点大?有了域为什么还要有站点?…..本文将尝试为大家介绍站点的概念及设计初衷,让大家能够更好地理解站点,运用站点。
域是共享用户账号,计算机账号及安全策略的一组计算机,这个定义是基于逻辑因素考虑的,只要用户和计算机在同一个Active Directory内,我们就认为他们都在域的安全边界之内。我们从域的定义中可以看到,域没有考虑网络速度等物理因素,无论计算机和域控制器之间是一个快速的物理连接还是一个慢速的物理连接,域都会一视同仁,完全把连接速度视若无物。但在实际的生产环境中我们就会发现如果不考虑网速这样的物理因素,我们会在管理域时遇到很多麻烦。我们通过一个例子加以说明,如下图所示,某域的域控制器分布在北京,上海两处,北京有A,B,C三台域控制器,上海有D,E,F三台域控制器。北京和上海的本地局域网都是千兆以太网,北京和上海之间是一条128K的专线。
97
现在我们要考虑这么一个问题,如果域控制器A更改了Active Directory,那么如果才能用最有效率的方法把这个AD的变化复制到其他五个域控制器上呢?显然域控制器A应该先把更改复制到同一高速局域网内的B和C,然后再利用慢速的广域网链接复制到上海的一个域控制器上,例如复制到D,最后再由D复制到E和F。域控制器如果使用我们规划的这种复制拓扑,那当然好,在这种复制拓扑中数据只经过两地间的慢速链路传递了一次。但问题是域如果不考虑速度因素,未必能作出这种拓扑,万一KCC决定使用的复制拓扑是先从A到D,再从D到B,然后B到E,再E到C,最后从C到F,那我们就要崩溃了。这样的话六个域控制器之间的AD复制要沿着两地间的慢速链路走五次,无论如何都让我们无法接受!从这个例子中我们已经看到了速度因素的重要性,再顺着这个例子引申一下,用户每天登录到域进行身份验证,显然北京的用户应该登录到北京的域控制器,上海的用户应该登录到上海的域控制器,这样效率才会比较高,如果北京的用户每天都到上海的域控制器进行身份验证,显然不是一件好事。
从上面的例子中我们发现,在日常的运维工作中是不能把速度因素透明处理的,我们必须考虑到计算机之间的连接速度!正是基于这种考虑,微软才引入了站点对计算机进行管理。站点的概念其实很简单,站点就是高速相连的一组计算机!从这个概念来看,站点强调了速度这个物理因素,域则是强调要共享Active Directory这个逻辑因素,把站点和域结合起来对计算机从物理和逻辑两个角度进行管理,是微软的一个很好的构思。值得一提的是,微软这种管理思路并非罕见,例如Exchange中也有管理组和路由组的概念,管理组和路由组其实类似于域和站点的关系,也是一个从逻辑角度进行管理,另一个从物理角度进行管理。
有了站点帮助管理,我们处理前面提到的那个例子就容易多了,从站点的定义来看,由于北京和上海之间存在一条慢速链路,因此我们应该把北京的计算机放到一个站点内,把上海的计算机放到另一个站点内。这样的话,北京和上海的用户在登录时会优先选择本站点内的域控制器登录,KCC在规划复制拓扑时也会自动地优先考虑在本站点内的域控制器之间进行AD复制。更好的是,如果AD需要垮站点复制,AD内容还可以经过压缩后再进行复制,显然站点在设计时已经充分考虑到了对带宽的充分利用。
从理论上证明了站点的必要性,我们在下篇博文中就要付诸实践了,我们将在下篇博文中通过实例为大家介绍如何进行站点的创建及管理,敬请关注!
98
实战Active Directory站点部署与管理,Active Directory系列之十二
实验拓扑如下图所所示,adtest.com域中有四个域控制器,分别是Florence,Berlin,Firenze和Perth。其中Florence和Berlin在北京,隶属于192.168.11网段;Firenze和Perth在上海,隶属于192.168.12网段。由于北京和上海之间使用了一条64K的DDN慢速链路,因此我们有必要使用站点对域内的计算机进行合理规划,以便能够让域内的计算机在现有的带宽条件下能以最有效率的方式通讯。
99
目前四台域控制器都在一个站点中,如下图所示,就是默认的Default-First-Site-Name。根据我们本次实验的具体情况,我们需要把北京和上海的域控制器分为两个站点,为完成这个任务,我们需要进行下列操作:
一 创建站点
二 定义站点子网
三 定位服务器
四 配置站点链接器
一 创建站点
默认情况下所有的域控制器都在一个站点内,但目前我们需要两个站点,一个用于管理北京的计算机,一个用于管理上海的计算机。因此我们需要创建一个新站点,同时把原先的默认站点改名即可。首先我们先把原来的默认站点Default-First-Site-Name改名为Beijing,我们在域控制器Florence上打开Active Directory站点和服务,,如下图所示,右键点击原来的默认站点,选择“重命名”。
100
重命名后的结果如下图所示,默认站点已经改名为Beijing。
接下来我们来创建一个新站点Shanghai,如下图所示,右键点击“Sites”,选择新站点。
101
如下图所示,新站点取名为Shanghai,我们为Shanghai站点选择了一个默认的站点链接器,关于这个站点链接器的作用我们将在后面的内容中予以介绍。
Shanghai站点创建完毕后,系统提示我们要进行如下图所示的后续操作,我们接下来将按照提示实现对站点的配置。
102
二 定义站点子网
现在我们有了Beijing和Shanghai两个站点,接下来要考虑如何定义站点内的IP子网。如果不同的站点管辖了不同的IP子网,那么对域内的计算机来说是非常有利的,域控制器只要根据自己的IP地址就可以判断出自己应该隶属于哪个站点,域内的客户机登录到域时也会根据自己的IP地址来查询同一站点内的域控制器进行登录。
创建站点所属的子网并不难,如下图所示,右键单击Subnets,选择“新建子网”。
103
如下图所示,我们创建了一个子网192.168.11,然后把这个子网分配给了Beijing站点。
如法炮制,我们为Shanghai 站点创建了192.168.12子网。这样以后如果有新的域控制器加进来,域控制器根据IP地址就可以自动加入相应的站点。
104
三 定位服务器
定义了站点子网后,我们接下来就要根据每个域控制器的IP地址来把它们加入不同的站点了。我们准备把Florence和Berlin放在Beijing站点,Firenze和Perth放在Shanghai站点。如下图所示,右键单击Firenze,选择“移动”。
然后我们选择把Firenze移动到Shanghai站点。
105
用同样的方法我们把Perth也移动到Shanghai站点,移动后的域控制器分布如下图所示,BeijingShanghai站点各有两个。
106
和
四 配置站点链接器
现在我们已经配置好了站点子网,然后把域控制器放到了相应的站点中,现在我们要考虑如何配置站点链接器了。站点链接器是一个逻辑控制单元,它并不负责域控制器之间的物理连接,那应该是电信部门负责的事情,即使没有站点链接器,域内的这些处于不同城市的计算机也是可以在网络层实现联通的。链接器的作用是对不同站点间的数据传递进行控制,以便最大限度地利用好站点间的窄带链路。
有了站点之后,显然域控制器之间的AD复制应该优先在本站点内进行,然后站点会选出一个“桥头服务器”代表所在的站点和其他站点的“桥头服务器”进行通讯,这样AD的更改就可以通过两个站点间的“桥头服务器”进行跨越站点的传递。AD复制在站点内的域控制器进行时是不压缩的,而AD复制如果跨站点进行则需要压缩。跨站点的AD复制拓扑也是由大家熟悉的KCC来设计的。
我们接下来看看如何利用站点链接器来控制站点间的数据传输,目前Beijing和Shanghai两个站点间使用的是一个默认的站点间链接。如下图所示,我们打开“Active Directory站点和服务”,我们可以看到Inter-Site-Transports下面有IP和SMTP两个子项,这是告诉我们站点间数据复制可以使用IP协议或SMTP协议。一般我们都选择使用IP,如果使用IP,站点间的数据传输将使用RPC协议,这种协议可以传输AD的全部内容而SMTP则只能传输AD的部分内容。现在Beijing站点和Shanghai站点之间使用的就是基于IP的站点链接器。
107
我们打开默认的站点链接器,查看属性,如下图所示,我们在常规属性中可以看到这个站点链接器连接了Beijing和Shanghai两个站点。然后我们可以看到站点链接器的开销是100,开销反映了站点间连接速度的快慢,开销值越小,速度越快。站点间的开销是个相对值,并不具体对应实际的连接速度,因此目前两个站点间的开销值并没有太多的讨论价值,因为没法和其他站点的开销值进行比较。如果有更多的站点,那站点开销的意义就凸显出来了。例如我们现在有北京,上海和广州三个站点,其中北京和上海之间是用2M的专线连接,北京和广州之间是用64K的专线连接,上海和广州之间则用的是10M的专线。那么北京的域控制器更改了AD,如何传递给广州站点内的域控制器呢?从拓扑看,显然从北京直接传到广州就不如先从北京传到上海,再经过上海传到广州合算。我们怎么才能让KCC知道这个情况呢?通过站点开销就很容易做到,例如我们可以设置北京站点到广州站点的开销值是100,而北京到上海的开销值是20,上海到广州的开销值是10。这样一来KCC在计算站点间链接时就可以通过开销值的量化指标判断出100>10+5,因此KCC在安排北京站点和广州站点间的AD复制时会优先让AD数据先从北京站点复制到上海站点,再从上海站点复制到广州站点。值得注意的是,站点开销值是一个宏观上的相对值,并不具体对应传输速率。
站点间的默认复制频率是180分钟,也就是默认情况下三个小时才跨站点复制一次,这个频率比站点内的AD复制低了很多,显然是为了适应广域网上的低速链路。
108
点击站点常规属性中的“更改计划”,我们可以设置站点间数据传输的时间段,这个设置显然有利于避开窄带利用的高峰期,在适当的时机用适当的节奏进行站点间的数据传递。
站点配置完毕后,我们检查DNS服务器,发现DNS中已经有了相关的SRV记录。如下图所示,我们发现Beijing和Shanghai两个站点的SRV记录已经出现在区域中了,这样的话有利于客户机通过查找DNS来定位出和自己所属站点内的域控制器。
我们举个例子来说明DNS中和站点有关的SRV记录的作用,有一台客户机Istanbul,IP地址是192.168.12.107。如下图所示,我们准备把它加入域,看看Istanbul加入域的过程。
109
我们用抓包器追踪Istanbul加入域的过程,如下图所示,我们可以看到Istanbul向DNS服务器发起查询,要求查询shanghai站点内的域控制器。显然Istanbul已经知道了自己属于shanghai站点,优先联系shanghai站点内的域控制器,这样我们设置站点的目的也就达到了。
110
111
域控制器的常规卸载,Active Directory系列之十三
我们现在已经有一些Active Directory的部署及管理经验了,今天我们要考虑一个问题,如果一个域控制器我们不需要了,那应该如何处理呢?直接把它砸了是不对的,这未免太暴力了,和当前的和谐环境有些格格不入哦。关键是,如果我们让这台域控制器直接消失,那么其他的域控制器就无法得知这个消息,每隔一段时间其他的域控制器还会试图和这个域控制器进行AD复制,客户机也有可能会把用户名和口令送到这个不存在的域控制器上进行验证。如果这个被暴力卸载的域控制器还承担着一些操作主机角色,我们就更麻烦了。因此,我们进行域控制器卸载时,一定要把工作做到位,优先使用常规卸载,争取不留后患。
有些朋友可能会说,我也希望用常规卸载,但有时就是不能正常卸载,没办法,只好…..我们要分析一下,为什么域控制器无法正常卸载呢?当域控制器进行常规卸载时,AD的内容发生了变化,域控制器会把这个变化通知自己的复制伙伴,再由自己的复制伙伴通知其他域控制器。如果所有的域控制器都通知到了,那就肯定可以正常卸载,而且DNS记录,操作主机角色,AD复制拓扑等问题都可以迎刃而解。因此,域控制器卸载和域控制器之间的AD复制其实是一个硬币的两面,域控制器卸载时也要进行AD复制。想知道一个域控制器是否可以正常卸载,我们只要在Active Directory站点和服务中查看这个域控制器和它的复制伙伴是否可以AD复制就可以了,只要能进行AD复制,基本卸载域控制器时就没有问题。
我们举一个域控制器正常卸载的例子,拓扑如下图所示,我们准备卸载shanghai站点内的域控制器perth。从拓扑可以看出,perth的复制伙伴应该是Firenze,只要perth和Firenze之间可以进行AD复制,perth应该就可以进行域控制器卸载。
112
113
在perth上运行Dcpromo,如下图所示,出现Active Directory安装向导,向导判断我们准备把Active Directory删除,点击“下一步”继续。
由于perth并不是域内的最后一个域控制器,因此我们不能勾选“这个服务器是域中的最后一个域控制器”。
114
Perth删除Active Directory后,需要我们设置本地管理员口令。
当perth上的Active Directory被删除后,perth将成为一个成员服务器。
115
Perth开始了卸载域控制器的操作,注意下图,perth把AD的变化复制给了Firenze,这和我们事先的分析是吻合的。
OK,perth成功地完成了域控制器的卸载,删除了Active Directory。
116
Perth进行域控制器的卸载后,我们观察一下DNS服务器,如下图所示,我们发现DNS已经把shanghai站点的SRV记录自动更新了,
如下图所示,shanghai站点内的Firenze也把自己的复制伙伴从Perth改成了Berlin。
117
域控制器的数量也发生了变化,Perth已经不再是域控制器的一员。
图片看不清楚?请点击这里查看原图(大图)。
这样我们就在Perth上完成了域控制器的常规卸载,这种卸载方式是我们的首选方法。当然,如果实在无法正常卸载,我们也要想想其他办法,下篇博文中我们将介绍如何进行域控制器的强制卸载。
118
域控制器的强制卸载,Active Directory系列之十四
为什么需要对域控制器进行强制卸载呢?如果域控制器不能和复制伙伴正常通讯,而且更正无望,那我们就要考虑进行强制卸载了。例如我曾见过一个单位有10个域控制器,居然有7个不能相互复制,主要是管理员误以为域控制器越多越好….类似这样的情况,我们就可以果断出手,把域控制器强行卸载掉。域控制器强行卸载的原理也很简单,那就是卸载时不再通知复制伙伴,直接把AD删除就好。这样的卸载方式是要相对简单一些,但其实后续的操作很麻烦,例如我们需要在Active Directory中手工清除被强制卸载的域控制器,手工清除DNS中的SRV记录等。因此,如果不是万不得已,还是用常规卸载比较好。
如下图所示,我们将利用如下图所示的拓扑为大家演示如何进行域控制器的强制卸载,我们进行强制卸载的目标是shanghai站点的Firenze。
119
一 强制卸载域控制器
首先我们在被卸载的域控制器Firenze上打开cmd命令提示符,执行dcpromo/forceremoval,forceremoval参数的作用就是执行强制卸载,如下图所示,卸载向导提示我们这种卸载方式将不对其他域控制器的Active Directory数据进行更新。
接下来我们需要设置Firenze本地管理员的口令。
120
强制卸载域控制器后,Firenze将不再成为域内的成员服务器,而是会从域中脱离出去成为工作组中的独立服务器。
如下图所示,点击完成结束了域控制器的强制卸载。
121
二 手工清除Active Directory数据
Firenze被强制卸载后,域内的其他域控制器并不知道这件事情,它们仍然认为Firenze
是域控制器的一员,因此我们必须手工将Firenze从Active Directory中清除出去。我们准备在Berlin上对Active Directory进行手工清理,然后Berlin再把清理后的Active Directory复制到其他域控制器就可以了。
在Berlin上运行NTDSUTIL,如下图所示,选择“Metadata Cleanup”,准备清除不使用的服务器对象。
122
然后使用“connections”准备连接到指定的域控制器执行删除操作,输入“connect to server berlin”连接到Berlin,然后输入“quit”返回上级菜单。
接下来我们需要使用“Select operation target”来选择被删除的服务器对象,选择服务器时,我们需要指定服务器所在的域和站点。我们可以先用list指令列出站点和域,然后再进行选择。Firenze隶属于shanghai站点,Firenze所在的域是adtest.com。
123
如下图所示,我们首先用“list sites”列出了当前站点,然后用“select site 1”选定了shanghai站点,我们可以看到对站点的描述用的是数字而不是字符。选择了站点之后,我们接下来使用“list domains in site”列出了站点中的域,当前只有一个域adtest.com,编号是0,因此我们接下来使用“select domain 0”就可以把域也选定了。域和站点都选定了,我们就可以进行服务器的选择了,使用“list servers for domain in site”可以列出所有的服务器,当前shanghai站点只有Firenze一个域控制器,因此我们使用“select server 0”选定服务器Firenze。至此,被手工清理的目标已被我们锁定了。
124
用“quit”命令退出选择操作对象的环境,返回到上级菜单,然后我们使用“Reomve selected Server”删除被选定的服务器对象Firenze。
图片看不清楚?请点击这里查看原图(大图)。
NTDSUTIL提示我们对删除Firenze服务器的行为进行确认,我们选择“Y”确定操作。
这样Firenze被我们从Berlin的Active Directory中清除了,然后我们在Berlin上打开Active Directory用户和计算机,如下图所示,删除域控制器Firenze。
125
我们需要对删除Firenze的原因进行描述,如下图所示,Firenze是被我们强制卸载的。
126
确定要进行删除Firenze的操作,选择“Y“。
至此,我们在Berlin上基本完成了对Firenze的手工清除,完成操作后还需要注意以下几点:
1 手工清除DNS中Firenze的SRV记录
2 如果Firenze承担了操作主机角色,把操作主机角色转移到其他域控制器
3 如果Firenze是全局编录服务器,选择其他的域控制器负责全局编录
4 把Berlin的Active Directory复制到其他域控制器上
综上所述,我们发现其实对域控制器进行强制卸载是很麻烦的事,我们不应该把它当成一种常态行为,只有当域控制器确实没有希望进行常规卸载时,我们才考虑使用强制卸载,而且使用强制卸载后一定要注意后续对Active Directory的手工清理!
127
域控制器的终极卸载,Active Directory系列之十五
这种强制卸载方法的思路是先进入目录服务还原模式,这样就可以避开损坏的Active Directory,以安全模式进入系统。然后通过修改注册表强行将域控制器改为独立服务器,最后再手工删除Active Directory数据库。这样做完后从形式上看域控制器就变成一个成员服务器了,只是系统中还保留了一些域控制器使用的服务和注册表键值。如果希望做得更完善一些,可以临时把这台计算机升级为一个域的域控制器,升级完成后立即进行域控制器的卸载,这样一番复杂操作后基本上可以保证卸载效果和运行Dcpromo/forceremoval大致相当。
我们以Florence为例为大家演示操作过程。Florence是ITET.COM的域控制器,由于Active Directory损坏无法进入系统,我们首先要使用目录服务还原模式进入系统,在系统启动时我们按下F8,如下图所示,选择进入“目录服务还原模式”。
128
目录服务还原模式不加载Active Directory,因此可以避开损坏的Active Directory所带来的问题,如下图所示,我们通过目录服务还原模式可以顺利进入系统。
登录进入系统后,我们要通过修改注册表键值把域控制器强行变为独立服务器,运行Regedit,如下图所示,定位到HKEY_Local_MachineSystemCurrentControlSetControlProductoptionsProductType,这个键值决定了服务器的身份。
129
如下图所示,我们把ProductType的键值从LanmanNT改为ServerNT,这样我们就强行把Florence设置为一个和Active Directory无关的独立服务器了。
130
改完键值后,我们需要手工删除Active Directory数据,Active Directory数据的默认路径是C:WindowsNTDS。如下图所示,我们在目录服务还原模式下直接删除NTDS目录即可。
修改完注册表键值,然后删除NTDS目录后重启Florence。如下图所示,我们发现Florence已经认为自己不是一个域控制器了!我们可以轻松进入变形后的系统。
131
如果强行卸载到此为止,那Florence还是有很多隐患的,因为Florence上还有不少服务以及注册表键值和Active Directory有关。怎么才能消除这些隐患呢?我们的方法是把Florence临时升级为一个域的域控制器,然后再降下来,这样就可以把相关的注册表及服务清理干净。如下图所示,我们把Florence升级为test.com的域控制器。
升域完成后,我们立即把Florence降下来,如下图所示,我们通过Dcpromo对Florence进行正常卸载,卸载完成后Florence就可以恢复正常了。
132
以上做了那么多操作,其实效果相当于执行了Dcpromo/Forceremoval。虽然过程很麻烦,但我们从中又多掌握了一种应急修复方法,下次遇到Active Directory损坏无法启动,我们就不用担心了。
133
因篇幅问题不能全部显示,请点此查看更多更全内容