DCOM para OPC en Windows Server 2022: configuración, puertos y hardening

¿Tu cliente OPC no conecta a un servidor en Windows Server 2022 aunque “todo” parece bien en DCOM? Esta guía práctica concentra la configuración correcta (incluyendo el hardening de DCOM en 2022), los puertos a abrir y un flujo de verificación para que la comunicación OPC Classic vuelva a funcionar.

Índice

Resumen de la pregunta

Tras configurar DCOM en Windows Server 2022, la comunicación OPC Classic (DA/AE/HDA) falla entre cliente y servidor. ¿Qué ajustes exactos se requieren —específicos de Server 2022— para permitir que un cliente OPC se conecte, enumerar servidores y suscribirse a datos/eventos de forma estable y segura?

Respuesta y solución

A continuación se detallan los pasos esenciales y validados para que DCOM habilite correctamente OPC en Windows Server 2022, concentrando lo imprescindible y añadiendo comprobaciones útiles.

Pasos esenciales de configuración con dcomcnfg

  1. Abrir el configurador DCOM
    Win + RdcomcnfgComponent ServicesComputersMy ComputerDCOM Config.
  2. Configurar la aplicación del servidor OPC
    • General / Location: marcar Run application on this computer.
    • Security:
      • Launch and Activation PermissionsCustomizeEdit: agregar los usuarios/grupos que usarán el cliente OPC y otorgar Local/Remote Launch y Local/Remote Activation.
      • Access PermissionsCustomizeEdit: agregar los mismos usuarios/grupos y otorgar Local/Remote Access.
    • Identity: seleccionar la cuenta de servicio que ejecutará el servidor OPC (This user recomendado en servidores). Asegúrate de que esta cuenta tenga permisos sobre los recursos backend del propio servidor OPC (archivos, servicios, drivers, bases de datos, etc.).
  3. Ajustes a nivel de máquina (My ComputerProperties):
    • COM Security: si vas a usar Default Launch and Activation y Default Access, agrega los mismos usuarios/grupos con permisos equivalentes (Local/Remote).
    • Default Properties:
      • Enable Distributed COM on this computer: habilitado.
      • Default Authentication Level: Connect o superior (Packet Integrity recomendado en Server 2022).
      • Default Impersonation Level: Identify o Impersonate (habitual en OPC Classic).
  4. Firewall y red:
    • Abrir TCP 135 (RPC Endpoint Mapper).
    • Permitir los puertos dinámicos RPC (por defecto 49152–65535 en Windows modernos) o restringir el rango y abrirlo en el firewall.
    • Crear reglas de firewall para el ejecutable del servidor OPC y para OPCEnum.exe (si se usa enumeración remota).
    • Verificar DNS/hostname entre cliente y servidor y la sincronización de hora (evita “RPC server unavailable” y problemas de autenticación).

Particularidades clave en Windows Server 2022

  • Server 2022 aplica endurecimiento de DCOM que eleva el nivel mínimo de autenticación (integridad de paquete). Asegura que cliente y servidor estén actualizados y que el software OPC soporte al menos Packet Integrity.
  • Evita permisos inseguros como Everyone o Anonymous Logon en producción. Emplea cuentas de servicio o grupos dedicados. Puede ayudar agregar a los usuarios de cliente al grupo local Distributed COM Users en el servidor.

Comprobaciones y diagnóstico

  • Prueba desde el cliente con una herramienta de test OPC (DA/AE/HDA) para enumerar el servidor, conectar y leer un ítem.
  • Errores típicos:
    • 0x6BA / 0x800706BA (RPC server unavailable): puertos/firewall/DNS.
    • 0x5 / 0x80070005 (Access is denied): permisos DCOM o identidad incorrecta.
    • 0x8000401A (El proceso del servidor no se pudo iniciar por identidad incorrecta): credenciales/identidad en This user no válidas.
  • Revisa Event ViewerWindows LogsSystem y Application (orígenes DCOM/DistributedCOM) para detalles.

Tabla de puertos y componentes implicados

ComponentePuertoDirecciónDescripciónObservaciones
RPC Endpoint MapperTCP 135Entrante al servidorNegocia el puerto real del servicio DCOMIndispensable para toda conexión OPC Classic
RPC dinámicosTCP 49152–65535Entrante al servidorPuertos asignados tras el mapeoPuede limitarse a un subconjunto y abrirlo
OPC Server ejecutableSegún asignación RPCEntrante al servidorProceso DCOM del servidor OPCCrear regla de firewall por programa
OPCEnum.exeSegún asignación RPCEntrante al servidorEnumeración de servidores OPCÚtil para listas remotas de servidores

Reglas de firewall en PowerShell

Si administras por código o quieres acelerar la apertura de puertos, estas reglas cubren lo básico para pruebas en una red de confianza:

# Abrir RPC Endpoint Mapper
New-NetFirewallRule -DisplayName "RPC Endpoint Mapper (TCP135)" -Direction Inbound -Protocol TCP -LocalPort 135 -Action Allow

Permitir rango dinámico de RPC (ajústalo si prefieres un subconjunto más corto)

New-NetFirewallRule -DisplayName "RPC Dynamic Ports" -Direction Inbound -Protocol TCP -LocalPort 49152-65535 -Action Allow

Regla por programa para el servidor OPC (ajusta la ruta)

New-NetFirewallRule -DisplayName "OPC Server Bin" -Direction Inbound -Program "C:\RUTA\ServidorOPC.exe" -Action Allow

Regla por programa para OPCEnum si se usa

New-NetFirewallRule -DisplayName "OPCEnum" -Direction Inbound -Program "C:\Program Files\OPC Foundation... \OPCEnum.exe" -Action Allow 

Consejo: en redes segmentadas, valora limitar el rango dinámico (por ejemplo 50000–50100) y abrir solo ese subconjunto, siempre coordinado con Seguridad.

Procedimiento detallado recomendado

  1. Identifica el AppID del servidor OPC: en DCOM Config, localiza la aplicación por nombre o CLSID. Si dudas, revisa la columna Application ID y la descripción del proveedor.
  2. Configura la identidad del proceso: usa This user con una cuenta de servicio dedicada con contraseña no expirable y permisos sobre los recursos que el servidor OPC necesita (carpetas, servicios de tiempo real, drivers, motores de base de datos).
  3. Establece permisos granulares:
    • Agrega a los operadores al grupo local Distributed COM Users.
    • En la aplicación DCOM del servidor, en Launch and Activation y Access, añade usuarios/grupos de cliente y marca tanto opciones locales como remotas.
    • Evita Everyone o Anonymous en producción.
  4. Ajusta los niveles predeterminados:
    • Default Authentication Level: Packet Integrity recomendado (mínimo Connect).
    • Default Impersonation Level: Identify o Impersonate según requiera tu software OPC.
  5. Abre los puertos necesarios y crea reglas por programa para el binario del servidor OPC y OPCEnum.exe.
  6. Comprueba la resolución de nombres: desde el cliente, prueba ping NOMBRE_SERVIDOR y nslookup. Evita depender de IPs cambiantes; si es imprescindible, añade entradas temporales en hosts para pruebas controladas.
  7. Sincroniza la hora (NTP) y verifica que no haya grandes desviaciones que afecten la autenticación.
  8. Valida con un cliente de prueba OPC: primero la enumeración (OPCEnum), luego la conexión al servidor concreto, y finalmente la lectura/suscripción a un ítem.

Compatibilidad de 32 y 64 bits

OPC Classic se basa en COM/DCOM y su bitness importa:

  • Si tu cliente es de 32 bits y el servidor es de 64 bits, puede requerirse la versión x86 del servidor o componentes proxy/stub adecuados. Asegúrate de instalar los OPC Core Components en las arquitecturas requeridas (x86/x64) y usar el ProgID correcto.
  • OPCEnum suele instalarse en x86 y x64; crea reglas de firewall para la versión que realmente se ejecute.

Escenarios de red habituales y cómo resolverlos

  • Red con VLANs o firewalls intermedios: además de TCP 135, abre el rango dinámico elegido. Si la seguridad exige un rango corto, coordina con el equipo de seguridad y documenta el cambio.
  • NAT o entornos cloud: DCOM y RPC no se llevan bien con NAT simétrico. Considera topologías sin NAT entre cliente y servidor o el uso de pasarelas/túneles específicos del fabricante. Para exposición remota, OPC UA suele ser preferible por diseño.
  • Equipos multihomed (varias NIC): fija las prioridades de interfaz y asegúrate de que DNS resuelva al FQDN correcto. La conexión puede intentar la ruta equivocada.
  • Workgroup sin dominio: usa cuentas locales con mismo usuario/contraseña en cliente y servidor. Si administras remotamente con cuentas locales, puede ser necesario revisar las Remote UAC restrictions (solo en pruebas controladas y con evaluación de riesgo).

