it-swarm-es.com

¿Cómo verificar si un puerto está bloqueado en una máquina con Windows?

En la plataforma Windows, ¿qué opciones nativas debo verificar si un puerto (3306, por ejemplo) en mi máquina local (como en localhost), está siendo bloqueado?

109
Boris Pavlović

Como estás en la máquina Windows, estas cosas se pueden hacer,

  • Ejecute el siguiente comando y busque un escucha ": 3306" (no mencionó UDP/TCP). Esto confirmará que hay algo ejecutándose en el puerto.

    netstat -a -n

  • Después de esto, si espera conexiones entrantes en este puerto y siente que el firewall puede estar bloqueándolas, puede iniciar el registro de firewall de Windows y verifique los registros de conexiones caídas

    • Vaya al Firewall de Windows, Configuración avanzada
    • Haga clic en el botón Configuración junto a "Conexión de área local"
    • Seleccione "Registrar paquetes descartados"
    • Mire la ubicación del archivo de registro (si no está presente, defina uno)
    • Haga clic en Aceptar
    • Ahora, cuando se realiza el intento de conexión (suponiendo que sepa cuándo se hace esto), mire el archivo de registro para ver una caída en el puerto 3306.
    • Si se ve esto, querrá agregar una excepción para este puerto.
  • Hay un comando más para verificar el estado del firewall
    (Actualización para usuarios de Windows 7 - según lo referido por Nick a continuación - use netsh advfirewall firewall )

    estado de la demostración del cortafuegos de netsh

    • esto enumerará los puertos bloqueados, así como los puertos de escucha activos con asociaciones de aplicaciones
  • Este comando volcará los detalles de configuración del firewall de Windows

    netsh firewall show config


Si tiene un bloqueo activo (el firewall corta las conexiones entrantes) después de iniciar el registro, debería verlo en el registro.

Si está ejecutando una aplicación/servicio que está escuchando en 3306, el configuración de firewall debería mostrar que está habilitado. Si esto no se ve, probablemente haya perdido agregar una excepción con el firewall para permitir esta aplicación/servicio.

Finalmente, el puerto 3306 se usa típicamente para MySQL. Por lo tanto, supongo que está ejecutando el servidor MySQL en esta máquina con Windows. Por lo tanto, debería ver un oyente para 3306 aceptando conexiones entrantes. Si no ve eso, debe trabajar con su aplicación (MySQL) para comenzar primero.

113
nik

NETSTAT le dirá si el puerto es ¡escucha pero no le dirá si el puerto es ¡abierto al mundo exterior. Lo que quiero decir con esto es que NETSTAT puede mostrar que 0.0.0.0 ESTÁ ESCUCHANDO en el puerto 3306, pero un firewall aún puede estar bloqueando ese puerto, lo que impide conexiones externas; así que no es suficiente confiar solo en NETSTAT.

La mejor manera de verificar si un puerto está bloqueado es hacer un escaneo de puertos desde la máquina del cliente.

Hay muchas formas de hacer un escaneo de puertos, pero como mencionó estar en Windows, sugeriré la utilidad de línea de comandos de Microsoft PortQry y la versión gráfica PortQryUI

Para probar todos los puertos abiertos:

portqry.exe -n #.#.#.#   

Para probar un puerto específico:

portqry.exe -n #.#.#.# -e #

Por ejemplo, para probar la interfaz web de un enrutador en 192.168.1.1:

portqry.exe -n 192.168.1.1 -e 80

Que devuelve:

TCP port 80 (http service): LISTENING

Donde como prueba en una máquina local sin HTTPD en ejecución devuelve:

TCP port 80 (http service): NOT LISTENING

Usando una utilidad PortScan obtendrá uno de 3 resultados.

  • Listening significa que el servidor está escuchando en el puerto especificado
  • Filtered significa que recibió un TCP paquete de reconocimiento con el conjunto de indicadores Restablecer que probablemente indica un problema de firewall o software
  • Not Listening significa que no recibió ninguna respuesta

telnet es otra opción de línea de comando que generalmente se instala en el sistema operativo de forma predeterminada. Esta utilidad de línea de comandos se puede usar de manera rápida para ver si un puerto responde a una solicitud de red.

Para usar telnet simplemente emitiría el siguiente comando desde un Símbolo del sistema:

telnet localhost 3306

El comando anterior debería darle una indicación rápida si el puerto 3306 en el localhost está respondiendo.

25
Tim Penner

Desde PowerShell 4.0 puede usar el comando Test-NetConnection

Si desea probar el puerto 3306 como en su ejemplo, el comando es

Test-NetConnection -ComputerName localhost -Port 3306

documentación de TechNet Test-NetConnection

21
Marcel Janus

Si puede hacer telnet al puerto desde la máquina local (usando la dirección IP externa), pero no desde otra máquina, entonces se está bloqueando en algún punto intermedio.

Tenga en cuenta que un firewall en su máquina local podría evitar incluso la primera acción.

5
Brent