Windows Server 域控制器在遇到 USN 回滚时记录目录服务事件 2095

本文介绍如何使用基于映像的操作系统安装来检测和恢复 Windows Server 域控制器是否被错误地回滚。

适用于:Windows Server 2019、Windows Server 2016、Windows Server 2012 R2
原始 KB 编号: 875495

注意

本文仅适用于技术支持代理和 IT 专业人员。 如果正在寻求解决问题的帮助,请 向 Microsoft 社区提问

摘要

本文介绍由更新序列号 (USN) 回滚导致的无提示 Active Directory 复制失败。 当旧版 Active Directory 数据库被错误地还原或粘贴到位时,会发生 USN 回滚。

发生 USN 回滚时,对一个域控制器上发生的对象和属性的修改不会复制到林中的其他域控制器。 由于复制合作伙伴认为他们拥有 Active Directory 数据库的最新副本,因此监视和故障排除工具(如 Repadmin.exe)不会报告任何复制错误。

域控制器在检测到 USN 回滚时,会记录目录服务事件日志中的目录服务事件 2095。 事件消息的文本会引导管理员访问本文以了解恢复选项。

事件 2095 日志条目示例

Log Name:      <Service name> Service  
Source:        Microsoft-Windows-ActiveDirectory_DomainService  
Date:          <DateTime>
Event ID:      2095  
Task Category: Replication  
Level:         Error  
Keywords:      Classic  
User:          <USER NAME>  
Computer:      SERVER.contoso.com  
Description:

During an Active Directory Domain Services replication request, the local domain controller (DC) identified a remote DC which has received replication data from the local DC using already-acknowledged USN tracking numbers.

Because the remote DC believes it is has a more up-to-date Active Directory Domain Services database than the local DC, the remote DC will not apply future changes to its copy of the Active Directory Domain Services database or replicate them to its direct and transitive replication partners that originate from this local DC.

If not resolved immediately, this scenario will result in inconsistencies in the Active Directory Domain Services databases of this source DC and one or more direct and transitive replication partners. Specifically the consistency of users, computers and trust relationships, their passwords, security groups, security group memberships and other Active Directory Domain Services configuration data may vary, affecting the ability to log on, find objects of interest and perform other critical operations.

To determine if this misconfiguration exists, query this event ID using http://support.microsoft.com or contact your Microsoft product support.

The most probable cause of this situation is the improper restore of Active Directory Domain Services on the local domain controller.

User Actions:

If this situation occurred because of an improper or unintended restore, forcibly demote the DC.

以下主题讨论如何在基于 Windows Server 的域控制器中检测 USN 回滚并从中恢复。

支持在运行 Windows Server 2012 及更高版本的域控制器上备份 Active Directory 的方法

Windows Server 2012添加了对 Hyper-Visor Generation ID (GenID) 的支持。 这允许虚拟来宾检测具有新 ID 的磁盘卷,并响应新的 GenID。 在 Active Directory 中,目录服务的反应就像从备份中还原了域控制器一样。 然后,它会生成新的调用 ID。 通过使用新的调用 ID,数据库实例可以在林中安全地重新输入复制。

这是 虚拟化域控制器部署和配置中介绍的方案之一。

支持在运行 Windows Server 2003 或更高版本的 Windows Server 的域控制器上备份 Active Directory 的方法

在域控制器的生命周期内,可能需要将 Active Directory 数据库的内容还原或“回滚”到已知的良好时间点。 或者,可能需要将域控制器的主机操作系统(包括 Active Directory)的元素回滚到已知的良好点。

以下是可用于回滚 Active Directory 内容的支持方法:

  • 使用使用 Microsoft 提供的和 Microsoft 测试的 API 的 Active Directory 感知备份和还原实用工具。 这些 API 以非权威或权威方式还原系统状态备份。 还原的备份应源自相同的操作系统安装,以及正在还原的同一物理计算机或虚拟计算机。

  • 使用使用 Microsoft 卷影复制服务 API 的 Active Directory 感知备份和还原实用工具。 这些 API 会备份和还原域控制器系统状态。 卷影复制服务支持在运行 Windows Server 2003、Windows Server 2008 或 Windows Server 2008 R2 的计算机上创建单个或多个卷的单个时间点卷影副本。 单一时间点卷影副本也称为快照。 有关详细信息,请在 Microsoft 支持部门 中搜索“卷影复制服务”。

  • 还原系统状态。 评估此域控制器是否存在有效的系统状态备份。 如果在错误还原域控制器之前进行了有效的系统状态备份,并且备份包含域控制器上的最新更改,请从最新的备份还原系统状态。

还原 Active Directory 感知系统状态备份时发生的典型行为

Windows Server 域控制器将 USN 与调用 ID 一起使用来跟踪必须在 Active Directory 林中的复制伙伴之间复制的更新。

源域控制器使用 USN 来确定请求更改的目标域控制器已收到哪些更改。 目标域控制器使用 USN 来确定应从源域控制器请求哪些更改。

调用 ID 标识在给定域控制器上运行的 Active Directory 数据库的版本或实例化。

使用 Microsoft 设计和测试的 API 和方法在域控制器上还原 Active Directory 时,将在还原的域控制器上正确重置调用 ID。 林中的域控制器接收调用重置通知。 因此,它们相应地调整其高水印值。

导致 USN 回滚的软件和方法

当使用以下环境、程序或子系统时,管理员可以绕过 Microsoft 在域控制器系统状态还原时所设计的检查和验证:

  • 启动 Active Directory 域控制器,该域控制器的 Active Directory 数据库文件已还原, (通过使用图像处理程序(如诺顿 Ghost)将) 复制到原位。

  • 启动域控制器以前保存的虚拟硬盘映像。 以下方案可能会导致 USN 回滚:

    1. 在虚拟托管环境中升级域控制器。
    2. 创建虚拟托管环境的快照或备用版本。
    3. 让域控制器继续进行入站复制和出站复制。
    4. 启动在步骤 2 中创建的域控制器映像文件。
  • 导致此方案的虚拟化托管环境示例包括 Microsoft Virtual PC 2004、Microsoft Virtual Server 2005 和 EMC VMWARE。 其他虚拟化托管环境也可能导致这种情况。

  • 有关虚拟托管环境中域控制器的支持条件的详细信息,请参阅在虚拟托管环境中 托管 Active Directory 域控制器时的注意事项

  • 通过使用以前保存的操作系统映像启动位于磁盘子系统加载的卷上的 Active Directory 域控制器,而无需还原 Active Directory 的系统状态。

    • 方案 A:启动位于存储卷多个版本的磁盘子系统上的多个 Active Directory 副本

      1. 提升域控制器。 在磁盘子系统上找到 Ntds.dit 文件,该文件可以存储托管 Ntds.dit 文件的卷的多个版本。
      2. 使用磁盘子系统创建托管域控制器 Ntds.dit 文件的卷的快照。
      3. 继续让域控制器从步骤 1 中创建的卷加载 Active Directory。
      4. 启动 Active Directory 数据库在步骤 2 中保存的域控制器。
    • 方案 B:从损坏镜像中的其他驱动器启动 Active Directory

      1. 提升域控制器。 在镜像驱动器上找到 Ntds.dit 文件。
      2. 中断镜像。
      3. 在镜像的第一个驱动器上使用 Ntds.dit 文件继续入站复制和出站复制。
      4. 使用 镜像中第二个驱动器上的 Ntds.dit 文件启动域控制器。

即使不是本意的,其中每一种方案都可能导致域控制器通过不支持的方法回滚到较旧版本的 Active Directory 数据库。 回滚 Active Directory 的内容或 Active Directory 域控制器的本地状态的唯一受支持方法是使用 Active Directory 感知备份和还原实用工具还原源自同一操作系统安装和要还原的相同物理或虚拟计算机的系统状态备份。

Microsoft 不支持将 Active Directory 域控制器系统状态的元素快照并将该系统状态的元素复制到操作系统映像的任何其他过程。 除非管理员进行干预,否则此类进程会导致 USN 回滚。 此 USN 回滚会导致错误还原的域控制器的直接复制伙伴和可传递复制伙伴在其 Active Directory 数据库中具有不一致的对象。

