¿Cómo determino si un puerto está abierto en un servidor de Windows? [cerrado]


478

Estoy tratando de instalar un sitio bajo un puerto alternativo en un servidor, pero el puerto puede estar cerrado por un firewall. ¿Hay alguna manera de hacer ping o salir, en un puerto específico, para ver si está abierto?


Respuestas:


732

Asumiendo que es un puerto TCP (en lugar de UDP) lo que está intentando usar:

  1. En el servidor mismo, use netstat -anpara verificar qué puertos están escuchando.

  2. Desde el exterior, solo use telnet host port(o telnet host:porten sistemas Unix) para ver si la conexión es rechazada, aceptada o expira.

En esa última prueba, luego en general:

  • conexión rechazada significa que no se está ejecutando nada en ese puerto
  • aceptado significa que algo se está ejecutando en ese puerto
  • tiempo de espera significa que un firewall está bloqueando el acceso

En Windows 7 o Windows Vista, la opción predeterminada 'telnet' no se reconoce como un comando interno o externo, un programa operativo o un archivo por lotes. Para resolver esto, solo habilítelo: haga clic en * Inicio ** → Panel de controlProgramasActivar o desactivar las características de Windows . En la lista, desplácese hacia abajo y seleccione Cliente Telnet y haga clic OK.


312
En Win7 o Vista, la opción predeterminada 'telnet' no se reconoce como un comando interno o externo, programa operativo o archivo por lotes. Para resolver esto, solo habilítelo: haga clic en Inicio, Panel de control, Programas y luego active o desactive las características de Windows. En la lista, desplácese hacia abajo y seleccione Cliente Telnet y haga clic en Aceptar
volody

12
@PankajKohli usa PuTTy telnet client en su lugar. No necesita ser instalado.
Colin Pickard

52
¿Qué Could not open connection to the host, on port *x*: Connect failedindica?
Kenny Evitt

2
@Alnitak Solo quería comprobarlo, ya que creo que esto ya responde a mi pregunta. Cuando lo hago telnet api-3t.sandbox.paypal.com 443, Connecting to api-3t.sandbox.paypal.com...Could not open connection to the host on port 443: Connect failed¿se debe a que el firewall lo está bloqueando?
Popeye

2
hay una diferencia si abre telnet.exe y luego escribe o host portvs línea de comando abierta (cmd.exe) y luego escribetelnet host port
Pawel Cioch

185

En Windows puedes usar

netstat -na | find "your_port"

para reducir los resultados. También puede filtrar por LISTENING, ESTABLISHED, TCPy tal. Aunque es sensible a mayúsculas y minúsculas.


44
no puede usar find como este, buscará archivos, debe usar grep
Moataz Elmasry

38
@MoatazElmasry, eso es cierto en Linux, pero esto es en un servidor de Windows, donde find es el comando correcto. Grep no está disponible en Windows. Acabo de ejecutar el comando exacto mencionado aquí, y funcionó perfectamente.
Ben Wyatt

44
Cuando usé ese comando, es decir, netstat -an | encuentre "19345", no obtuve ningún resultado. ¿Qué significa eso?
nanosoft

14
findno funcionó en Windows 10 para mí, pero netstat -na | findstr "8080"funcionó
Arun

66
no pasa nada, no con find o Findstr
útilBee

85

Si está comprobando desde el exterior, no desde el servidor en sí, y no desea molestarse en instalar telnet (ya que no viene con las últimas versiones de Windows) o cualquier otro software, entonces tiene PowerShell nativo:

Test-NetConnection -Port 800 -ComputerName 192.168.0.1 -InformationLevel Detailed

(Desafortunadamente, esto solo funciona con PowerShell 4.0 o posterior. Para verificar su versión de PowerShell, escriba $PSVersionTable).

PD: Tenga en cuenta que en estos días hay algunas afirmaciones en la esfera de Twitter que sugieren que esta respuesta podría mejorarse al mencionar "Test-Connection" de PowerShell Core, o el acceso directo "tnc". ¡Visita https://twitter.com/david_obrien/status/1214082339203993600 y ayúdame a editar esta respuesta para mejorarla, por favor!


(Si tiene una PSVersion <4.0, no tiene suerte. Consulte esta tabla:

Ingrese la descripción de la imagen aquí

Aunque puede actualizar su versión de PowerShell instalando Windows Management Framework 4.0 , no funcionó, el cmdlet Test-NetConnection todavía no está disponible).


3
Esta es la mejor respuesta. ¡Instalar telnet no siempre es sencillo en los servidores de otras personas!
TrojanName

Definitivamente debe ser la mejor respuesta.
QtRoS

1
Esta es una opción más confiable que telnet, telnet simplemente se colgaría sin informar nada mientras esto informa que el puerto está disponible en mi caso.
axk

42

En una máquina Windows, puede usar PortQry de Microsoft para verificar si una aplicación ya está escuchando en un puerto específico utilizando el siguiente comando:

portqry -n 11.22.33.44 -p tcp -e 80

44
Los puertos con firewall generalmente aparecerán como "FILTRADOS".
dlanod

También podría usar esta herramienta para verificar el puerto UDP:portqry -n 11.22.33.44 -p udp -e 19132
Antony

41

Me gustó eso:

netstat -an | find "8080" 

de telnet

telnet 192.168.100.132 8080

Y solo asegúrese de que el firewall esté apagado en esa máquina.


Cuando usé ese comando, es decir, netstat -an | encuentre "19345", no obtuve ningún resultado. ¿Qué significa eso? -
nanosoft

2
significa que este puerto es gratis
Sarvar Nishonboev

Me sale un error cuando lo ejecuto netstat -an | find "8080"diceno such file named "8080"
Pragyaditya Das

24

Si telnetno está disponible, descargue PuTTY . Es un cliente Telnet, SSH, etc. muy superior y será útil en muchas situaciones, no solo en esta, especialmente si está administrando un servidor.


Sí, pero no para pegar el código de Forth, digamos, con AmForth (a menos que use PuTTY en combinación con Edit Overflow ).
Peter Mortensen


12

Use esto si desea ver todos los puertos usados ​​y de escucha en un servidor Windows:

netstat -an |find /i "listening"

Vea todos los puertos abiertos, de escucha y establecidos:

netstat -a




1

Esto es lo que funcionó para mí:

  • Abrir un símbolo del sistema
  • Tipo telnet
  • Microsoft Telnet> abrir <nombre de host o dirección IP> <espacio> <puerto>

Confirmará si el puerto está abierto.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.