Al diagnosticar Windows Event Forwarding (WEF), pocos errores generan tanto desconcierto como el código 2150859023 combinado con el HTTP 504. Este artículo explica de forma exhaustiva por qué se produce, cómo reproducirlo en laboratorio, y las mejores tácticas para volver a tener a tus agentes y colectores en plena sincronía.
Resumen del problema
El servicio Microsoft‑Windows‑Eventlog‑ForwardingPlugin/Operational registra periódicamente el evento:
- Error ID: 2150859023
- Estado WinRM: HTTP 504 – Gateway Timeout
- URL del Subscription Manager:
http://WefcollectorSRV:5985/wsman/SubscriptionManager/WEC
- Servicios implicados: WinRM y Windows Event Collector (wecsvc) aparecen en estado RUNNING.
Desencadenante habitual: proxy WinHTTP mal definido
La pila de WinRM utiliza WinHTTP para sus llamadas WS‑Man. Cuando el servidor colector no está en la lista de exclusión (bypass‑list) del proxy, el tráfico interno se encapsula de forma indebida, el proxy no responde o bloquea el método POST, y la transacción finaliza con un 504. El agente interpreta la respuesta como un fallo permanente y registra el código 2150859023.
Reproducción rápida en laboratorio
- Configura un equipo cliente con un proxy WinHTTP que no omita la IP o FQDN del colector:
- Reinicia WinRM y forzará el error al hacer la primera llamada WS‑Man.
- Observa el Event Viewer > Applications and Services Logs > Microsoft > Windows > Eventlog‑ForwardingPlugin > Operational.
Solución probada
La corrección consiste en añadir el servidor colector a la lista de exclusión:
rem 1. Ver la configuración actual
netsh winhttp show proxy
rem 2. Incluir el colector y rangos internos en el bypass
netsh winhttp set proxy proxy-server="proxyserver\:proxyport" ^
bypass-list="\;10.;192.168.;172.16.\*;WefcollectorSRV"
rem 3. Recargar la configuración
net stop winrm
net start winrm
Checklist de verificación
Elemento | Comando | Resultado esperado |
---|---|---|
Escucha WinRM | winrm quickconfig | Estado Running, HTTP 5985 (o HTTPS 5986) habilitado |
Proxy actual | netsh winhttp show proxy | Colector listado en la bypass‑list |
Conectividad TCP | Test‑NetConnection WefcollectorSRV -Port 5985 | TCPTestSucceeded = True |
Suscripción activa | Visor de eventos | Evento 105 (Subscription started) sin errores posteriores |
Profundizando en la causa
WinRM se basa en HTTP/HTTPS y, por diseño, hereda la configuración de WinHTTP — no la del navegador ni la del proxy de usuario (WinINET). De este modo Microsoft garantiza que servicios privilegiados puedan comunicarse incluso cuando no hay sesión interactiva. No obstante, la desventaja es que un cambio de proxy global puede afectar inadvertidamente a:
- PowerShell Remoting
- Servicios DSC
- Windows Event Forwarding
- SCOM Agent y cualquier otro componente que consuma WS‑Man
Si el servidor proxy devuelve un 504 o simplemente agota la espera (timeout), WinRM genera la excepción 0x803380E0
. El plugin de reenvío de eventos lo traduce a 2150859023 (que equivale a 0x803380E0
en decimal), lo que vemos en el visor de eventos.
Eventos relacionados
Además del 2150859023, vigila estos IDs porque ayudan a acotar el problema:
- 101/102: Inicio/parada de la suscripción.
- 103: Falla en la resolución DNS del colector.
- 105: Suscripción establecida con éxito (útil para validar la corrección).
- 408/409: Pérdida de paquetes o error de autenticación Kerberos/NTLM.
Buenas prácticas para prevenir el error
Diseño de red y DNS coherente
Utiliza nombres FQDN en las suscripciones de WEF (ej. wefcollectorSRV.contoso.local
) y asegúrate de que:
- La zona DNS interna resuelva al segmento correcto.
- Las VLAN donde residen los clientes dispongan de rutas directas, evitando saltos innecesarios por firewalls L7.
Listas de exclusión («bypass‑list»)
Microsoft recomienda incluir rangos RFC1918 y dominios internos; sin embargo, es frecuente olvidarse de un colector alojado en una DMZ o zona de gestión. Añade siempre:
- Intervalos completos: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16
- Patrones DNS comodín:
*.contoso.local
- FQDN concretos cuando uses nombres externos (ej.
wef.contoso.com
)
Automatización mediante GPO
En entornos con cientos o miles de equipos, el error humano al editar la bypass‑list puede propagarse rápidamente. Centraliza la configuración con:
- GPO → Computer Configuration → Preferences → Windows Settings → Registry: crea/actualiza la clave
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\Connections\WinHttpSettings
. - Plantillas administrativas de WinHTTP (PolicyDefinitions\winhttp.admx) para versiones recientes de Windows.
- Scripts de inicio (PowerShell) que validen y corrijan dinámicamente la lista de exclusión.
Supervisión continua
Después de la corrección, complementa con monitorización proactiva:
- Log Analytics / Sentinel: recopila el canal Eventlog‑ForwardingPlugin para alertas en tiempo real.
- SCOM / Zabbix / Nagios: prueba la latencia del puerto 5985/5986 y reporta picos de RTT.
- Scripts de auto‑remediación: Usa Scheduled Tasks que ejecuten
winrm enumerate winrm/config/listener
y reinicien el servicio si detectan estado inactivo.
Procedimiento detallado de recuperación (paso a paso)
- Identifica el alcance: Usa un filtro avanzado en el visor de eventos y exporta los equipos afectados.
- Valida capa 3:
ping WefcollectorSRV
ytracert
para descartar pérdidas o rutas inusuales. - Comprueba TLS / Kerberos: Si usas HTTPS, verifica el certificado (
winrm certificates
). Si usas HTTP con Kerberos, revisa el SPNHOST/WefcollectorSRV
. - Revisa política de autenticación: El 2150859023 se confunde a veces con un bloqueo NTLM. Valida
gpresult /r
yrsop.msc
. - Captura de red (opcional): En un cliente, ejecuta
pktmon start --etw --capture
durante 30 s y analiza con Wireshark. Busca paquetes RST o retransmisiones en el flujo WS‑Man. - Actualiza bypass‑list: Usa el bloque de comandos de la sección anterior o despliega la GPO.
- Reinicia servicios:
net stop winrm && net start winrm
y, si fuera necesario,net stop wecsvc && net start wecsvc
. - Verifica eventos 105: Confirma que el agente escriba un evento 105 (Subscription started) sin errores posteriores.
- Documenta la lección aprendida: Añade el colector a la lista patrón de todos los scripts de «golden image» y procedimientos de alta servidores.
Automatización PowerShell para entornos grandes
El siguiente script comprueba la configuración proxy, la corrige si es necesario y reinicia WinRM de forma controlada. Puedes programarlo vía Intune o GPO:
Param(
[string]$Collector = "WefcollectorSRV",
[string]$Proxy = "proxyserver:proxyport"
)
Obtener bypass‑list actual
\$bypass = (netsh winhttp show proxy) -match "Bypass" | ForEach-Object {
($\_ -split ":")\[1].Trim()
}
if (-not (\$bypass -match \$Collector)) {
Write-Host "Añadiendo \$Collector a la bypass‑list..."
\$newBypass = "\$bypass;\$Collector"
netsh winhttp set proxy proxy-server=\$Proxy bypass-list=\$newBypass | Out-Null```
Write-Host "Recargando WinRM..."
Restart-Service -Name WinRM -Force
```
} else {
Write-Host "\$Collector ya estaba en la lista. Sin cambios."
}
Preguntas frecuentes
¿Debo usar HTTPS en lugar de HTTP? Sí, siempre que sea posible. HTTPS cifra los eventos y evita que un proxy malicioso los intercepte. No obstante, el certificado debe contener el FQDN y ser de confianza para el cliente. ¿Por qué el visor de eventos muestra de forma intermitente el error 2150859023? Si el proxy o un firewall realiza inspección profunda, el tráfico puede fluctuar en función de la carga. Incluso con bypass, una regla mal aplicada puede redirigir parte de la sesión. ¿Qué ocurre si tengo varios colectores? Debes listar todos los FQDNs en la bypass‑list o, más sencillo, colocar un wildcard *.dominio.local
.
Conclusiones
El error 2150859023 / HTTP 504 en Windows Event Forwarding no suele deberse a un fallo del servicio, sino a una ruta de red mal definida por el proxy WinHTTP. Al incluir los colectores WEF en la lista de exclusión y reiniciar WinRM, la suscripción se restablece casi de inmediato. Documentar la configuración, aplicarla por GPO y supervisarla con herramientas de observabilidad reduce la probabilidad de reaparición y acelera la resolución en futuras migraciones o cambios de infraestructura.