复制错误 1753:端点映射程序中没有更多可用的端点

本文介绍因 Win32 错误 1753(端点映射程序中没有更多可用的端点)而失败的 Active Directory 操作的症状、原因和解决步骤。

DCDIAG 报告连接测试、Active Directory 复制测试或 KnowsOfRoleHolders 测试失败,并出现错误 1753:“端点映射程序中没有更多可用的端点。”

Testing server: <site><DC Name>
Starting test: Connectivity
* Active Directory LDAP Services Check
* Active Directory RPC Services Check
[<DC Name>] DsBindWithSpnEx() failed with error 1753,
There are no more endpoints available from the endpoint mapper..
Printing RPC Extended Error Info:
Error Record 1, ProcessID is <process ID> (DcDiag)
System Time is: <date> <time>
Generating component is 2 (RPC runtime)
Status is 1753: There are no more endpoints available from the endpoint mapper. Detection location is 500
NumberOfParameters is 4
Unicode string: ncacn_ip_tcp
Unicode string: <source DC object GUID>._msdcs.contoso.com
Long val: -481213899
Long val: 65537
Error Record 2, ProcessID is 700 (DcDiag)
System Time is: <date> <time>
Generating component is 2 (RPC runtime)
Status is 1753: There are no more endpoints available from the endpoint mapper.
NumberOfParameters is 1
Unicode string: 1025
[Replications Check,<DC Name>] A recent replication attempt failed:
From <source DC> to <destination DC>
Naming Context: <DN path of directory partition>
The replication generated an error (1753):
There are no more endpoints available from the endpoint mapper.
The failure occurred at <date> <time>.
The last success occurred at <date> <time>.
3 failures have occurred since the last success.
The directory on <DC name> is in the process.
of starting up or shutting down, and is not available.
Verify machine is not hung during boot.

REPADMIN.EXE 报告复制尝试失败,状态为 1753。 通常引用 1753 状态的 REPADMIN 命令包括但不限于:

  • REPADMIN /REPLSUM
  • REPADMIN /SHOWREPL
  • REPADMIN /SHOWREPS
  • REPADMIN /SYNCALL

“REPADMIN /SHOWREPS”中描述了从 CONTOSO-DC2 到 CONTOSO-DC1 的入站复制失败并出现“复制访问被拒绝”错误的示例输出如下所示:

Default-First-Site-NameCONTOSO-DC1
DSA Options: IS_GC
Site Options: (none)
DSA object GUID: b6dc8589-7e00-4a5d-b688-045aef63ec01
DSA invocationID: b6dc8589-7e00-4a5d-b688-045aef63ec01
==== INBOUND NEIGHBORS ======================================
DC=contoso,DC=com
Default-First-Site-NameCONTOSO-DC2 via RPC
DSA object GUID: 74fbe06c-932c-46b5-831b-af9e31f496b2
Last attempt @ <date> <time> failed, result 1753 (0x6d9):
There are no more endpoints available from the endpoint mapper.
<#> consecutive failure(s).
Last success @ <date> <time>.

Active Directory 站点和服务中的“检查复制拓扑”命令返回“端点映射程序中没有更多可用的端点。”

右键单击源 DC 中的连接对象并选择“检查复制拓扑”失败,并显示“端点映射程序中没有更多可用的端点”。屏幕上的错误消息如下所示:

对话框标题文本:“检查复制拓扑”对话框消息文本:尝试联系域控制器期间发生以下错误:端点映射程序中没有更多可用的端点。

Active Directory 站点和服务中的“立即复制”命令返回“端点映射程序中没有更多可用的端点”。右键单击源 DC 中的连接对象并选择“立即复制”失败,并显示“端点映射程序中没有更多可用的端点”。屏幕上的错误消息如下所示:

对话框标题文本:“立即复制”对话框消息文本:尝试将命名上下文 <%目录分区名称%> 从域控制器 <源 DC> 同步到域控制器 <目标 DC> 期间发生以下错误:

端点映射程序中未提供更多端点。 操作不会继续

NTDS KCC、NTDS General 或状态为 -2146893022 的 Microsoft-Windows-ActiveDirectory_DomainService 事件记录在事件查看器的目录服务日志中。

通常引用 -2146893022 状态的 Active Directory 事件包括但不限于:

事件 ID 事件来源 事件字符串
1655 NTDS 概述 Active Directory 尝试与以下全局目录通信,但尝试失败。
1925 NTDS KCC 尝试为以下可写目录分区建立复制链接失败。
1265 NTDS KCC 知识一致性检查 (KCC) 尝试为以下目录分区和源域控制器添加复制协议失败。

原因

以下步骤显示了 RPC 工作流,从步骤 1 中向 RPC 端点映射程序 (EPM) 注册服务器应用程序开始,到步骤 7 中从 RPC 客户端向客户端应用程序传递数据。

ADDS RPC 工作流

  1. 服务器应用向 RPC 端点映射程序 (EPM) 注册其端点
  2. 客户端发出 RPC 调用(代表用户、OS 或应用程序启动的操作)
  3. 客户端 RPC 联系目标计算机 EPM,并请求端点完成客户端调用
  4. 服务器计算机的 EPM 使用端点进行响应
  5. 客户端 RPC 与服务器应用联系
  6. 服务器应用执行调用,将结果返回给客户端 RPC
  7. 客户端 RPC 将结果传回客户端应用

故障 1753 由步骤 #3 和 #4 之间的一个故障生成。 具体而言,错误 1753 意味着 RPC 客户端(目标 DC)能够通过端口 135 联系 RPC 服务器(源 DC),但 RPC 服务器(源 DC)上的 EPM 无法找到相关的 RPC 应用程序,并返回了服务器端错误 1753。 出现 1753 错误表示 RPC 客户端(目标 DC)通过网络从 RPC 服务器(AD 复制源 DC)收到服务器端错误响应。

1753 错误的具体根本原因包括:

  • 服务器应用从未启动(即,从未尝试上面“更多信息”图中的步骤 #1)。
  • 服务器应用已启动,但在初始化期间出现了一些故障,导致它无法向 RPC 终结点映射器注册(即,上面“更多信息”图中的步骤 #1 已尝试,但失败)。
  • 服务器应用已启动,但随后死机。 (即,上面“更多信息”图中的步骤 #1 已成功完成,但后来因服务器死机而撤消)。
  • 服务器应用手动取消注册其端点(类似于 3,但是有意为之。不太可能,但为了完整性而包括在内。)
  • 由于 DNS、WINS 或主机/Lmhosts 文件中出现了名称到 IP 的映射错误,RPC 客户端(目标 DC)联系了与预期服务器不同的 RPC 服务器。

错误 1753 不是由以下原因引起的:

  • RPC 客户端(目标 DC)与 RPC 服务器(源 DC)之间缺少通过端口 135 的网络连接
  • 使用端口 135 的 RPC 服务器(源 DC)和通过临时端口的 RPC 客户端(目标 DC)之间缺少网络连接。
  • 密码不匹配或源 DC 无法解密 Kerberos 加密数据包

解决方法

验证向端点映射程序注册其服务的服务已启动

  • 对于 Windows 2000 和 Windows Server 2003 DC:确保源 DC 启动到正常模式。
  • 对于 Windows Server 2008 或 Windows Server 2008 R2:从源 DC 的控制台中,启动服务管理器 (services.msc) 并验证 Active Directory 域服务这一服务正在运行。

验证 RPC 客户端(目标 DC)已连接到预期的 RPC 服务器(源 DC)

公共 Active Directory 林中的所有 DC 都在 _msdcs. <林根域> DNS 区域中注册一个域控制器 CNAME 记录,而不管它们驻留在林中的哪个域。 DC CNAME 记录派生自每个域控制器的“NTDS 设置”对象的 objectGUID 属性。

执行基于复制的操作时,目标 DC 会在 DNS 中查询源 DC CNAME 记录。 CNAME 记录包含源 DC 完全限定的计算机名称,该名称用于通过 DNS 客户端缓存查找、主机/LMHost 文件查找、DNS 中的主机 A/AAAA 记录或 WINS 来派生源 DC IP 地址。

DNS、WINS、主机和 LMHOST 文件中过时的“NTDS 设置”对象和错误的“名称到 IP”映射可能会导致 RPC 客户端(目标 DC)连接到错误的 RPC 服务器(源 DC)。 此外,错误的“名称到 IP”映射可能导致 RPC 客户端(目标 DC)连接到甚至未安装相关 RPC 服务器应用程序(在此示例中为 Active Directory 角色)的计算机。 (示例:DC2 的过时主机记录包含 DC3 或成员计算机的 IP 地址)。

验证 Active Directory 的目标 DC 副本中存在的源 DC 的 objectGUID 与存储在 Active Directory 的源 DC 副本中的源 DC objectGUID 匹配。 如果存在差异,请在“ntds 设置”对象上使用“repadmin /showobjmeta”查看哪一个对应于源 DC 的上次升级(提示:将“NTDS 设置”对象创建日期“from /showobjmeta”的日期戳与源 DC dcpromo.log 文件中的上次升级日期进行比较。你可能必须使用 DCPROMO.LOG 文件本身的最后修改/创建日期)。 如果对象 GUID 不同,则目标 DC 可能具有源 DC 的过时“NTDS 设置”对象,其 CNAME 记录引用了具有错误的“名称到 IP”映射的主机记录。

在目标 DC 上,运行“IPCONFIG /ALL”以确定目标 DC 用于名称解析的 DNS 服务器:

c:>ipconfig /all

在目标 DC 上,针对源 DC 完全限定的 DC CNAME 记录运行 NSLOOKUP:

c:>nslookup -type=cname <fully qualified cname of source DC> <destination DCs primary DNS Server IP >
c:>nslookup -type=cname <fully qualified cname of source DC> <destination DCs secondary DNS Server IP>

验证 NSLOOKUP 返回的 IP 地址“拥有”源 DC 的主机名/安全标识:

C:>NBTSTAT -A <IP address returned by NSLOOKUP in the step above>

登录到源 DC 的控制台,从 CMD 提示符运行“IPCONFIG”,并验证源 DC 拥有上述 NSLOOKUP 命令返回的 IP 地址

检查 DNS 中过时/重复的“主机到 IP”映射

NSLOOKUP -type=hostname <single label hostname of source DC> <primary DNS Server IP on destination DC>
NSLOOKUP -type=hostname <single label hostname of source DC> <secondary DNS Server IP on destination DC>

NSLOOKUP -type=hostname <fully qualified computer name of source DC> <primary DNS Server IP on destination DC>
NSLOOKUP -type=hostname <fully qualified computer name of source DC> <secondary DNS Server IP on dest. DC>

如果主机记录中存在无效的 IP 地址,请调查 DNS 清理是否已启用并正确配置。

如果上述测试或网络跟踪未显示返回无效 IP 地址的名称查询,则认为 HOST 文件、LMHOSTS 文件和 WINS 服务器中存在过时条目。 请注意,还可以将 DNS 服务器配置为执行 WINS 回退名称解析。

  • 验证服务器应用程序(Active Directory 等)已向 RPC 服务器(源 DC)上的端点映射程序注册
  • Active Directory 混合使用已知端口和动态注册端口。 下表列出了 Active Directory 域控制器使用的已知端口和协议。
RPC 服务器应用程序 端口 TCP UDP
DNS 服务器 53 X X
Kerberos 88 X X
LDAP 服务器 389 X X
Microsoft-DS 445 X X
LDAP SSL 636 X X
全局编录服务器 3268 X
全局编录服务器 3269 X

已知端口未向端点映射程序注册。

Active Directory 和其他应用程序也注册在 RPC 临时端口范围内接收动态分配端口的服务。 此类 RPC 服务器应用程序在 Windows 2000 和 Windows Server 2003 计算机上被动态分配 1024 到 5000 之间的 TCP 端口,而在 Windows Server 2008 和 Windows Server 2008 R2 计算机上被动态分配 49152 和 65535 范围之间的端口。 可以使用知识库文章 224196 中所述的步骤在注册表中对复制使用的 RPC 端口进行硬编码。 配置为使用硬编码端口时,Active Directory 将继续向 EPM 注册。

验证相关 RPC 服务器应用程序已向 RPC 服务器(AD 复制情况下,为源 DC)上的 RPC 端点映射程序注册了自身。

有多种方法可以完成此任务,但其中一种方法是在源 DC 的控制台上使用以下语法从管理员特权 CMD 提示符安装并运行 PORTQRY:

portquery -n <source DC> -e 135 > file.txt

在 portqry 输出中,记下 ncacn_ip_tcp 协议的“MS NT 目录 DRS 接口”(UUID = 351...) 动态注册的端口号。 以下代码片段显示了 Windows Server 2008 R2 DC 中的示例 portquery 输出:

UUID: e3514235-4b06-11d1-ab04-00c04fc2dcd2 MS NT Directory DRS Interface
ncacn_np:CONTOSO-DC01[\pipe\lsass]
UUID: e3514235-4b06-11d1-ab04-00c04fc2dcd2 MS NT Directory DRS Interface
ncacn_np:CONTOSO-DC01[\PIPE\protected_storage]
UUID: e3514235-4b06-11d1-ab04-00c04fc2dcd2 MS NT Directory DRS Interface
ncacn_ip_tcp:CONTOSO-DC01[49156]
UUID: e3514235-4b06-11d1-ab04-00c04fc2dcd2 MS NT Directory DRS Interface
ncacn_http:CONTOSO-DC01[49157]
UUID: e3514235-4b06-11d1-ab04-00c04fc2dcd2 MS NT Directory DRS Interface
ncacn_http:CONTOSO-DC01[6004]

解决此错误的其他可能方法:

  • 验证源 DC 在正常模式下启动,以及源 DC 上的 OS 和 DC 角色已完全启动。

  • 验证 Active Directory 域服务正在运行。 如果服务当前已停止或未使用默认启动值进行配置,请重置默认启动值,重启修改后的 DC,然后重试该操作。

  • 验证 RPC 服务和 RPC 定位符的启动值和服务状态对于 RPC 客户端(目标 DC)和 RPC 服务器(源 DC)的 OS 版本是正确的。 如果服务当前已停止或未使用默认启动值进行配置,请重置默认启动值,重启修改后的 DC,然后重试该操作。

    • 此外,确保服务上下文与下表中列出的默认设置匹配。

      服务 Windows Server 2003 和更高版本中的默认状态(启动类型) Windows Server 2000 中的默认状态(启动类型)
      远程过程调用 已启动(自动) 已启动(自动)
      远程过程调用定位符 Null 或已停止(手动) 已启动(自动)
  • 验证动态端口范围的大小未受约束。 用于枚举 RPC 端口范围的 Windows Server 2008 和 Windows Server 2008 R2 NETSH 语法如下所示:

    netsh int ipv4 show dynamicport tcp
    netsh int ipv4 show dynamicport udp
    netsh int ipv6 show dynamicport tcp
    netsh int ipv6 show dynamicport udp
    
  • 验证“知识库 224196”中定义的硬编码端口定义属于源 DC OS 版本的动态端口范围。 查看知识库文章224196 并确保硬编码端口属于源 DC 操作系统版本的临时端口范围。

  • 验证 ClientProtocols 键是否存在于 HKLM\Software\Microsoft\Rpc 下,并包含以下 5 个默认值:

    ncacn_http REG_SZ rpcrt4.dll
    ncacn_ip_tcp REG_SZ rpcrt4.dll
    ncacn_nb_tcp REG_SZ rpcrt4.dll
    ncacn_np REG_SZ rpcrt4.dll
    ncacn_ip_udp REG_SZ rpcrt4.dll
    

详细信息

导致 RPC 错误 1753 与 -2146893022 的错误“名称到 IP”映射的示例:目标主体名称不正确

contoso.com 域由 IP 地址为 x.x.1.1 和 x.x.1.2 的 DC1 和 DC2 组成。 DC2 的主机“A”/“AAAA”记录已在为 DC1 配置的所有 DNS 服务器上正确注册。 此外,DC1 上的 HOSTS 文件包含将 DC2 完全限定的主机名映射到 IP 地址 x.x.1.2 的条目。 之后,DC2 的 IP 地址从 X.X.1.2 更改为 X.X.1.3,且新的成员计算机加入 IP 地址为 x.x.1.2 的域。 Active Directory 站点和服务管理单元中的“立即复制”命令触发的 AD 复制尝试失败,并出现错误 1753,如以下跟踪所示:

F# SRC    DEST    Operation
1 x.x.1.1 x.x.1.2 ARP:Request, x.x.1.1 asks for x.x.1.2
2 x.x.1.2 x.x.1.1 ARP:Response, x.x.1.2 at 00-13-72-28-C8-5E
3 x.x.1.1 x.x.1.2 TCP:Flags=......S., SrcPort=50206, DstPort=DCE endpoint resolution(135)
4 x.x.1.2 x.x.1.1 ARP:Request, x.x.1.2 asks for x.x.1.1
5 x.x.1.1 x.x.1.2 ARP:Response, x.x.1.1 at 00-15-5D-42-2E-00
6 x.x.1.2 x.x.1.1 TCP:Flags=...A..S., SrcPort=DCE endpoint resolution(135)
7 x.x.1.1 x.x.1.2 TCP:Flags=...A...., SrcPort=50206, DstPort=DCE endpoint resolution(135)
8 x.x.1.1 x.x.1.2 MSRPC:c/o Bind: UUID{E1AF8308-5D1F-11C9-91A4-08002B14A0FA} EPT(EPMP)
9 x.x.1.2 x.x.1.1 MSRPC:c/o Bind Ack: Call=0x2 Assoc Grp=0x5E68 Xmit=0x16D0 Recv=0x16D0
10 x.x.1.1 x.x.1.2 EPM:Request: ept_map: NDR, DRSR(DRSR) {E3514235-4B06-11D1-AB04-00C04FC2DCD2} [DCE endpoint resolution(135)]
11 x.x.1.2 x.x.1.1 EPM:Response: ept_map: 0x16C9A0D6 - EP_S_NOT_REGISTERED

在帧 10 处,目标 DC 通过端口 135 向源 DC 端点映射程序查询 Active Directory 复制服务类 UUID E351...

在帧 11 中,源 DC(在本例中为一台成员计算机,它尚未托管 DC 角色,因此尚未向其本地 EPM 注册用于复制服务的“E351... UUID”)以符号错误 EP_S_NOT_REGISTERED 响应,该错误映射到十进制错误 1753、十六进制错误 0x6d9 和友好错误“终结点映射器中没有更多可用的终结点”。

之后,IP 地址为 x.x.1.2 的成员计算机在 contoso.com 域中升级为副本“MayberryDC”。 同样,“立即复制”命令用于触发复制,但这次失败,屏幕上显示错误“目标主体名称不正确”。网络适配器被分配了 IP 地址 x.x.1.2 的计算机是域控制器,当前已启动到正常模式并已向其本地 EPM 注册“E351... 复制服务 UUID”,但它没有 DC2 的名称或安全标识,并且无法解密来自 DC1 的 Kerberos 请求,因此请求现在失败,并显示错误“目标主体名称不正确”。该错误映射到十进制错误 -2146893022/十六进制错误 0x80090322。

此类无效的“主机到 IP”映射可能是由主机/lmhost 文件中的过时条目、DNS 中的主机 A/AAAA 注册或 WINS 引起的。

摘要:此示例失败,因为无效的“主机到 IP”映射(在本例中位于 HOST 文件中)导致目标 DC 解析为“源”DC,该 DC 没有运行 Active Directory 域服务这一服务(甚至没有安装该服务),因此复制 SPN 尚未注册,源 DC 返回错误 1753。 在第二个示例中,无效的“主机到 IP”映射(同样位于 HOST 文件中)导致目标 DC 连接到已注册“E351... 复制 SPN”的 DC,但该源与预期的源 DC 具有不同的主机名和安全标识,因此尝试失败,出现错误 -2146893022:目标主体名称不正确。