¿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?

Jason
fuente

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.

Alnitak
fuente
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.

J.Celmer
fuente
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).

knocte
fuente
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
Gunjan Moghe
fuente
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.

Sarvar Nishonboev
fuente
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.

Machtyn
fuente
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
13

¿Quieres una herramienta para hacerlo? Hay un sitio web en http://www.canyouseeme.org/ . De lo contrario, necesita otro servidor para devolverle la llamada para ver si hay un puerto abierto ...

Douglas Mayle
fuente
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
zehnaseeb
fuente
7

En Windows Server puedes usar

netstat -an | where{$_.Contains("Yourport")}
Derbio
fuente
No aborda el problema del firewall de ninguna manera.
Marqués de Lorne
55
Esto funciona en powershell
Paco Zarate
¿O quieres decir "un servidor de Windows"?
Peter Mortensen
4

Otra opción es tcping .

Por ejemplo:

tcping host port

Vadzim
fuente
4

PsPing de Sysinternals también es muy bueno.

Peter Mortensen
fuente
Buena herramienta El código de ejemplo sería: PsPing -n 20 -i 0 servername: port
Asher
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.

p_champ
fuente
0

Otra utilidad que encontré y también es buena y pequeña, es PortQry Command Line Port Scanner versión 2.0 .

Puede hacer ping a un servidor y un puerto y le indicará el estado del puerto. Hay una utilidad de línea de comandos y una interfaz de usuario para ello.

Gilberto
fuente