如何配置 RPC 动态端口分配以使用防火墙

本文帮助您修改注册表中的远程过程调用 (RPC) 参数,以确保 RPC 动态端口分配可以与防火墙一起工作。

适用于:  Windows Server 2012R2
原始 KB 编号:   154596

摘要

服务器应用程序和远程管理应用程序(如动态主机配置协议 (DHCP) 管理器、Windows Internet 名称服务 (WINS) 管理器等)使用 RPC 动态端口分配。 RPC 动态端口分配根据所使用的操作系统的实现,指示 RPC 程序使用为 TCP 和 UDP 配置的范围中的特定随机端口。 有关详细信息,请参阅下面的参考。

使用防火墙的客户可能希望控制 RPC 使用的端口,以便其防火墙路由器可以配置为仅转发这些传输控制协议 (UDP 和 TCP) 端口。

许多 RPC 服务器Windows,您可以在自定义配置项(如注册表项)中指定服务器端口。 如果可以指定专用服务器端口,则了解主机之间通过防火墙的流量。 并且你可以以更定向的方式定义允许哪些流量。

作为服务器端口,选择一个超出你可能希望在下面指定的范围的端口。 可以在服务概述和网络端口要求中查找有关 microsoft Windows 和主要 Microsoft 产品中使用的服务器端口Windows。

本文还列出了 RPC 服务器,以及可以将哪些 RPC 服务器配置为使用除 RPC 运行时提供设施之外的自定义服务器端口。

某些防火墙还允许 UUID 筛选,从 RPC 接口 UUID 的 RPC 终结点映射器请求中学习。 响应具有服务器端口号,然后允许传递此端口上的后续 RPC 绑定。

重要

仅在 RPC 服务器未提供定义服务器端口的方法时,才使用本文中所述的方法。

以下注册表项适用于 Windows NT 4.0 及以上。 它们不适用于早期版本的 Windows NT。 即使可以配置客户端用于与服务器通信的端口,客户端也必须能够通过其实际 IP 地址到达服务器。 不能通过执行地址转换的防火墙使用 DCOM。 例如,客户端连接到虚拟地址 198.252.145.1,防火墙会以透明方式映射到服务器的实际地址,例如 192.100.81.101。 DCOM 将原始 IP 地址存储在接口中封送数据包。 如果客户端无法连接到数据包中指定的地址,它将不起作用。

有关详细信息,请参阅将 DCOM/COM+ 与防火墙一同使用

更多信息

下面 (讨论) Internet 键的值不会显示在注册表中。 必须使用注册表编辑器手动添加它们。

重要

此部分(或称方法或任务)介绍了修改注册表的步骤。 但是,注册表修改不当可能会出现严重问题。 因此,请务必严格按照这些步骤操作。 为了加强保护,应先备份注册表,再进行修改。 如果出现问题,可以还原注册表。 有关详细信息,请参阅如何在 Windows 中备份和还原注册表

使用注册表编辑器,您可以修改 RPC 的以下参数。 下面讨论的 RPC 端口项值全部位于注册表中的以下注册表项中:

HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc\Internet\Entry name Data Type

  • 端口REG_MULTI_SZ

    指定一组 IP 端口范围,其中包括 Internet 中提供的所有端口或 Internet 上不可用的所有端口。 每个字符串表示一个端口或一组包含的端口。

    例如,单个端口可能由 5984 表示,一组端口可能由 5000-5100 表示。 如果任何条目超出 0 到 65535 的范围,或者无法解释任何字符串,则 RPC 运行时将整个配置视为无效。

  • PortsInternetAvailable REG_SZ Y 或 N (不区分大小写)

    如果为 Y,则端口项中列出的端口是该计算机上所有 Internet 可用的端口。 如果为 N,则端口项中列出的端口是 Internet 不可用的所有端口。

  • UseInternetPorts REG_SZ Y 或 N (不区分大小写

    指定系统默认策略。

    如果为 Y,则使用默认值的进程将被分配来自 Internet 可用端口集的端口,如前面所定义。 如果为 N,则使用默认值的进程将分配来自一组仅 Intranet 端口的端口。

示例

本示例中,已任意选择端口 5000 到 6000(含 5000 和 6000)以帮助说明如何配置新的注册表项。 建议不要为任何特定系统使用最少数量的端口。

  1. 将 Internet 密钥添加到 HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc

  2. 在 Internet 键下,添加值 Ports (MULTI_SZ) 、PortsInternetAvailable (REG_SZ) 和 UseInternetPorts (REG_SZ) 。

    例如,新注册表项如下所示:

    端口:REG_MULTI_SZ:5000-6000
    PortsInternetAvailable:REG_SZ:Y
    UseInternetPorts:REG_SZ:Y

  3. 重新启动服务器。 所有使用 RPC 动态端口分配的应用程序都使用端口 5000 到 6000(包括这两者)。

应打开端口 5000 上方的一系列端口。 低于 5000 的端口号可能已被其他应用程序使用,并且可能导致与 DCOM 应用程序 (冲突) 。 此外,以前的体验显示应至少打开 100 个端口,因为多个系统服务依赖于这些 RPC 端口相互通信。

备注

所需的最小端口数可能因计算机不同而不同。 如果 RPC 动态端口受限,通信量较高的计算机可能会遇到端口耗尽情况。 在限制端口范围时,应考虑这一点。

警告

如果端口配置出错或池中的端口不足,则终结点映射器服务将无法向动态终结点注册 RPC 服务器。 出现配置错误时,错误代码将为 87 (0x57) ERROR_INVALID_PARAMETER。 这也会Windows RPC 服务器,如 Netlogon。 在这种情况下,它将记录事件 5820:

Log Name: System  
Source: NETLOGON  
Event ID: 5820  
Level: Error  
Keywords: Classic  
Description:  
The Netlogon service could not add the AuthZ RPC interface. The service was terminated. The following error occurred: The parameter is incorrect.

有关详细信息,请参阅: