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?
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:
Asumiendo que es un puerto TCP (en lugar de UDP) lo que está intentando usar:
En el servidor mismo, use netstat -an
para verificar qué puertos están escuchando.
Desde el exterior, solo use telnet host port
(o telnet host:port
en sistemas Unix) para ver si la conexión es rechazada, aceptada o expira.
En esa última prueba, luego en general:
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 control → Programas → Activar o desactivar las características de Windows . En la lista, desplácese hacia abajo y seleccione Cliente Telnet y haga clic OK.
Could not open connection to the host, on port *x*: Connect failed
indica?
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?
o host port
vs línea de comando abierta (cmd.exe) y luego escribetelnet host port
En Windows puedes usar
netstat -na | find "your_port"
para reducir los resultados. También puede filtrar por LISTENING
, ESTABLISHED
, TCP
y tal. Aunque es sensible a mayúsculas y minúsculas.
find
no funcionó en Windows 10 para mí, pero netstat -na | findstr "8080"
funcionó
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:
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).
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
portqry -n 11.22.33.44 -p udp -e 19132
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.
netstat -an | find "8080"
diceno such file named "8080"
Si telnet
no 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.
¿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 ...
En Windows Server puedes usar
netstat -an | where{$_.Contains("Yourport")}
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.