Configuración del Coordinador de transacciones distribuidas (DTC) de Microsoft para que funcione a través de un firewall

En este artículo se describe cómo configurar el Coordinador de transacciones distribuidas (DTC) de Microsoft para que funcione a través de firewalls.

Se aplica a: Windows Server 2012 R2, Windows Server 2016, Windows Server 2019, Windows Server 2022
Número de KB original: 250367

Más información

Puede configurar DTC para que se comunique a través de firewalls, incluidos los firewalls de traducción de direcciones de red.

DTC usa la asignación dinámica de puertos de llamada a procedimiento remoto (RPC) de forma predeterminada. La asignación dinámica de puertos RPC selecciona aleatoriamente los números de puerto en el intervalo 49152-65535. Al modificar el Registro, puede controlar qué puertos asigna RPC dinámicamente para la comunicación entrante. A continuación, puede configurar el firewall para limitar la comunicación externa entrante solo a esos puertos y al puerto 135 (el puerto asignador de puntos de conexión RPC). Se recomienda usar el puerto fijo para los servicios DTC o el intervalo dinámico predeterminado 49152-65535 en firewalls para evitar el agotamiento de puertos y solo cambiar a puertos RPC personalizados si los firewalls no pueden filtrar en el equipo o las direcciones IP.

Puede tener una instancia de DTC local y varias instancias de DTC agrupadas. Es posible que tenga que proporcionar más puertos dinámicos entrantes para otros subsistemas que dependen de RPC, por lo que se recomienda mantener el intervalo RPC predeterminado incluso si se usa el puerto fijo para los servicios DTC.

Las claves y los valores del Registro descritos en este artículo no aparecen en el Registro de forma predeterminada; debe agregarlos mediante Editor del Registro.

Importante

Esta sección, método o tarea contiene pasos que le indican cómo modificar el Registro. No obstante, pueden producirse problemas graves si modifica el registro de manera incorrecta. En consecuencia, asegúrese de seguir estos pasos cuidadosamente. Para mayor protección, cree una copia de seguridad del registro antes de modificarlo. Después, puede restaurar el registro si se produce un problema. Para obtener más información sobre cómo hacer una copia de seguridad y restaurar el registro, vea Cómo hacer una copia de seguridad y restaurar el registro en Ventana.

Configuración de DTC para usar un único puerto fijo

Siga estos pasos en los equipos implicados en transacciones DTC para establecer el puerto fijo para DTC. El firewall debe estar abierto en ambas direcciones para el puerto fijo y el puerto 135 (el puerto del asignador de puntos de conexión RPC):

  1. Para iniciar la Editor del Registro, seleccione Inicio, Ejecutar, escriba regedt32 y, a continuación, seleccione Aceptar.
  2. En Editor del Registro, seleccione HKEY_LOCAL_MACHINE en la ventana Máquina local.
  3. Expanda el árbol seleccionando dos carpetas denominadas en la HKEY_LOCAL_MACHINE\Software\Microsoft\MSDTC ruta de acceso.
  4. Seleccione la carpeta MSDTC y, a continuación, seleccione Nuevo > valor DWORD (32 bits) en el menú Editar .
  5. Cambie el nombre a ServerTcpPort.
  6. Haga clic con el botón derecho y elija Modificar en el nuevo valor.
  7. En el cuadro de diálogo Valor Editor, seleccione Decimal y, a continuación, coloque el número de puerto fijo, por ejemplo, 40001, en el campo Datos de valor y, a continuación, seleccione Aceptar.

Para configurar el puerto fijo para las instancias de DTC en clúster, debe buscar el GUID del recurso de clúster y agregar el valor ServerTcpPort en esta ubicación. Use un número de puerto diferente para cada instancia de DTC. Por ejemplo, si el GUID del recurso DTC es 012345678-9abc-def0-1234-56789abcdef0, estaría en esta ruta de acceso: HKEY_LOCAL_MACHINE\Cluster\Resources\012345678-9abc-def0-1234-56789abcdef0\MSDTCPRIVATE\MSDTC. Repita los pasos para recursos clúster de DTC adicionales.

Como alternativa, puede usar los reg add comandos en scripts con privilegios de administrador para realizar esta operación. Ajuste el ejemplo siguiente al GUID de clúster específico si se usa la instancia de DTC en clúster:

reg add HKLM\SOFTWARE\Microsoft\MSDTC /v ServerTcpPort /t REG_DWORD /d 40001 /f
reg add HKLM\Cluster\Resources\012345678-9abc-def0-1234-56789abcdef0\MSDTCPRIVATE\MSDTC /v ServerTcpPort /t REG_DWORD /d 40002 /f

