Configurar el Coordinador de transacciones distribuidas (DTC) de Microsoft para trabajar a través de un firewall
En este artículo se describe cómo configurar el Coordinador de transacciones distribuidas (DTC) de Microsoft para trabajar a través de firewalls.
Número de KB original: 250367
Más información
Puede configurar DTC para comunicarse a través de firewalls, incluidos los firewalls de traducción de direcciones de red.
DTC usa la asignación de puertos dinámicos 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 RPC asigna 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 el 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 cambiar solo a puertos RPC personalizados si los firewalls no pueden filtrar por equipos o direcciones IP.
Puede tener una instancia de DTC local y varias instancias de DTC en clúster. Es posible que tenga que proporcionar puertos dinámicos más 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 el 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. Por lo tanto, asegúrese de que sigue estos pasos con atención. Para la protección añadida, realice una copia de seguridad del Registro antes de modificarlo. A continuación, puede restaurar el Registro si se produce un problema. Para obtener más información sobre cómo realizar copias de seguridad y restaurar el registro, consulte Cómo realizar copias de seguridad y restaurar el registro en La 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 asignador de puntos de conexión RPC):
- Para iniciar el Editor del Registro, seleccione Inicio, Ejecutar, escriba regedt32 y, a continuación, seleccione Aceptar.
- En el Editor del Registro, seleccione HKEY_LOCAL_MACHINE en la ventana Máquina local.
- Expanda el árbol seleccionando dos veces las carpetas denominadas en la ruta de
HKEY_LOCAL_MACHINE\Software\Microsoft\MSDTC
acceso. - Seleccione la carpeta MSDTC y, a continuación, seleccione Nuevo valor DWORD (32 bits) en el menú Editar. >
- Cambie el nombre a ServerTcpPort.
- Haga clic con el botón derecho y elija Modificar en el nuevo valor.
- En el cuadro de diálogo Editor de valores, seleccione Decimal y, a continuación, coloque el número de puerto fijo, e g 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 en 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 a su GUID de clúster específico si se usa la instancia de DTC agrupada:
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 de cliente
Siga estos pasos en los equipos implicados en transacciones DTC en las que 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 y el puerto 135 especificados (el puerto asignador de puntos de conexión RPC):
Para iniciar el 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 Puertos.
En el Editor del Registro, seleccione HKEY_LOCAL_MACHINE en la ventana Máquina local.
Expanda el árbol seleccionando dos veces las carpetas denominadas en la ruta de
HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc
acceso.Seleccione la carpeta RPC y, a continuación, seleccione Agregar clave en el menú Editar .
En el cuadro de diálogo Agregar clave , en el cuadro Nombre de clave, escriba Internet y, a continuación, seleccione Aceptar.
Seleccione la carpeta Internet y, a continuación, seleccione Agregar valor en el menú Editar .
En el cuadro de diálogo Agregar valor, en el cuadro Nombre del valor, escriba Puertos.
En el cuadro Tipo de datos, seleccione REG_MULTI_SZ y, a continuación, seleccione Aceptar.
En el cuadro de diálogo Editor de varias cadenas, en el cuadro Datos , especifique el puerto o los puertos que quiere usar RPC 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 las comillas. Para abrir puertos de 40000 a 42000 inclusive, especifique 40000-42000 sin las 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 puertos desde 20000 y hacia arriba, ya que los puertos inferiores a menudo pueden estar en uso por otras aplicaciones y que abra un mínimo de 1000 puertos para evitar el agotamiento de 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 a 49152-65535 para evitar el agotamiento de puertos.
Siga los pasos del 6 al 9 para agregar otra clave para Internet mediante estos valores:
Valor: PortsInternetAvailable
Tipo de datos: REG_SZ
Datos: YEste valor indica que los puertos enumerados en el valor Puertos deben estar disponibles en Internet.
Siga los pasos del 6 al 9 para agregar otra clave para Internet mediante estos valores:
Valor: UseInternetPorts
Tipo de datos: REG_SZ
Datos: YEste valor significa que RPC debe asignar dinámicamente puertos de la lista de puertos de Internet.
Configure el firewall para permitir el acceso entrante a los puertos dinámicos especificados y al puerto 135 (el puerto asignador de puntos de conexión RPC).
Reinicie el equipo. Cuando se reinicia RPC, asignará los 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 la 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.