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

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

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

摘要

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

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

Windows 中的许多 RPC 服务器允许在自定义配置项(如注册表项)中指定服务器端口。 当可以指定专用服务器端口时,你知道哪些流量通过防火墙在主机之间流动。 还可以以更定向的方式定义允许的流量。

作为服务器端口,请选择可能要在下面指定的范围之外的端口。 可以在 Windows 的服务概述和网络端口要求中找到 Windows 和主要 Microsoft 产品中使用的服务器端口的完整列表。

本文还列出了 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 地址存储在接口封送数据包中。 如果客户端无法连接到数据包中指定的地址,则无法正常工作。

更多信息

下面讨论的值 (和 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(含)以帮助说明如何配置新的注册表项。 这不是任何特定系统所需的最小端口数的建议。

  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.

有关更多信息,请参阅: