我们如何从一个现在没有作为DC响应的AD域恢复?

Windows Server 2012是主要的服务器环境。 所有机器都位于服务器机房,为networkingtesting实验室提供服务。 实验室中有400多台服务器,其中大部分都是虚拟化的,给我们3500-4000台机器的工作范围供testing实验室使用。

情景:我们的备份数据中心在一个月前就出现了故障,而且自从上一个pipe理员离开后,我们的新基础设施人员正在现场学习我们的networking,所以没有人意识到这一点。 DC有硬件故障,完全损失。

我们的PDC开始有问题复制,并最终给我们一个信息,说它宣布自己是无效的,因为没有完成pipe理区议会的angular色。 这个任务不能被validation(杜!)。

大约一个星期前,我们运行了一个Powershell脚本,将400台机器添加到AD /域。 通过该方式的大约25%,该脚本退出识别PDC作为域控制器。 从那时起,我们无法将机器添加到域中,因此我们正在用其他客户机上的caching时间用完,因为它们没有实际的PDClogin域。

我们无法从PDC中删除损坏的DC,因此我们无法备份AD并迁移数据。

到目前为止我们已经做了什么

  • 从头开始创build了两个新的DC。
  • 原来的PDC现在已经与实验室断开了,而我们试图让新的接pipe。

问题

  • 我们无法备份我们的GPO,无法导出我们的AD列表。
  • 我们不能降级原来的PDC,它出错了。

有没有办法避免从头重build我们的广告?

是否有恢复我们的GPO的选项,而不需要手动重新创build?

dcdiag数据

在运行dcdiag ,除了CheckSDRefDomtesting之外的所有testing都失败了。 所有LDAP相关的testing失败, LDAP Error 0x3a (58) 。 FMSO检查成功。 即使服务启动,DNS也没有响应并报告为未启动。

我想我们将采取Mathius的build议,并把它作为重新devise和学习的机会。

我害怕听起来精英和光顾,但从你提供的信息和你的问题的方式,我认为最可行的长期解决scheme是

  • 在新的(新安装的)服务器上使用新的FQDN在新林中创build一个新域
  • 取消所有来自现有域的客户端
  • 重新启动并join新域
  • 在现有的域控制器上重新安装操作系统
  • 在服务器上安装AD DS并join新的域
  • 利用这个机会来重温你对Active Directory的理解,它是什么以及它是如何工作的

微软已经发布了一些接近Active Directorydevise和部署的指南,值得一提的是:

TechNet上的AD DSdevise指南
来自微软基础架构和规划指南系列的Active Directory域服务指南

祝你好运!


备份您的GPO:

从您最近的更新,听起来像AD DS目前不可操作,所以这里是最后的手段GPO备份和恢复解决scheme,不包括链接和WMI筛选器。

组策略对象由2部分组成,组策略容器和组策略模板。

容器是活动目录中的一个对象,用于存放用于将给定GPO应用于给定OU的组策略链接 – 如果此时DSA对您无法使用,则无需安装即可检索这些对象探索你的NTDS数据库的离线副本(并不像听起来那么简单)。

另一方面,模板包含GPO的肉和土豆,所有设置,名称,版本信息等等,并存储在文件系统的SYSVOL文件夹中。
使用默认configuration,您将能够在C:\Windows\SYSVOL\domain\policies\find所有GPT。 使用GPT的文件级别备份,您将能够在新域中重新创build GPO,最好使用PowerShell,如下所示:

 $gptBackupFilePath = "C:\backup\policies\" $ServerName = $env:COMPUTERNAME Import-Module GroupPolicy $GPTs = Get-ChildItem $gptBackupFilePath -Directory |Where-Object {$_.Name -imatch "^\{([0123456789abcdef-]){36}\}$"} foreach($GPT in $GPTs) { if("{31B2F340-016D-11D2-945F-00C04FB984F9}" -eq $GPT.Name.ToUpper()) { Write-Host "Skipping Default Domain Policy " } if("{6AC1786C-016F-11D2-945F-00C04FB984F9}" -eq $GPT.Name.ToUpper()) { Write-Host "Skipping Default Domain Controllers Policy " } $GPTPath = $GPT.FullName $GPOName = (Get-Content (Join-Path $GPTPath "GPT.ini") |Where-Object {$_ -match "^displayName="}).Substring(12) |Select -First 1 if(-not($GPOName)) { Write-Warning "Unable to read GPO name from $GPTPath" continue } $newGPO = New-GPO -Name $GPOName -Server $ServerName if(-not($?)) { Write-Warning "Unable to create new GPO $GPOName" continue } $GPOGuid = $newGPO.Id.ToString() $Destination = Get-Item ("C:\Windows\SYSVOL\domain\policies\{" + $GPOGuid + "}") if(-not(Test-Path $Destination)) { Write-Warning "Unable to access new GPT for GPO $GPOName" continue } Get-ChildItem -Path $GPTPath -Recurse -Exclude @("gpt.ini") |Copy-Item -Destination $($_.FullName -replace $GPTPath,$DestinationPath.FullName) -Force if($?) { Write-Host "Successfully recreated GPO $GPOName as $GPOGuid" } } 

我怀疑这是一个受支持的解决scheme,而不像使用迁移表的普通GPO导入,您需要手动使用UNCpath来引用其他特定于域的引用。

以上示例旨在在新林中的域控制器上运行,并将$gptBackupFilePath更改为包含旧域控制器上[..] \ policies内容的文件夹


这个问题的唯一的其他答案 ,表明你已经失去了当前拥有RID Master FSMOangular色的域控制器,并且已经耗尽了当前的RID池的概率是完全正确的,并且你很可能能够恢复森林从目前的状态。

我build议从头开始不是一个简单的默认转移响应,而是一个精心挑选的,基于AD灾难恢复的个人经验,更重要的是, 清理其他人灾难性灾后恢复工作

如果您不能完全理解健康的Active Directory环境所期望的结果,那么通过反复试验就可以完成所需的任务(FSMO获取,元数据清理等),但仍然存在未解决的问题目前 – 但太难以捉摸,因此隐藏到未经训练的眼睛。

在过去的30或60天内引入的任何不一致可能在这里和现在都不会performance出来,但是如果这样做 – 当你有机会的时候,你会希望你从头开始

我的猜测是死亡的服务器是RID Master 。

域控制器通过使用相对ID池(RIDS)分配唯一的SIDS。 域中的一个DC(RID主)负责为每个域控制器提供唯一的池。 当域控制器用完RID时,它不能再创build更多的安全主体。

在这种情况下,添加更多的域控制器根本无济于事。

为了解决这个问题,你需要在工作DC上占用RID主angular色 。 重要提示:抓住angular色之后, 不要让旧的RID高手重新联机 ! 这可能会导致问题。

顺便说一句,build议创build一个新的领域的答案是一个巨大的工作比看起来更多的工作。 除此之外,您现在必须使用新的服务帐户在每个服务器上configuration每个服务,这可能意味着设置服务主体名称和权限。 您现在必须重新创build邮件系统,可能需要导出和导入每个邮箱。 扁平化AD森林是完全最后的select,只有在用尽其他选项后才能完成!

另外,我build议你在接受答案之前等几天,不要只接受第一个答案。