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

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

适用于: 支持的 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. 通过键入“net view \\<source DC name”或“ping <源 DC 名称>>”,确认源域控制器正在运行Active Directory 域服务且可在网络上访问。

  3. 使用 http://www.microsoft.com/dns 上提供的 DNS 增强版 DCDIAG.EXE 验证源域控制器是否对 DNS 服务使用有效的 DNS 服务器,并且源域控制器的主机记录和 CNAME 记录是否正确注册
    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 地址重新安装,但由于复制延迟或复制错误,目标域控制器查询的 DNS 服务器上未注册或不存在源域控制器的当前主机地址 (A) 资源记录。

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

解决方法

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

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

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

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

要求:

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

  • 工具:Net 视图

若要确认域控制器正在运行 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。
      参数 说明
      <Server> 要连接到的域控制器的 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: FileName在 FileName指示的位置生成文件,例如/f:c:\Test\DnsTest.txt

验证基本 DNS 功能

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

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

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

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

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

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

  • 区域和起始授权机构 (SOA):如果域控制器正在运行 DNS 服务器服务,则该测试将确认 Active Directory 域区域及其起始授权机构 (SOA) 资源记录是否存在。

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

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

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

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

    或者,可以通过键入而不是/s:键入/e:来测试林中的所有域控制器。

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

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

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

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

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

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

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

验证资源记录注册

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

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

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

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

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

  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 服务器名称的相应主机 (A) 资源记录

如果未注册别名(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 资源记录,则可以使用以下过程手动强制注册。 域控制器上的网络登录服务将注册在网络上定位域控制器所需的 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 测试和其他测试和复制未成功,请使用以下过程验证目标域控制器用于查找其复制伙伴的 NTD 设置对象的 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=Servers,CN=SiteName, CN=Sites,CN=configuration,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 复制问题的信息中所述的步骤收集信息。