我们现在已经有一些Active Directory的部署及管理经验了,今天我们要考虑一个问题,如果一个域控制器我们不需要了,那应该如何处理呢?直接把它砸了是不对的,这未免太暴力了,和当前的和谐环境有些格格不入哦。关键是,如果我们让这台域控制器直接消失,那么其他的域控制器就无法得知这个消息,每隔一段时间其他的域控制器还会试图和这个域控制器进行AD复制,客户机也有可能会把用户名和口令送到这个不存在的域控制器上进行验证。如果这个被暴力卸载的域控制器还承担着一些操作主机角色,我们就更麻烦了。因此,我们进行域控制器卸载时,一定要把工作做到位,优先使用常规卸载,争取不留后患。

有些朋友可能会说,我也希望用常规卸载,但有时就是不能正常卸载,没办法,只好…..我们要分析一下,为什么域控制器无法正常卸载呢?当域控制器进行常规卸载时,AD的内容发生了变化,域控制器会把这个变化通知自己的复制伙伴,再由自己的复制伙伴通知其他域控制器。如果所有的域控制器都通知到了,那就肯定可以正常卸载,而且DNS记录,操作主机角色,AD复制拓扑等问题都可以迎刃而解。因此,域控制器卸载和域控制器之间的AD复制其实是一个硬币的两面,域控制器卸载时也要进行AD复制。想知道一个域控制器是否可以正常卸载,我们只要在Active Directory站点和服务中查看这个域控制器和它的复制伙伴是否可以AD复制就可以了,只要能进行AD复制,基本卸载域控制器时就没有问题。

我们举一个域控制器正常卸载的例子,拓扑如下图所示,我们准备卸载shanghai站点内的域控制器perth。从拓扑可以看出,perth的复制伙伴应该是Firenze,只要perth和Firenze之间可以进行AD复制,perth应该就可以进行域控制器卸载。

 

Windows_server_2003_AD_DC域配置(12) 域控制器的卸载与清理 - FrankLi - FrankLi Blog

在perth上运行Dcpromo,如下图所示,出现Active Directory安装向导,向导判断我们准备把Active Directory删除,点击“下一步”继续。

 

Windows_server_2003_AD_DC域配置(12) 域控制器的卸载与清理 - FrankLi - FrankLi Blog

由于perth并不是域内的最后一个域控制器,因此我们不能勾选“这个服务器是域中的最后一个域控制器”。

 

Windows_server_2003_AD_DC域配置(12) 域控制器的卸载与清理 - FrankLi - FrankLi Blog

Perth

删除Active Directory后,需要我们设置本地管理员口令。

 

Windows_server_2003_AD_DC域配置(12) 域控制器的卸载与清理 - FrankLi - FrankLi Blog

当perth上的Active Directory被删除后,perth将成为一个成员服务器。

 

Windows_server_2003_AD_DC域配置(12) 域控制器的卸载与清理 - FrankLi - FrankLi Blog

Perth

开始了卸载域控制器的操作,注意下图,perth把AD的变化复制给了Firenze,这和我们事先的分析是吻合的。

 

Windows_server_2003_AD_DC域配置(12) 域控制器的卸载与清理 - FrankLi - FrankLi Blog

OK

,perth成功地完成了域控制器的卸载,删除了Active Directory。

 

Windows_server_2003_AD_DC域配置(12) 域控制器的卸载与清理 - FrankLi - FrankLi Blog

Perth

进行域控制器的卸载后,我们观察一下DNS服务器,如下图所示,我们发现DNS已经把shanghai站点的SRV记录自动更新了,

 

Windows_server_2003_AD_DC域配置(12) 域控制器的卸载与清理 - FrankLi - FrankLi Blog

如下图所示,shanghai站点内的Firenze也把自己的复制伙伴从Perth改成了Berlin。

 

Windows_server_2003_AD_DC域配置(12) 域控制器的卸载与清理 - FrankLi - FrankLi Blog

域控制器的数量也发生了变化,Perth已经不再是域控制器的一员。

 

Windows_server_2003_AD_DC域配置(12) 域控制器的卸载与清理 - FrankLi - FrankLi Blog

这样我们就在Perth上完成了域控制器的常规卸载,这种卸载方式是我们的首选方法。当然,如果实在无法正常卸载,我们也要想想其他办法,下篇博文中我们将介绍如何进行域控制器的强制卸载。

域控制器的强制卸载

上篇博文中我们介绍了如何对域控制器进行常规卸载,本文中我们将介绍如何对域控制器进行强制卸载。为什么需要对域控制器进行强制卸载呢?如果域控制器不能和复制伙伴正常通讯,而且更正无望,那我们就要考虑进行强制卸载了。例如我曾见过一个单位有10个域控制器,居然有7个不能相互复制,主要是管理员误以为域控制器越多越好….类似这样的情况,我们就可以果断出手,把域控制器强行卸载掉。域控制器强行卸载的原理也很简单,那就是卸载时不再通知复制伙伴,直接把AD删除就好。这样的卸载方式是要相对简单一些,但其实后续的操作很麻烦,例如我们需要在Active Directory中手工清除被强制卸载的域控制器,手工清除DNS中的SRV记录等。因此,如果不是万不得已,还是用常规卸载比较好。