Configuración de RPC para usar el intervalo de puertos del cliente

Siga estos pasos en los equipos implicados en transacciones DTC donde los firewalls impiden la comunicación completa para controlar la asignación dinámica de puertos RPC. El firewall debe estar abierto en ambas direcciones para los puertos especificados y el puerto 135 (el puerto del asignador de puntos de conexión RPC):

  1. Para iniciar la Editor del Registro, seleccione Inicio, Ejecutar, escriba regedt32 y, a continuación, seleccione Aceptar.

    Use Regedt32.exe en lugar de Regedit.exe. Regedit.exe no admite el tipo de datos REG_MULTI_SZ necesario para el valor Ports.

  2. En Editor del Registro, seleccione HKEY_LOCAL_MACHINE en la ventana Máquina local.

  3. Expanda el árbol seleccionando dos carpetas denominadas en la HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc ruta de acceso.

  4. Seleccione la carpeta RPC y, a continuación, seleccione Agregar clave en el menú Editar .

  5. En el cuadro de diálogo Agregar clave , en el cuadro Nombre de clave , escriba Internet y, a continuación, seleccione Aceptar.

  6. Seleccione la carpeta Internet y, a continuación, seleccione Agregar valor en el menú Editar .

  7. En el cuadro de diálogo Agregar valor , en el cuadro Nombre del valor , escriba Puertos.

  8. En el cuadro Tipo de datos , seleccione REG_MULTI_SZ y, a continuación, seleccione Aceptar.

  9. En el cuadro de diálogo Editor multicadena, en el cuadro Datos, especifique el puerto o los puertos que quiere que RPC use para la asignación dinámica de puertos y, a continuación, seleccione Aceptar.

    Cada valor de cadena que escriba especifica un único puerto o un intervalo inclusivo de puertos. Por ejemplo, para abrir el puerto 40000, especifique 40000 sin comillas. Para abrir los puertos 40000 a 42000 inclusive, especifique 40000-42000 sin comillas. Puede especificar varios puertos o intervalos de puertos especificando un puerto o intervalo de puertos por línea. Todos los puertos deben estar en el intervalo de 1024 a 65535. Si algún puerto está fuera de este intervalo o si alguna cadena no es válida, RPC tratará toda la configuración como no válida.

    Microsoft recomienda abrir los puertos desde 20000 y hacia arriba, ya que los puertos inferiores pueden estar en uso con frecuencia por otras aplicaciones y que abra un mínimo de 1000 puertos para evitar el agotamiento de los puertos. En sistemas de carga alta, es posible que necesite más puertos. El intervalo predeterminado de 1024-5000 se movió en Windows 2008 y versiones posteriores al intervalo 49152-65535 para evitar el agotamiento de puertos.

  10. Siga los pasos del 6 al 9 para agregar otra clave para Internet mediante estos valores:

    Valor: PortsInternetAvailable
    Tipo de datos: REG_SZ
    Datos: Y

    Este valor indica que los puertos enumerados en el valor De puertos deben estar disponibles en Internet.

  11. Siga los pasos del 6 al 9 para agregar otra clave para Internet mediante estos valores:

    Valor: UseInternetPorts
    Tipo de datos: REG_SZ
    Datos: Y

    Este valor significa que RPC debe asignar puertos dinámicamente desde la lista de puertos de Internet.

  12. Configure el firewall para permitir el acceso entrante a los puertos dinámicos especificados y al puerto 135 (el puerto del asignador de puntos de conexión RPC).

  13. Reinicie el equipo. Cuando se reinicie RPC, asignará puertos entrantes dinámicamente, en función de los valores del Registro que haya especificado. Por ejemplo, para abrir los puertos 40000 a 42000 inclusive, cree estos valores con nombre:

    Puertos: REG_MULTI-SZ: 40000-42000
    PortsInternetAvailable : REG_SZ : Y
    UseInternetPorts : REG_SZ : Y

DTC también requiere que pueda resolver nombres de equipo mediante NetBIOS o DNS. Compruebe que NetBIOS está habilitado en las propiedades de NIC y pruebe si NetBIOS puede resolver los nombres mediante ping y el nombre del servidor. El equipo cliente debe poder resolver el nombre del servidor. Y el servidor debe poder resolver el nombre del cliente. Si NetBIOS no puede resolver los nombres, agregue entradas a los archivos LMHOSTS en los equipos.