如何配置与防火墙一起使用的 RPC 动态端口分配

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

原始 KB 数: 154596

总结

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

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

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

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

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

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

重要

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

以下注册表项适用于 Windows NT 4.0 及更高版本。 它们不适用于早期版本的 Windows NT。 即使可以配置客户端用来与服务器通信的端口,客户端也必须能够通过其实际 IP 地址访问服务器。 不能通过执行地址转换的防火墙使用 DCOM。 例如,客户端连接到虚拟地址 192.168.1.2,防火墙以透明方式映射到服务器的实际地址(例如 192.168.1.3)。 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 密钥下,添加值端口(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 应用程序(s)冲突。 此外,以前的体验表明应打开至少 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.

有关详细信息,请参阅: