本文解决了只读域控制器 (RODC) 上的 KDC 服务无法启动的问题,你会收到一条错误消息,指出系统资源不足。
适用于:Windows Server 2016
现象
Kerberos 密钥分发中心(KDC)服务不会在只读域控制器(RODC)上启动,该服务将生成以下错误消息:
Windows 无法在本地计算机上启动 Kerberos 密钥分发中心服务。 错误 1450:系统资源不足,无法完成请求的服务。
如果使用 repadmin /replication** 等**命令从源域控制器触发 RODC 的入站复制,该命令将失败并生成以下错误消息:
DsReplicaSync() 失败,状态为 6(0x6): 句柄 无效。
原因
**已删除 RODC 的krbtgt_*#####***帐户。
每个 RODC 在 Active Directory 中都有自己的 krbtgt_##### 帐户。 在帐户名称中, ##### 表示标识 RODC 的数字。 RODC 使用此帐户为颁发票证提供加密隔离。 通常,无需与 krbtgt_##### 帐户进行交互。 升级或降级 RODC 时,Windows 会自动管理帐户。 但是,如果 RODC 失败且元数据未清理,则“孤立” krbtgt_##### 帐户可能保留在 Active Directory 中。
如果管理员尝试手动清理孤立帐户,则可能会发生“症状”部分中提到的问题。 此问题通常意味着删除了非孤立 krbtgt_##### 帐户,而不是孤立帐户。
有关如何标识孤立 krbtgt_##### 帐户的信息,请参阅 MailBag:RODC – krbtgt_#####、孤立和负载均衡 RODC 连接对象。
解决方法
用于解决此问题的过程取决于是否已在 Active Directory 中启用 AD 回收站 功能。 请选择以下方法之一:
- 恢复方法 1 (未启用 AD 回收站功能)
- 恢复方法 2 (已启用 AD 回收站功能)
恢复方法 1 (未启用 AD 回收站功能)
如果未启用 AD 回收站功能,请在可写入域控制器(RWDC)或全局编录服务器(GC)上执行以下步骤。
-
重新启动服务器。 在启动过程中,按 F8,然后选择“ 目录服务还原模式”。
-
从删除帐户之前使用系统状态备份来还原服务器的系统状态。 此操作将帐户返回到服务器上的 Active Directory 的本地副本。
-
打开提升的命令提示符窗口,并使用 ntdsutil 工具执行 帐户的权威还原 。 此操作可确保还原的帐户可以复制到其他域控制器。
例如,若要还原名称 为krbtgt_23530的帐户,请打开提升的命令提示符窗口,然后运行以下命令:
ntdsutil restore object "CN=krbtgt_23530,CN=Users,DC=EMEA,DC=Contoso,DC=com"注意
权威还原操作将创建一个 LDAP 数据交换格式 (LDIF) 文件,其中包含已还原帐户中的信息。 后续步骤中将需要此文件。
-
重启服务器以返回到正常的 Active Directory 模式。
-
通过导入在上一步中创建的 LDIF 文件来填充还原帐户的反向链接属性。 为此,请在命令提示符处运行以下命令:
ldifde -i -f <filename>.ldf在此命令中, <文件名> 是以前创建的 LDIF 文件的文件名和路径。 此操作将 Active Directory 中的 RODC 计算机对象链接到其相应的帐户。
完成这些步骤后,可能需要重置 RODC 计算机帐户(也称为“计算机帐户”)的密码。 为此,请按照“使用Netdom.exe”中的 步骤重置 Windows Server 域控制器的计算机帐户密码。
恢复方法 2 (已启用 AD 回收站功能)
如果启用了 AD 回收站功能,请执行以下步骤。
-
在 RWDC 或 GC 上,在提升的命令提示符窗口中运行以下命令以还原帐户:
import-module ActiveDirectory Get-ADObject -Filter {displayName -eq "krbtgt_<xxxxx>"} -IncludeDeletedObjects | Restore-ADObject第二个命令中, <xxxxx> 是 RODC 的 ID 号。
-
在受影响的 RODC 上,打开提升的命令提示符窗口,然后运行以下命令将帐户信息复制到 RODC:
repadmin /replsingleobj <RODC_Name> <RWDC_Name> <DN>此命令包含以下占位符:
- <> RODC_Name表示 RODC 的服务器名称
- <> RWDC_Name表示还原帐户的 RWDC
- <DN 表示 RODC 帐户的可分辨名称(krbgt_xxxxx)>
-
运行以下命令清除 RODC Kerberos 缓存:
klist purge klist -li 0x3e7 purge -
运行以下命令重置 RODC 计算机帐户(也称为“计算机帐户”)的密码:
netdom resetpwd /server: <RWDC_Name> /USERD: administrator /PasswordD:*在此命令中, <RWDC_Name> 表示 RWDC 的服务器名称。
注意
此命令会提示输入管理员帐户的密码。
-
重启 RODC。