Matriz de síntomas y acciones

Síntoma / CódigoCausa probableAcción sugerida
0x800706BA RPC server unavailableBloqueo de puertos, DNS erróneo, Endpoint Mapper inaccesibleAbrir TCP 135 y rango dinámico; validar DNS y Test-NetConnection
0x80070005 Access is deniedPermisos DCOM insuficientes o identidad mal configuradaRevisar Launch/Activation, Access y Identity
0x8000401A Identity incorrectaCredenciales de This user inválidas o sin permisos de backendCorregir usuario/contraseña; otorgar permisos a recursos requeridos
Tiempo de espera al enumerarOPCEnum bloqueado por firewall o no instaladoAgregar regla por programa para OPCEnum.exe o instalar componentes
Conecta pero no lee ítemsPermisos internos del servidor OPC o tags no disponiblesValidar permisos en la aplicación y disponibilidad del origen de datos

Comandos útiles de verificación

# Comprobar que el servidor escucha en TCP 135 desde el cliente
Test-NetConnection -ComputerName SERVIDOR -Port 135

Ver reglas relacionadas con RPC/DCOM

Get-NetFirewallRule | Where-Object DisplayName -like "RPC" | Format-Table -Auto

Ver resolución DNS del servidor

Resolve-DnsName SERVIDOR

Revisar puertos abiertos en local (ejecutar en el servidor)

Get-NetTCPConnection | Where-Object {\$.LocalPort -eq 135 -or (\$.LocalPort -ge 49152 -and $\_.LocalPort -le 65535)} |
Sort-Object LocalPort | Format-Table -Auto 

Buenas prácticas de seguridad

  • Principio de mínimo privilegio: crea un grupo, por ejemplo OPC_Clientes, y concédelo solo donde sea necesario (aplicación DCOM específica y, si aplica, predeterminados).
  • Identidad dedicada: usa una cuenta de servicio con contraseña no expirable y sin privilegios administrativos innecesarios.
  • Auditoría: habilita el registro de eventos de DistributedCOM y conserva bitácoras de cambios en firewall.
  • Endurecimiento DCOM: no desactives los mecanismos de integridad; al contrario, ajusta los niveles a Packet Integrity y actualiza el software OPC si fuera necesario.

Checklist rápido

  • [ ] Usuarios/grupos correctos con Launch/Activation y Access (local y remoto).
  • [ ] Identity del servidor OPC configurada con una cuenta de servicio válida.
  • [ ] Authentication Level: Connect o Packet Integrity.
  • [ ] Firewall: TCP 135 + rango RPC abierto; reglas para el binario OPC/OPCEnum.
  • [ ] Cliente y servidor con misma resolución de nombres, hora sincronizada y software OPC compatible con el hardening de DCOM.

Notas para entornos con control de cambios

  • Documenta el AppID del servidor OPC y las ACL aplicadas (quién tiene Launch/Activation y Access).
  • Versiona los scripts de PowerShell usados para crear reglas de firewall y deja comentarios con el ticket de cambio.
  • Prueba primero en un entorno de staging con clientes representativos (x86/x64) antes de promover a producción.
  • Plan de reversión: conserva una copia del estado previo de reglas y de capturas de la configuración de DCOM.

Ruta de actualización tecnológica

Si debes exponer datos más allá de tu LAN o a través de redes complejas, considera migrar progresivamente a OPC UA, que evita dependencias de DCOM/RPC y simplifica seguridad y firewalling con puertos definidos. Mientras tanto, los pasos anteriores estabilizan OPC Classic en Server 2022.

Resumen ejecutivo

Para que OPC Classic funcione en Windows Server 2022, combina una configuración DCOM correcta (permisos de lanzamiento/activación/acceso y Identity con cuenta de servicio) con un firewall bien dimensionado (TCP 135 + rango dinámico o rango acotado) y niveles de autenticación acordes al hardening de 2022 (Packet Integrity). Completa con validaciones de DNS, hora y pruebas con herramienta OPC. Con este enfoque, la enumeración con OPCEnum, la conexión y la lectura/suscripción de ítems deberían comportarse de forma consistente y segura.

Índice