如下图所示,我们将利用如下图所示的拓扑为大家演示如何进行域控制器的强制卸载,我们进行强制卸载的目标是shanghai站点的Firenze。

 

Windows_server_2003_AD_DC域配置(12) 域控制器的卸载与清理 - FrankLi - FrankLi Blog

一 强制卸载域控制器

首先我们在被卸载的域控制器Firenze上打开cmd命令提示符,执行dcpromo/forceremoval,forceremoval参数的作用就是执行强制卸载,如下图所示,卸载向导提示我们这种卸载方式将不对其他域控制器的Active Directory数据进行更新。

Windows_server_2003_AD_DC域配置(12) 域控制器的卸载与清理 - FrankLi - FrankLi Blog

接下来我们需要设置Firenze本地管理员的口令。

Windows_server_2003_AD_DC域配置(12) 域控制器的卸载与清理 - FrankLi - FrankLi Blog

强制卸载域控制器后,Firenze将不再成为域内的成员服务器,而是会从域中脱离出去成为工作组中的独立服务器。

 

Windows_server_2003_AD_DC域配置(12) 域控制器的卸载与清理 - FrankLi - FrankLi Blog

如下图所示,点击完成结束了域控制器的强制卸载。

 

Windows_server_2003_AD_DC域配置(12) 域控制器的卸载与清理 - FrankLi - FrankLi Blog

二 手工清除Active Directory数据

Firenze被强制卸载后,域内的其他域控制器并不知道这件事情,它们仍然认为Firenze

是域控制器的一员,因此我们必须手工将Firenze从Active Directory中清除出去。我们准备在Berlin上对Active Directory进行手工清理,然后Berlin再把清理后的Active Directory复制到其他域控制器就可以了。

在Berlin上运行NTDSUTIL,如下图所示,选择“Metadata Cleanup”,准备清除不使用的服务器对象。

Windows_server_2003_AD_DC域配置(12) 域控制器的卸载与清理 - FrankLi - FrankLi Blog

 

然后使用“connections”准备连接到指定的域控制器执行删除操作,输入“connect to server berlin”连接到Berlin,然后输入“quit”返回上级菜单。

 

Windows_server_2003_AD_DC域配置(12) 域控制器的卸载与清理 - FrankLi - FrankLi Blog

接下来我们需要使用“Select operation target”来选择被删除的服务器对象,选择服务器时,我们需要指定服务器所在的域和站点。我们可以先用list指令列出站点和域,然后再进行选择。Firenze隶属于shanghai站点,Firenze所在的域是adtest.com。

 

Windows_server_2003_AD_DC域配置(12) 域控制器的卸载与清理 - FrankLi - FrankLi Blog

如下图所示,我们首先用“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。至此,被手工清理的目标已被我们锁定了。

 

Windows_server_2003_AD_DC域配置(12) 域控制器的卸载与清理 - FrankLi - FrankLi Blog

 

用“quit”命令退出选择操作对象的环境,返回到上级菜单,然后我们使用“Remove selected Server”删除被选定的服务器对象Firenze。

 

Windows_server_2003_AD_DC域配置(12) 域控制器的卸载与清理 - FrankLi - FrankLi Blog

NTDSUTIL

提示我们对删除Firenze服务器的行为进行确认,我们选择“Y”确定操作。

 

Windows_server_2003_AD_DC域配置(12) 域控制器的卸载与清理 - FrankLi - FrankLi Blog

这样Firenze被我们从Berlin的Active Directory中清除了,然后我们在Berlin上打开Active Directory用户和计算机,如下图所示,删除域控制器Firenze

Windows_server_2003_AD_DC域配置(12) 域控制器的卸载与清理 - FrankLi - FrankLi Blog

我们需要对删除Firenze的原因进行描述,如下图所示,Firenze是被我们强制卸载的。

 

Windows_server_2003_AD_DC域配置(12) 域控制器的卸载与清理 - FrankLi - FrankLi Blog

 

确定要进行删除Firenze的操作,选择“Y“。

 

Windows_server_2003_AD_DC域配置(12) 域控制器的卸载与清理 - FrankLi - FrankLi Blog

至此,我们在Berlin上基本完成了对Firenze的手工清除,完成操作后还需要注意以下几点:

1手工清除DNS中Firenze的SRV记录

2如果Firenze承担了操作主机角色,把操作主机角色转移到其他域控制器

3如果Firenze是全局编录服务器,选择其他的域控制器负责全局编录

4把Berlin的Active Directory复制到其他域控制器上

综上所述,我们发现其实对域控制器进行强制卸载是很麻烦的事,我们不应该把它当成一种常态行为,只有当域控制器确实没有希望进行常规卸载时,我们才考虑使用强制卸载,而且使用强制卸载后一定要注意后续对Active Directory的手工清理!