将 Microsoft 分布式事务处理 (DTC) 配置为通过防火墙工作

本文介绍如何配置 Microsoft 分布式事务处理协调器 (DTC) 以通过防火墙工作。

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

更多信息

可以将 DTC 配置为通过防火墙进行通信,包括网络地址转换防火墙。

DTC 使用远程过程调用 (RPC) 动态端口分配。 默认情况下,RPC 动态端口分配随机选择 1024 之上的端口号。 通过修改注册表,您可以控制 RPC 动态为传入通信分配的端口。 然后,可以将防火墙配置为仅将传入的外部通信限制到 RPC 终结点映射器端口 (端口 135) 。

必须为 DTC 提供一个传入动态端口。 您可能需要为依赖 RPC 的其他子系统提供更多传入的动态端口。

默认情况下,本文中介绍的注册表项和值不会显示在注册表中;必须使用注册表编辑器添加它们。

重要

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

在两台计算机上执行以下步骤可控制 RPC 动态端口分配。 必须为指定端口在两个方向打开防火墙:

  1. 若要启动注册表编辑器,请选择"开始",选择"运行",键入 regedt32, 然后选择"确定 "。

    使用 Regedt32.exe 而不是 Regedit.exe。 Regedit.exe不支持端口REG_MULTI_SZ 数据类型所需的端口值。

  2. 在注册表编辑器 中,HKEY_LOCAL_MACHINE" 计算机 "窗口中的"注册表"。

  3. 通过双击路径中命名的文件夹展开 HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc 树。

  4. 选择"RPC"文件夹,然后选择" 编辑"菜单上的 "添加 密钥 "。

  5. 在"添加密钥" 对话框的"密钥名称 "框中, 键入 Internet, 然后选择"确定 "。

  6. 选择"Internet"文件夹,然后在" 编辑"菜单上 选择" 添加值 "。

  7. 在" 添加值" 对话框的"值 名称 "框中,键入 端口

  8. 在"数据类型" 框中 ,选择"REG_MULTI_SZ",然后选择"确定 "。

  9. "多字符串编辑器"对话框的"数据"框中,指定希望 RPC 用于动态端口分配的端口,然后选择"确定 "。

    键入的每个字符串值指定单个端口或包含的端口范围。 例如,若要打开端口 5000,请 指定不带引号的 5000。 若要打开端口 5000 到 5020(含 5020),请指定 不带引号的 5000-5020。 可以通过指定每行一个端口或端口范围来指定多个端口或端口范围。 所有端口的范围必须在 1024 到 65535 之间。 如果任何端口超出此范围或者任何字符串无效,RPC 将整个配置视为无效。

    Microsoft 建议从 5000 个端口和 5000 个端口向上开放,并至少打开 15 到 20 个端口。

  10. 按照步骤 6 至步骤 9,使用下列值添加另一个 Internet 密钥:

    值:PortsInternetAvailable
    数据类型:REG_SZ
    数据:Y

    此值表示"端口"值下列出的端口将可供 Internet 使用。

  11. 按照步骤 6 至步骤 9,使用下列值添加另一个 Internet 密钥:

    值:UseInternetPorts
    数据类型:REG_SZ
    数据:Y

    此值表示 RPC 应动态分配 Internet 端口列表中的端口。

  12. 将防火墙配置为允许传入访问指定的动态端口以及 RPC 终结点映射器端口 (端口 135) 。

  13. 重启计算机。 当 RPC 重新启动时,它将基于你指定的注册表值动态分配传入端口。 例如,若要打开端口 5000 到 5020(包括 5000 和 5020),请创建以下命名值:

    端口 : REG_MULTI-SZ : 5000-5020
    PortsInternetAvailable : REG_SZ : Y
    UseInternetPorts : REG_SZ : Y

DTC 还要求可以通过 NetBIOS 或 DNS 解析计算机名称。 使用 ping 和服务器名称测试 NetBIOS 能否解析名称。 客户端计算机必须能够解析服务器的名称。 服务器必须能够解析客户端的名称。 如果 NetBIOS 无法解析名称,则向计算机上的 LMHOSTS 文件添加条目。