Active Directory 复制事件 ID 2087:DNS 查找失败导致复制失败

本文提供了当域名系统 (DNS) 查找失败导致复制失败时出现的 Active Directory 复制事件 ID 2087 的解决方案。

适用于: 支持的 Windows Server 版本
原始 KB 编号: 4469661

症状

当域名系统 (DNS) 查找失败导致复制失败时,通常会发生此问题。 当目标域控制器在目录服务事件日志中收到事件 ID 2087 时,尝试解析别名 (CNAME) 资源记录中的全局唯一标识符 (GUID) ,完全限定的域名 (FQDN) ,以及源域控制器 IP 地址的 NetBIOS 名称均失败。 未能找到源复制伙伴会阻止使用该源进行复制,直到问题得到解决。

下面是事件文本的示例:

日志名称:目录
服务源:Microsoft-Windows-ActiveDirectory_DomainService
日期:2008/3/9 上午 11:00:21
事件 ID:2087
任务类别:DS RPC 客户端
级别:错误
关键字:经典
用户:匿名登录
计算机: DC3.contoso.com
说明:Active Directory 无法将源域控制器的以下 DNS 主机名解析为 IP 地址。 此错误阻止在林中的一个或多个域控制器之间复制Active Directory 域服务中的添加、删除和更改。 在解决此错误之前,安全组、组策略、用户和计算机及其密码在域控制器之间将不一致,这可能会影响登录身份验证和对网络资源的访问。

源域控制器:DC2
失败的 DNS 主机名:
b0069e56-b19c-438a-8a1f-64866374dd6e._msdcs.contoso.com
注意:默认情况下,在任何给定的 12 小时期限内,最多仅显示 10 个 DNS 故障,即使发生超过 10 个失败也是如此。 若要记录所有单独的失败事件,请将以下诊断注册表值设置为 1:

注册表路径: HKLM\System\CurrentControlSet\Services\NTDS\Diagnostics\22 DS RPC Client

用户操作:

  1. 如果源域控制器不再正常运行,或者其操作系统已使用其他计算机名称或 NTDSDSA 对象 GUID 重新安装,请使用 MSKB 文章216498中所述的步骤删除源域控制器的元数据 ntdsutil.exe。

  2. 确认源域控制器正在运行Active Directory 域服务,并且可以通过键入“net view \\<source DC name>”或“ping <source DC name>”在网络上访问。

  3. 使用上提供的 DNS 增强版 DCDIAG.EXE 验证源域控制器是否为 DNS 服务使用有效的 DNS 服务器,以及源域控制器的主机记录和 CNAME 记录是否正确注册 http://www.microsoft.com/dns
    dcdiag /test:dns

  4. 通过在目标域控制器的主机上运行 DNS 增强版 DCDIAG.EXE 命令,验证此目标域控制器是否为 DNS 服务使用有效的 DNS 服务器,如下所示:
    dcdiag /test:dns

  5. 有关 DNS 错误失败的进一步分析,请参阅知识库824449: http://support.microsoft.com/?kbid=824449

其他数据
错误值: 11004
请求的名称有效,但找不到所请求类型的数据。

诊断

无法将源域控制器的资源记录 (CNAME) 当前别名解析为 IP 地址的原因如下:

  • 源域控制器已关闭、处于脱机状态或驻留在隔离网络上,并且未删除脱机域控制器的 Active Directory 和 DNS 数据,以指示域控制器不可访问。

  • 存在以下条件之一:

    • 源域控制器尚未在 DNS 中注册其资源记录。
    • 目标域控制器配置为使用无效的 DNS 服务器。
    • 源域控制器配置为使用无效的 DNS 服务器。
    • 源域控制器使用的 DNS 服务器不托管正确的区域,或者区域未配置为接受动态更新。
    • 由于不存在或无效的转发器或委派,目标域控制器查询的直接 DNS 服务器无法解析源域控制器的 IP 地址。
  • Active Directory 域服务 (已删除源域控制器上的 AD DS) ,然后使用相同的 IP 地址重新安装,但新 NTDS 设置 GUID 的知识尚未到达目标域控制器。

  • 已删除源域控制器上的 AD DS,然后重新安装了其他 IP 地址,但当前主机地址 (源域控制器 IP 地址的) 资源记录未注册,或者目标域控制器查询的 DNS 服务器上由于复制延迟或复制错误而不存在。

  • 源域控制器的操作系统已使用不同的计算机名称重新安装,但其元数据尚未删除或已被删除,并且目标域控制器尚未进行入站复制。

解决方案

首先, 确定域控制器是否正常运行。 如果源域控制器不起作用,请 从 AD DS 中删除其剩余元数据

如果源域控制器正常运行,请根据需要继续执行诊断和解决 DNS 问题的过程:

确定域控制器是否正常运行

若要确定源域控制器是否正常运行,请使用以下测试。

要求:

  • 域控制器域中的 “域用户” 组中的成员身份或等效成员身份是完成此过程的最低要求。 在本地和域默认组中查看有关使用适当帐户和组成员身份的详细信息。

  • 工具:网络视图

若要确认域控制器正在运行 AD DS 并在网络上可访问,请在命令提示符处键入以下命令,然后按 Enter

net view \\<SourceDomainControllerName>

其中 <SourceDomainControllerName> 是域控制器的 NetBIOS 名称。

此命令显示 Netlogon 和 SYSVOL 共享,指示服务器充当域控制器。 如果此测试显示域控制器在网络上不起作用,请确定断开连接的性质以及是否可以恢复域控制器,或者是否必须手动从 AD DS 中删除其元数据。 如果域控制器无法运行且无法还原,请使用以下清理 域控制器元数据部分中的过程从 AD DS 中删除与该服务器关联的数据。

清理域控制器元数据

如果测试显示域控制器不再正常运行,但仍在 Active Directory 站点和服务管理单元中看到表示域控制器的对象,将继续尝试复制,并且必须手动从 AD DS 中删除这些对象。 必须使用 Active Directory 用户和计算机 管理单元或 Ntdsutil 工具来清理 (删除) 已失效域控制器的元数据。

如果已失效的域控制器是域中的最后一个域控制器,则还应删除域的元数据。 在升级具有相同名称的新域之前,请留出足够的时间让林中的所有全局编录服务器对删除的域进行入站复制。

任何受支持的 Windows Server 版本中包含的 Ntdsutil 版本中改进了元数据清理过程。 以下过程中提供了有关使用 Ntdsutil 清理元数据的说明。

要求:

  • 企业管理员中的成员身份或等效成员身份是完成此过程的最低要求。 在本地和域默认组中查看有关使用适当帐户和组成员身份的详细信息。
  • 工具:Ntdsutil (System32 命令行工具)

清理服务器元数据的步骤

清理域控制器元数据的一种便捷方法是使用 Active Directory 用户和计算机 管理单元。 有关更多信息,请参阅:

或者,可以使用 Ntdsutil:

  1. 打开提升的命令提示符。

  2. 在命令提示符下,键入 ntdsutil 命令,然后按 Enter

  3. 在 ntdsutil 命令提示符下,键入 metadata cleanup 命令,然后按 Enter

  4. 按如下所示执行元数据清理:

    注意

    如果要删除域元数据和服务器元数据,请跳过以下过程,并使用从步骤 1 开始的过程。

    • 如果仅执行服务器元数据清理,并且使用的是 Windows Server 受支持版本随附的 Ntdsutil.exe 版本,请在 metadata cleanup: 命令提示符处键入以下命令,然后按 Enter

      remove selected server <ServerName>
      

      remove selected server <ServerName1> on <ServerName2>
      
      参数 说明
      <ServerName>、 <ServerName1> 要删除其元数据的域控制器的可分辨名称,格式为 cn=ServerName,cn=<Servers,cn=<SiteName,cn>=Sites,cn=Configuration,dc=<ForestRootDomain>>
      <ServerName2> 要连接到的和要从中删除服务器元数据的域控制器的 DNS 名称。
    • 如果使用 Ntdsutil.exe 版本执行元数据清理,或者同时执行域元数据清理和服务器元数据清理,请执行元数据清理,如下所示:

      1. 在提示符下 metadata cleanup: ,键入 connection 命令,然后按 Enter
      2. 在提示符下 server connections: ,键入 connect to server <Server> 命令,然后按 Enter
      3. 在提示符下 connection: ,键入 quit 命令,然后按 Enter
      4. 在提示符下 metadata cleanup: ,键入 select operation target 命令,然后按 Enter
      5. 在提示符下 select operation target: ,键入 list sites 命令,然后按 Enter
      6. 此时将显示带编号的网站列表。 select site <SiteNumber>键入命令,然后按 Enter
      7. 在提示符下 select operation target: ,键入 list domains in site 命令,然后按 Enter
      8. 此时将显示所选站点中域的编号列表。 select domain <DomainNumber>键入命令,然后按 Enter
      9. 在提示符下 select operation target: ,键入 list servers in site 命令,然后按 Enter
      10. 将显示域和站点中的服务器编号列表。 select server <ServerNumber>键入命令,然后按 Enter
      11. 在提示符下 select operation target: ,键入 quit 命令,然后按 Enter
      12. 在提示符下 metadata cleanup: ,键入 remove selected server 命令,然后按 Enter
      13. 如果已删除其元数据的服务器是域中的最后一个域控制器,并且你想要删除域元数据,请在 metadata cleanup: 提示符下键入 remove selected domain 命令,然后按 Enter。 删除在步骤 h 中选择的域的元数据。
      14. metadata cleanup:ntdsutil: 提示符下,键入 quit,然后按 Enter
      参数 说明
      <服务器> 要连接到的域控制器的 DNS 名称。
      <SiteNumber> 与要清理的服务器站点关联的数字,该站点显示在列表中。
      <DomainNumber> 与要清理的服务器域关联的数字,显示在列表中。
      <ServerNumber> 与要清理的服务器关联的数字,显示在列表中。

使用 Dcdiag 诊断 DNS 问题

如果域控制器联机运行,请继续使用 Dcdiag 工具来诊断和修复可能干扰 Active Directory 复制的 DNS 问题。

使用以下过程完成此过程:

在开始这些过程之前,请收集事件 ID 2087 消息文本中包含的以下信息:

  • 源域控制器和目标域控制器的 FQDN
  • 源域控制器的 IP 地址

任何受支持的 Windows Server 版本中包含的 Dcdiag 更新版本包含提供基本和高级 DNS 功能的合并和改进测试的测试。 可以使用此工具诊断基本 DNS 功能和动态更新。

使用 Dcdiag 进行 DNS 测试时,有一些特定要求不适用于所有 Dcdiag 测试。

要求:

  • 企业管理员中的成员身份或等效成员身份是完成 DNS 测试的最低要求。 在本地和域默认组中查看有关使用适当帐户和组成员身份的详细信息。
  • 工具:Dcdiag.exe
  • 操作系统:使用远程服务器管理工具的任何受支持的 Windows Server 或客户端版本 (RSAT)

注意

可以使用 /f: Dcdiag 命令中的 开关将输出保存到文本文件。 使用 /f: FileNameFileName 中指示的位置生成文件,例如 /f:c:\Test\DnsTest.txt

验证基本 DNS 功能

若要验证可能会干扰 Active Directory 复制的设置,可以首先运行基本 DNS 测试,确保 DNS 在域控制器上正常运行。

基本 DNS 测试检查以下内容:

  • 连接性:测试确定是否在 DNS 中注册域控制器,是否可以通过 PING 联系域控制器,以及是否 (LDAP/RPC) 连接进行轻型目录访问协议/远程过程调用。 如果在域控制器上连接测试失败,则不会针对该域控制器运行任何其他测试。 在运行任何其他 DNS 测试之前,会自动执行连接测试。

  • 基本服务:测试确认以下服务正在运行,并在测试的域控制器上可用:

    • DNS 客户端服务
    • Net Logon 服务
    • 密钥分发中心 (KDC) 服务
    • DNS 服务器服务 (是否在域控制器上安装)
  • DNS 客户端配置:测试确认可访问所有适配器上的 DNS 服务器。

  • 资源记录注册:测试确认主机 (每个域控制器的) 资源记录已在客户端上配置的至少一个 DNS 服务器上注册。

  • (SOA) 的区域和开始:如果域控制器正在运行 DNS 服务器服务,则测试确认存在 Active Directory 域区域 (SOA) 资源记录的 Active Directory 域区域和颁发机构启动。

  • 根区域:检查是否存在根 (.) 区域。

验证基本 DNS 功能的步骤
  1. 在命令提示符上,键入以下命令,然后按 Enter

    dcdiag /test:dns /s:<SourceDomainControllerName> /DnsBasic
    

    其中 <SourceDomainControllerName> 是域控制器的可分辨名称、NetBIOS 名称或 DNS 名称。

    作为替代方法,可以通过键入 /e: 而不是 /s:来测试林中的所有域控制器。

  2. 将报表复制到记事本或等效的文本编辑器中。

  3. 滚动到 Dcdiag 日志文件底部附近的“摘要”表。

  4. 记下“摘要”表中报告“警告”或“失败”状态的所有域控制器的名称。

  5. 通过搜索字符串“DC: <DomainControllerName>”查找问题域控制器的详细分组讨论部分。

  6. 在 DNS 客户端和 DNS 服务器上进行所需的配置更改。

  7. 若要验证配置更改,请使用 或 开关重新运行Dcdiag /test:DNS/e:/s:

如果基本 DNS 测试未显示任何错误,请继续验证用于查找域控制器的资源记录是否已在 DNS 中注册。

验证资源记录注册

目标域控制器使用 DNS 别名 (CNAME) 资源记录来查找其源域控制器复制伙伴。 尽管域控制器可以使用 FQDN (或者如果失败,则 NetBIOS 名称) 查找源复制伙伴,但预期存在别名 (CNAME) 资源记录,并且应验证 DNS 是否正常运行。

可以使用 Dcdiag 通过测试来验证对域控制器位置至关重要的所有资源记录的 dcdiag /test:dns /DnsRecordRegistration 注册。 此测试验证 DNS 中以下资源记录的注册:

  • 别名 (CNAME) (基于 GUID 的资源记录,该记录查找复制伙伴)
  • 主机 () (包含域控制器的 IP 地址的主机资源记录)
  • LDAP SRV (服务 (SRV) 资源记录查找 LDAP 服务器)
  • GC SRV (服务 (SRV) 查找全局编录服务器的资源记录)
  • PDC SRV (服务 (SRV) 资源记录查找主域控制器 (PDC) 模拟器操作主机)

或者,可以使用以下过程仅 (CNAME) 资源记录的别名检查。

验证别名 (CNAME) 资源记录注册的步骤
  1. 在 DNS 管理单元中,找到运行 DNS 服务器服务的任何域控制器,其中服务器托管与域控制器的 Active Directory 域同名的 DNS 区域。

  2. 在控制台树中,单击名为 _msdcs 的区域。Dns_Domain_Name

    注意

    在 Windows 2000 Server DNS 中,_msdcs。Dns_Domain_Name是 Active Directory 域名的 DNS 区域的子域。 在 Windows Server 2003 DNS 中,_msdcs。Dns_Domain_Name是一个单独的区域。

  3. 在详细信息窗格中,验证是否存在以下资源记录:

    • 名为 Dsa_Guid ._msdcs 的资源记录 (CNAME) 别名。Dns_Domain_Name
    • 相应的主机 (DNS 服务器名称的) 资源记录

如果未注册别名 (CNAME) 资源记录,请验证动态更新是否正常运行。 使用下一部分中的测试。

验证动态更新

如果基本 DNS 测试显示 DNS 中不存在资源记录,请使用动态更新测试来诊断 Net Logon 服务未自动注册资源记录的原因。 若要验证 Active Directory 域区域是否配置为接受安全动态更新并执行测试记录的注册 (_dcdiag_test_record) ,请使用以下过程。 测试记录在测试后自动删除。

若要验证动态更新,请在命令提示符处键入以下命令,然后按 Enter

dcdiag /test:dns /s:<SourceDomainControllerName> /DnsDynamicUpdate

其中 <SourceDomainControllerName> 是域控制器的可分辨名称、NetBIOS 名称或 DNS 名称。

作为替代方法,可以使用 开关而不是/s:开关来测试所有域控制器/e:

如果未配置安全动态更新,请使用以下过程对其进行配置。

启用安全的动态更新

  1. 打开 DNS 管理单元。
  2. 在控制台树中,右键单击适用的区域,然后单击“ 属性”。
  3. 在“ 常规 ”选项卡上,验证区域类型是否为 Active Directory 集成。
  4. “动态汇报”中,单击“仅保护”。

注册 DNS 资源记录

如果源域控制器的 DNS 中未显示 DNS 资源记录,并且你已验证动态更新,并且想要立即注册 DNS 资源记录,则可以使用以下过程手动强制注册。 域控制器上的 Net Logon 服务注册域控制器在网络上定位所需的 DNS 资源记录。 DNS 客户端服务 (别名 (CNAME) 记录指向的 A) 资源记录注册主机。

要求:

  • 林根域或企业管理员组中的域管理员组中的成员身份或等效身份是完成此过程的最低要求。
  • 工具: net stop/net start、ipconfig

手动注册 DNS 资源记录

若要在源域控制器上手动启动域控制器定位器资源记录的注册,请在命令提示符下键入以下命令,然后在每个命令后按 Enter

net stop net logon
net start net logon

若要手动启动主机 A 资源记录的注册,请在命令提示符处键入以下命令,然后按 Enter

ipconfig /flushdns
ipconfig /registerdns

等待 15 分钟,然后查看事件查看器中的事件,以确保正确注册资源记录。

重复本节前面 “验证资源记录注册 ”部分中的过程,验证资源记录是否显示在 DNS 中。

在源域控制器和目标域控制器之间同步复制

完成 DNS 测试后,使用以下过程将入站连接上的复制从源域控制器同步到目标域控制器。

要求:

  • 目标域控制器域中的“域管理员”组中的成员身份或等效成员身份是完成此过程的最低要求。 在本地和域默认组中查看有关使用适当帐户和组成员身份的详细信息。
  • 工具:Active Directory 站点和服务

从源域控制器同步复制的步骤

  1. 打开“Active Directory 站点和服务”。
  2. 在控制台树中,双击“ 站点” 容器,双击要同步复制的域控制器的站点,双击“ 服务器” 容器,双击域控制器的服务器对象,然后单击“ NTDS 设置”。
  3. 在详细信息窗格中的“ 从服务器 ”列中,找到显示源域控制器名称的连接对象。
  4. 右键单击相应的连接对象,然后单击“ 立即复制”。
  5. 单击“确定”

如果复制不成功,请使用以下部分中的过程验证 NTDS 设置 GUID 的一致性。

验证 NTDS 设置 GUID 的一致性

如果已执行所有 DNS 测试和其他测试,但复制未成功,请使用以下过程验证目标域控制器用于查找其复制伙伴的 NTDS Settings 对象的 GUID 是否与当前对源域控制器本身生效的 GUID 匹配。 若要执行此测试,可查看对象 GUID,因为它显示在每个域控制器的本地目录中。

要求:

  • 目标域控制器域中的“域管理员”组中的成员身份或等效成员身份是完成此过程的最低要求。
  • 工具:Ldp.exe (Windows 支持工具)

验证 NTDS 设置 GUID 的一致性的步骤

  1. 单击 “开始”,单击“ 运行”,键入 Ldp,然后单击“ 确定”。
  2. 在“连接”菜单上,单击“连接”
  3. 在“ 连接 ”对话框中,将“ 服务器 ”框留空。
  4. “端口”中,键入 389,然后单击“ 确定”。
  5. “连接 ”菜单上,单击“ 绑定”。
  6. 在“ 绑定 ”对话框中,提供企业管理员凭据。 如果尚未选择,请单击“ ”。
  7. “域”中,键入林根域的名称,然后单击“ 确定”。
  8. 在“ 视图 ”菜单上,单击“ ”。
  9. 在“ 树视图 ”对话框中,键入 “CN=Configuration,DC=Forest_Root_Domain 然后单击” 确定”。
  10. 导航到对象 CN=NTDS 设置,CN=SourceServerName,CN=服务器,CN=SiteName,CN=Sites,CN=配置,DC=ForestRootDomain。
  11. 双击 “NTDS 设置” 对象。 在详细信息窗格中,查看属性 objectGUID 的值。 右键单击该值,然后将其复制到记事本。
  12. “连接 ”菜单上,单击“ 断开连接”。
  13. 重复步骤 2 到 11,但在步骤 3 中,键入源域控制器的名称,例如 DC03。
  14. 在记事本中,比较两个 GUID 的值。
  15. 如果值不匹配,则目标域控制器必须接收有效 GUID 的复制。 检查其他域控制器上的 GUID 值,并使用具有正确 GUID 的其他域控制器尝试在目标域控制器上进行复制。
  16. 如果值匹配,请验证 GUID 是否与 Dsa_Guid._msdcs 中的 GUID 匹配。源域控制器的Dns_Domain_Nameresource记录,如下所示:
    1. 请注意每个域控制器在其网络设置中的 TCP/IP 属性中标识的主 DNS 服务器。 相应的 TCP/IP 属性中列出的所有 DNS 服务器都应能够间接或直接解析此别名 (CNAME) 资源记录。
    2. 从列出的服务器中,通过查看为名称服务器列出的服务器名称来标识此域区域的权威名称服务器, (NS) 区域根的资源记录。 (在 DNS 管理单元中,选择根域的正向查找区域,然后在详细信息窗格中查看名称服务器 (NS) 记录。)
    3. 在步骤 b 中获取的名称服务器中,打开 DNS 管理单元,然后双击林根域名的正向查找区域。 双击“_msdcs”文件夹,并记下服务器名称) 资源记录 (CNAME 的别名。

数据收集

如果需要 Microsoft 支持方面的帮助,建议按照 使用 TSS 收集 Active Directory 复制问题的信息中所述的步骤收集信息。