Windows Server:识别并修复 Active Directory 域控制器上断开的安全通道
Summary: 本文介绍如何识别 Active Directory 域控制器 (DC) 上断开的安全通道并修复它。
Symptoms
- 受影响的 DC 与域中的其他 DC 之间的复制失败。给出的失败原因可能有所不同,但“目标主体名称不正确”是安全通道损坏的有力指示。
- 与此错误关联的结果代码包括 -2146893022 和 0x80090322。这些代码可能会出现在
repadmin目录服务事件日志中的输出或事件。
- 与此错误关联的结果代码包括 -2146893022 和 0x80090322。这些代码可能会出现在
- “此工作站与主域之间的信任关系失败”是与安全通道断开相关的另一个错误。
- 如果受影响的 DC 是 DNS 服务器,则在连接到该 DC 时,DNS Manager 控制台可能会生成“Access denied”(拒绝访问)错误。
Cause
DC 自己的计算机帐户密码副本与 Active Directory (AD) 数据库中存储的相应密码不匹配。当这些密码不同时,将无法建立安全通道。有关 AD 中的计算机帐户密码的更多信息,请参阅下面的“其他信息 ”。
Resolution
如果您主要使用 CIFS/NFS 来写入备份,则应使用 Test-ComputerSecureChannel PowerShell 命令和 -Repair 交换机可以修复直流控制器上断开的安全通道。(还有其他方法,但此命令简单明了。)在受影响的 DC 上执行以下步骤以修复其安全通道:
- 如果域中只有一个 DC,请跳过此步骤。停止 Kerberos 密钥分发中心 (KDC) 服务,并将其启动类型设置为“已禁用”。
可能还需要在域中的其他 DC 上执行此作,但服务必须在至少一个 DC 上运行。请参阅下面的其他信息。 - 启动提升的 PowerShell 提示符。
- 在该节点上运行
klist purge以删除现有的 Kerberos 票证。 - 在该节点上运行
Test-ComputerSecureChannel -server <good_dc> -repair -verbose。
将 <good_dc> 替换为运行 KDC 服务的 DC 的名称或 IP 地址。 - 该命令的输出应指示安全通道已成功修复:
图 1:安全通道已成功修复。 - 强制在受影响的 DC 之间进行 AD 复制,并确认复制成功。
- 在所有 DC 上将 KDC 服务的启动类型重置为 自动 ,然后启动该服务。(换言之,撤消步骤 1 中执行的作。)
Additional Information
Active Directory 中的计算机帐户密码
每台加入域的计算机在 AD 数据库中都有一个计算机帐户。与用户帐户一样,这些计算机帐户具有关联的密码。这些密码用于在域中的设备之间建立安全通信路径( 安全通道)。每台计算机在本地存储其密码的副本,另一个副本存储在 AD 数据库中。计算机帐户密码不会过期,也不需要用户手动维护。它们不受为用户帐户密码建立的密码策略的约束。
默认情况下,加入域的计算机每 30 天尝试更改一次密码,但可以更改此间隔。密码更改由加入域的计算机启动,而不是由 AD 中的机制启动。如果可以联系 DC,则本机的本地密码副本和存储在 AD 中的副本都将更改。如果计算机无法联系 DC,则不会更改其密码的本地副本。
这些原则适用于 DC,就像它们适用于其他已加入域的计算机一样。DC 的计算机帐户密码本地副本可能与存储在 AD 中的副本不同步。这在单个 DC 域中甚至是可能的,尽管很少见。
停止 Kerberos 密钥分发中心 (KDC) 服务
如果域中有多个 DC,则必须在受影响的 DC 上停止 KDC 服务。还建议将服务的启动类型设置为“已禁用”,以防止服务启动。根据问题的范围和域中 DC 的数量,可能还需要在其他 DC 上停止服务。如果域中的所有其他 DC 彼此同步(复制时不会出现错误),请停止并仅禁用受影响 DC 上的服务。否则,请在无法复制的任何 DC 上停止并禁用它。它必须在至少一个 DC 上运行。如果可能,请停止除一个 DC 以外的所有 DC 上的服务,并将该 DC 指定为 -server 步骤 4 中的切换应该会产生良好的结果。