Publicado en

Diagnóstico de red con PowerShell en Windows Server

Windows Sever

Diagnóstico de red con PowerShell en Windows

Cuando algo “no se conecta”, lo primero que solemos hacer es un ping. Pero hoy tienes herramientas mucho más potentes en Windows gracias a PowerShell. Si solo usas ping, estás viendo una parte muy pequeña del problema.

En este artículo vamos a ver cómo usar cmdlets modernos como Test-NetConnection, Test-ConnectionResolve-DnsName para diagnosticar problemas de red en servidores Windows y estaciones de trabajo.

Por qué debes ir más allá de ping y tracert

Las herramientas clásicas siguen siendo útiles:

  • ping — comprueba si un host responde.
  • tracert — muestra el camino (saltos) hasta un destino.
  • nslookup — consulta servidores DNS.

El problema es que:

  • Muchos servidores bloquean ICMP, así que ping falla aunque el servicio esté vivo.
  • Te dicen poco sobre puertos (HTTP, RDP, SQL, etc.).
  • No son tan fáciles de automatizar y procesar como los cmdlets de PowerShell.

PowerShell te permite:

  • Probar conectividad a un host y a un puerto específico.
  • Ver rápidamente si el problema es DNS, red o la aplicación.
  • Automatizar pruebas contra varios servidores o servicios.

Test-Connection: el “nuevo ping” en PowerShell

Test-Connection es el equivalente en PowerShell a ping, pero con más control y resultados más fáciles de procesar.

Ejemplo básico

Test-Connection -ComputerName servidor01

Esto envía varios “pings” (ICMP) a servidor01 y devuelve un resultado detallado con tiempos de respuesta y estado.

Especificar número de pruebas

Test-Connection -ComputerName servidor01 -Count 5

Útil para comprobar estabilidad: si algunas peticiones fallan y otras no, puedes sospechar de problemas intermitentes o de congestión.

Probar una lista de servidores

$servidores = @("dc1", "fileserver", "sql01")
Test-Connection -ComputerName $servidores -Count 2

Así puedes revisar rápidamente si tus servidores críticos responden a nivel de red.

Test-NetConnection: probando puertos y rutas

Test-NetConnection te permite ir más allá: comprobar si un puerto está accesible en un host y ver detalles de la ruta.

Ejemplo: comprobar si un sitio web es accesible

Test-NetConnection -ComputerName www.ejemplo.com -Port 443

Esto te dirá:

  • Si resolvió el nombre (DNS).
  • La IP de destino.
  • Si el puerto 443 (HTTPS) está abierto.
  • Algunos detalles de la ruta (hops).

Es ideal para preguntas como: “¿es problema de DNS, de firewall o del servidor web?”.

Ejemplo: probar RDP a un servidor

Test-NetConnection -ComputerName servidor01 -Port 3389

Si el resultado indica que el puerto no es accesible, ya sabes que el problema está en algún punto entre el cliente y el servidor: firewall, reglas de red, NAT, etc.

Checar varios servicios desde un mismo servidor

$pruebas = @(
  @{Nombre="SQL"; Host="sql01"; Puerto=1433},
  @{Nombre="Web"; Host="web01"; Puerto=80},
  @{Nombre="RDP"; Host="servidor01"; Puerto=3389}
)

foreach ($prueba in $pruebas) {
  Write-Host "Probando $($prueba.Nombre) en $($prueba.Host):$($prueba.Puerto)"
  Test-NetConnection -ComputerName $prueba.Host -Port $prueba.Puerto |
    Select-Object ComputerName, RemotePort, TcpTestSucceeded
}

Con este pequeño script puedes ver de un vistazo qué servicios están accesibles.

Resolve-DnsName: diagnóstico moderno de DNS

Resolve-DnsName es el reemplazo moderno de nslookup en PowerShell. Te permite ver cómo se resuelven los nombres de forma más clara y más fácil de automatizar.

Ejemplo básico

Resolve-DnsName servidor01.contoso.local

Verás:

  • Tipo de registro (A, AAAA, CNAME, etc.).
  • Direcciones IP devueltas.
  • Servidor DNS que respondió.

Ver registros específicos

Resolve-DnsName contoso.com -Type MX

Útil para validar que los registros MX de tu dominio están bien configurados (correo electrónico).

Apuntar a un servidor DNS específico

Resolve-DnsName servidor01.contoso.local -Server 10.10.10.10

Perfecto para comparar respuestas entre DNS internos y externos o entre distintos controladores de dominio.

Escenarios de uso típicos

Escenario 1: “No puedo acceder a un sitio web, pero tengo internet”

  1. Probar DNS:
    Resolve-DnsName www.ejemplo.com
  2. Probar conectividad al puerto:
    Test-NetConnection -ComputerName www.ejemplo.com -Port 443
  3. Comparar con otra salida a internet (otro servidor o una VPN).

Así puedes ver si el problema es de resolución de nombres, de firewall, del proveedor o del propio sitio.

Escenario 2: “Los usuarios no pueden iniciar sesión en el dominio”

  1. Probar si el DC responde:
    Test-Connection -ComputerName dc1 -Count 2
  2. Ver si el puerto LDAP/kerberos está accesible (si procede):
    Test-NetConnection -ComputerName dc1 -Port 389
    Test-NetConnection -ComputerName dc1 -Port 88
  3. Validar DNS:
    Resolve-DnsName dc1.contoso.local

En muchos casos el problema está en DNS mal configurado o en reglas de firewall internas que alguien cambió “por seguridad”.

Escenario 3: “La aplicación está lenta, pero el servidor parece bien”

  1. Probar conectividad al puerto de la aplicación desde varios clientes.
  2. Ver latencias con Test-Connection hacia el servidor:
    Test-Connection -ComputerName app01 -Count 10
  3. Ver si hay pérdidas intermitentes de paquetes o picos de tiempo de respuesta.

Esto te ayuda a decidir si el problema es de red (enlaces saturados, rutas) o de la propia aplicación/servidor.

Buenas prácticas al usar PowerShell para diagnóstico de red

  • Ejecuta PowerShell como Administrador cuando necesites pruebas más avanzadas o modificar configuración de red.
  • Documenta los comandos que usas y sus resultados en casos reales (te servirán como runbook para el futuro).
  • Crea scripts sencillos para tus pruebas recurrentes (por ejemplo, chequear servicios críticos cada mañana).
  • Combina pruebas de conectividad (ping/ICMP) con pruebas de puertos y de DNS: ver solo una cara del problema puede llevarte a conclusiones erróneas.

Conclusión

PowerShell convierte el diagnóstico de red en algo más preciso, reproducible y fácil de automatizar. Herramientas como Test-Connection, Test-NetConnectionResolve-DnsName deberían formar parte del día a día de cualquier administrador de Windows.

El siguiente paso es integrar estos comandos en scripts de revisión rutinaria, monitorización ligera o incluso en tareas programadas que te avisen cuando un servicio crítico deja de responder como esperas.

Si hoy sigues dependiendo solo de ping, empezar a usar estos cmdlets será uno de los upgrades más rápidos que puedes hacer en tu forma de diagnosticar redes en entornos Windows.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Tiempo excedido. Por favor completa el captcha nuevamente

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.