USN 回滚的效果

发生 USN 回滚时,对对象和属性的修改不会由以前看到 USN 的目标域控制器进行入站复制。

由于这些目标域控制器认为它们是最新的,因此目录服务事件日志或监视和诊断工具不会报告任何复制错误。

USN 回滚可能会影响任何分区中任何对象或属性的复制。 最常观察到的副作用是在回滚域控制器上创建的用户帐户和计算机帐户不存在于一个或多个复制伙伴上。 或者,复制伙伴中不存在源自回滚域控制器的密码更新。

以下步骤显示了可能导致 USN 回滚的事件序列。 使用不受支持的系统状态还原及时回滚域控制器系统状态时,会发生 USN 回滚。

  1. 管理员升级域中的三个域控制器。 (在此示例中,域控制器为 DC1、DC2 和 DC2,域 Contoso.com.) DC1 和 DC2 是直接复制伙伴。 DC2 和 DC3 也是直接复制合作伙伴。 DC1 和 DC3 不是直接复制合作伙伴,而是通过 DC2 传递接收原始更新。

  2. 管理员创建 10 个用户帐户,这些帐户对应于 DC1 上的 USN 1 到 10。 所有这些帐户都复制到 DC2 和 DC3。

  3. 在 DC1 上捕获操作系统的磁盘映像。 此图像有一个对象记录,这些对象对应于 DC1 上的本地 USN 1 到 10。

  4. 在 Active Directory 中进行了以下更改:

    • 步骤 2 中创建的所有 10 个用户帐户的密码在 DC1 上重置。 这些密码对应于 USN 11 到 20。 所有 10 个更新的密码都复制到 DC2 和 DC3。
    • 在 DC1 上创建 10 个新用户帐户,这些帐户对应于 USN 21 到 30。 这 10 个用户帐户将复制到 DC2 和 DC3。
    • 在 DC1 上创建了 10 个对应于 USN 31 到 40 的新计算机帐户。 这 10 个计算机帐户将复制到 DC2 和 DC3。
    • 在 DC1 上创建了 10 个对应于 USN 41 到 50 的新安全组。 这 10 个安全组将复制到 DC2 和 DC3。
  5. DC1 遇到硬件故障或软件故障。 管理员使用磁盘映像实用工具将步骤 3 中创建的操作系统映像复制到原位。 DC1 现在从了解 USN 1 到 10 的 Active Directory 数据库开始。

    由于操作系统映像已复制到原地,并且未使用受支持的还原系统状态的方法,因此 DC1 继续使用创建数据库初始副本的同一调用 ID,并且所有更改最多为 USN 50。 DC2 和 DC3 还保留 DC1 的相同调用 ID,以及 DC1 的最新 向量 USN 50。 (最新向量是给定目录分区的所有域控制器上发生的最新发起更新的当前状态。)

    除非管理员进行干预,否则 DC2 和 DC3 不会入站复制源自 DC1 的本地 USN 11 到 50 的更改。 此外,根据 DC2 使用的调用 ID,DC1 已了解与 USN 11 到 50 对应的更改。 因此,DC2 不会发送这些更改。 由于 DC1 上不存在步骤 4 中的更改,因此登录请求失败并出现“拒绝访问”错误。 出现此错误的原因可能是密码不匹配,或者当较新的帐户随机使用 DC1 进行身份验证时帐户不存在。

  6. 监视林中复制运行状况的管理员请注意以下情况:

    • 命令行 Repadmin /showreps 工具报告 DC1 和 DC2 之间以及 DC2 和 DC3 之间的双向 Active Directory 复制未出错。 这种情况使得任何复制不一致都难以检测。

    • 运行 Windows Server 的域控制器的目录服务事件日志中的复制事件并不指示目录服务事件日志中的任何复制失败。 这种情况使得任何复制不一致都难以检测。

    • 当 DC2 和 DC3 上的域目录分区与 DC1 上的分区进行比较时,Active Directory 用户和计算机或 Active Directory 管理工具 (Ldp.exe) 显示不同的对象计数和不同的对象元数据。 区别在于映射到步骤 4 中 USN 更改 11 到 50 的更改集。

      注意

      在此示例中,不同的对象计数适用于用户帐户、计算机帐户和安全组。 不同的对象元数据表示不同的用户帐户密码。

    • 针对步骤 2 中创建的 10 个用户帐户的用户身份验证请求偶尔会生成“拒绝访问”或“密码不正确”错误。 发生此错误的原因可能是 DC1 上的这些用户帐户与 DC2 和 DC3 上的帐户之间存在密码不匹配。 遇到此问题的用户帐户对应于步骤 4 中创建的用户帐户。 步骤 4 中的用户帐户和密码重置未复制到域中的其他域控制器。

  7. DC2 和 DC3 开始入站复制与 DC1 中大于 50 的 USN 号码对应的原始更新。 此复制通常继续进行,无需管理干预,因为已超出先前记录的最新矢量阈值 USN 50。 (USN 50 是在 DC1 脱机并还原之前,DC2 和 DC3 上为 DC1 记录的最新向量 USN。) 但是,在不支持的还原后,原始 DC1 上对应于 USN 11 到 50 的新更改永远不会复制到 DC2、DC3 或其可传递复制伙伴。

