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


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


91
2018-06-16 14:21


origen


Solo para aclarar, ¿quiere decir bloqueado, como bloqueado por un firewall o puerta de enlace, o quiere decir que ya está en uso por otra cosa? - squillman
los Auditar mi PC Firewall prueba le permite probar un puerto específico o un rango de puertos desde una fuente externa. - Peter Stuer


Respuestas:


Ya que estás en la máquina de Windows, estas cosas se pueden hacer,

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

    netstat -a -n

  • Después de esto, si está esperando conexiones entrantes en este puerto y siente que el firewall puede estar bloqueando, puede iniciar el registro de firewall de Windows y compruebe los registros para conexiones caídas

    • Ir 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 perdidos"
    • 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), busque en el archivo de registro una gota en el puerto 3306.
    • Si se ve esto, deseará 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 - referido por Nick abajo - uso firewall de netsh advfirewall)

    firewall de netsh muestra el estado

    • Esto mostrará una lista de 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

    firewall netsh show config


Si tiene un bloqueo activo (las conexiones entrantes están siendo eliminadas por el firewall) 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 del firewall debe mostrarlo para ser habilitado. Si esto no se ve, es probable que no haya agregado 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 de Windows. Por lo tanto, debería ver un oyente para 3306 que acepta conexiones entrantes. Si no ve eso, necesita trabajar con su aplicación (MySQL) para comenzar primero.


100
2018-06-16 14:28



+1 para grandes detalles - Sage
A partir de Windows Vista, el comando "netsh firewall" está en desuso. Se recomienda utilizar "firewall de netsh advfirewall" en lugar de ello y hace referencia al artículo go.microsoft.com/fwlink/?linkid=121488 - Nick DeVore
Para analizar la salida en la línea de comando, agregue |find "3306" a la orden, por ejemplo C:\Windows\System32>netstat -an |find "3306" - Cees Timmerman
No puedo encontrar el botón de configuración especificado en el paso 2 de la segunda recomendación ... - Bassie
@Bassie, prueba docs.microsoft.com/en-us/windows/access-protection/… - nik


NETSTAT te dirá si el puerto es escuchando pero no te 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 puede estar bloqueando ese puerto que impide las conexiones externas; por lo que no es suficiente confiar en NETSTAT solo.

La mejor manera de verificar si un puerto está bloqueado es realizar una exploración de puertos desde la máquina cliente. 

Hay muchas formas de realizar una exploración 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 los 3 resultados.

  • Listening significa que el servidor está escuchando en el puerto especificado
  • Filtered significa que recibió un paquete de acuse de recibo de TCP con el conjunto de indicadores de restablecimiento que probablemente indica un firewall o un problema de software
  • Not Listening significa que no recibió una respuesta en absoluto

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

Usar telnet simplemente emitiría el siguiente comando desde un indicador de comando:

telnet localhost 3306

El comando anterior debería darle una indicación rápida de si el puerto 3306 sobre el localhost esta respondiendo


18
2018-04-04 00:47



Descargué PortQryUI y lo verifiqué después de bloquear y habilitar el puerto 445 tanto en tcp como en udp, muestra que se escucha lo mismo en tcp y no en udp. - Liam neesan


Desde PowerShell 4.0 puedes 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


8
2018-01-17 14:56



+1 por esto. Una alternativa realmente agradable que no requiere la instalación de nada en las máquinas Windows más modernas. - DCaugs


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 lugar.

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


5
2018-06-16 14:27



Tenga en cuenta que telnet ya no se está instalando en sistemas Win7 y más nuevos. - Alexis Wilke
@AlexisWilke Eso no es correcto. Telnet puede ser instalado - deepdive
Para instalar telnet desde la línea de comandos: dism / online / Enable-Feature / FeatureName: TelnetClient - Jason Massey