尽管步骤 6 中提到的症状表示 USN 回滚可能会对用户和计算机帐户产生一些影响,但 USN 回滚可以阻止复制任何 Active Directory 分区中的任何对象类型。 这些对象类型包括:

  • Active Directory 复制拓扑和计划

  • 林中是否存在域控制器以及这些域控制器拥有的角色

    注意

    这些角色包括全局编录、相对标识符 (RID) 分配,以及操作主机角色。 (操作主角色也称为灵活的单主操作或 FSMO.)

  • 林中是否存在域和应用程序分区

  • 是否存在安全组及其当前组成员身份

  • Active Directory 集成 DNS 区域中的 DNS 记录注册

USN 洞的大小可能表示对用户、计算机、信任、密码和安全组的数百、数千甚至数万次更改。 (USN 漏洞的定义是,执行还原的系统状态备份时存在的最高 USN 数与脱机前在回滚域控制器上创建的发起更改数之间的差异。)

在 Windows Server 域控制器上检测 USN 回滚

由于 USN 回滚难以检测,因此当源域控制器将以前确认的 USN 号码发送到目标域控制器时,Windows Server 2003 SP1 或更高版本的域控制器会记录事件 2095,而无需对调用 ID 进行相应更改。

为了防止在未正确还原的域控制器上创建对 Active Directory 的唯一原始更新,Net Logon 服务已暂停。 当 Net Logon 服务暂停时,用户和计算机帐户无法更改不会出站复制此类更改的域控制器上的密码。 同样,Active Directory 管理工具在对 Active Directory 中的对象进行更新时,将有利于正常运行的域控制器。

在域控制器上,如果满足以下条件,则会记录类似于以下内容的事件消息:

  • 源域控制器将以前确认的 USN 号码发送到目标域控制器。
  • 调用 ID 中没有相应的更改。

可以在目录服务事件日志中捕获这些事件。 但是,在管理员观察到它们之前,它们可能会被覆盖。

你可能怀疑发生了 USN 回滚。 但是,在目录服务事件日志中看不到相关事件。 在此方案中,检查 Dsa 不可写注册表项。 此条目提供已发生 USN 回滚的取证证据。

  • 注册表子项: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\NTDS\Parameters
  • 注册表项:Dsa 不可写
  • 值:0x4

删除或手动更改 Dsa 不可写 注册表项值会使回滚域控制器处于永久不受支持的状态。 因此,不支持此类更改。 具体而言,修改 值会删除 USN 回滚检测代码添加的隔离行为。 回滚域控制器上的 Active Directory 分区将与同一 Active Directory 林中的直接复制伙伴和可传递复制伙伴永久不一致。

从 USN 回滚中恢复

可通过三种方法从 USN 回滚中恢复。

References