Pregunta Ping a un puerto específico


Sólo un rápido chequeo de cordura aquí.

¿Puede hacer ping a un puerto específico de una máquina y, de ser así, puede proporcionar un ejemplo?

Estoy buscando algo como ping ip address portNum.


580
2017-10-08 09:57


origen


para ventanas esta pregunta se puede comprobar - npocmaka


Respuestas:


No puedes hacer ping a los puertos, ya que Ping está usando ICMP Que no tiene el concepto de puertos. Los puertos pertenecen a la protocolos de capa de transporte como TCP y UDP. Sin embargo, podrías usar nmap para ver si los puertos están abiertos o no

nmap -p 80 example.com

Editar: Como lo mencionó flokra, nmap es más que un simple ping-for-ports-thingy. Es el mejor amigo de los auditores y hackers de seguridad y viene con un montón de opciones geniales. Compruebe el doc para todas las banderas posibles.


628
2017-10-08 10:00



Es posible que desee agregar -PN para omitir el descubrimiento del host, nmap generalmente lo hace antes de probar el puerto dado. - flokra
Para salvar a algunas personas, algunos problemas: nmap / can / se instala en Windows desde enlazar (o google nmap windows), PERO no funciona sobre VPNs. PaPing no parecía poder escanear un rango de direcciones. He publicado una secuencia de comandos de Python a continuación que funcionará a través de VPN para escanear un rango de puertos en un rango de direcciones.
Para otros: nmap no existe en Mac OS X, puede instalar nmap a través de homebrew brew install nmap o MacPorts. - Highway of Life
nping es más adecuado para esta tarea que nmap. nping es parte de la distribución nmap. - CMCDragonkai
Mac OSX tiene 'Network Utility' que tiene una pestaña de escáner de puerto - Shanimal


Abra una sesión de telnet para el puerto específico, por ejemplo:

# telnet google.com 80
Trying 74.125.226.48...
Connected to google.com.
Escape character is '^]'.

Para cerrar tu sesión, pulsa Ctrl+].


168
2017-10-08 10:01



netcatFunciona también muy bien y es menos verboso. - petrus
Telnet funciona bien para esto si el puerto es un puerto TCP. - Falcon Momot
netcat también funciona con UDP (nc -u) - Tsvetomir Dimitrov
Para usuarios de Mac - netcat ahora está integrado en MacOS HighSierra, donde se puede instalar telnet desde HomeBrew brew install telnet - sandiejat


Puedes usar PaPing:

http://code.google.com/p/paping

C:\>paping.exe www.google.com -p 80 -c 4
paping v1.5.1 - Copyright (c) 2010 Mike Lovell

Connecting to www.l.google.com [209.85.225.147] on TCP 80:

Connected to 209.85.225.147: time=24.00ms protocol=TCP port=80
Connected to 209.85.225.147: time=25.00ms protocol=TCP port=80
Connected to 209.85.225.147: time=24.00ms protocol=TCP port=80
Connected to 209.85.225.147: time=24.00ms protocol=TCP port=80

Connection statistics:
        Attempted = 4, Connected = 4, Failed = 0 (0.00%)
Approximate connection times:
        Minimum = 24.00ms, Maximum = 25.00ms, Average = 24.25ms

78
2017-09-03 04:23



O, en lugar de hacer paping, puede usar el cifrado, que ha existido por mucho más tiempo y admite el ping de algunos servicios y puertos.
¿Se puede usar para hacer ping a cualquier puerto o solo a 80? - Luke Puplett
@LukePuplett simplemente cambia el número 80 en el ejemplo. Ejecútelo escribiendo paping.exe <hostname / IP> -p <portnumber> -c <número de intentos> - David Costa
¡Fantástico! ¿Alguien sabe si puede mostrar estadísticas a mitad de camino como ping puede con Ctrl+Break? - Allon Guralnek
Corriendo >C:\paping_1.5.5_windows\paping.exe www.google.com -p 80 -c 4 desde la línea de comandos da el error the program can't start because MSVCP100D.dll is missing from your computer - Timo Huovinen


$ nc -vz google.com 80
Connection to google.com 80 port [tcp/http] succeeded!

74
2018-04-10 01:55



Usar con time como en time nc -vz www.example.com 80 y tendrás una especie de RTT, también. - xebeche
Única solución que funciona en instancias de Amazon EC2 sin ninguna instalación. - Masadow
Este comando funciona en una Raspberry Pi (Linux distro raspian) - John M
que es -z? ncat 6.40 en rhel7 da una opción desconocida - Tagar
@Tagar de acuerdo con la ayuda en la versión de Ubuntu, -z es el modo Zero-I / O, que se usa para escanear. - Ben Mordecai


Si está en una instalación de Windows con PowerShell v4 o más reciente, puede usar el módulo PowerShell de prueba de conexión de red:

Test-NetConnection <host> -port <port>

Ejemplo:      Test-NetConnection example.com -port 80

Este cmdlet también tiene el alias. tnc. P.ej tnc example.com -port 80


61
2017-10-26 21:09



Esta realmente debería ser la respuesta aceptada, ya que es mucho más fácil y no hay necesidad de instalar algo. - Hakaishin
tnc Dios mío, en realidad podría recordar eso - Chris Marisic


No no puedes porque ping usa el Protocolo ICMP, que ni siquiera tiene un concepto de puertos.


22
2017-10-08 10:00



Estoy bastante seguro de que el uso de "ping" fue metafórico. - Luke Puplett


Tratar curl comando, como

$ curl host:port

Por ejemplo:

$ curl -s localhost:80 >/dev/null && echo Success. || echo Fail.
Success.

El comando anterior volverá Fallar en un estado de salida no cero códigos. En algunos casos particulares, como respuesta vacía o con formato incorrecto (ver man curl), puede querer manejar códigos de salida específicos como exitosos, así que por favor verifique esto enviar para una explicación más detallada.


16
2017-11-01 00:11



Me gusta esto porque curl Está presente por defecto en CentOS, por lo que no tengo que instalar nada. - bdemarest
Curl trabajado en una Raspberry Pi (distro Raspian) - John M
Esta es, con mucho, la solución más elegante y universal. Lo modifiqué ligeramente para convertirlo en un elegante forniner: IP="<ip>" ; PORT="<port>" ; curl -s "$IP:$PORT" > /dev/null && echo "Success connecting to $IP on port $PORT." || echo "Failed to connect to $IP on port $PORT." - Lefty G Balogh


Encontré una solución más simple usando PsPing:

psping 192.168.2.2:5000

Es parte de Windows Sysinternals.

PsPing implementa la funcionalidad Ping, TCP ping, latencia y medición de ancho de banda.


16
2017-12-12 19:49



Además, PsPing proviene del equipo de Microsoft SysInternal, por lo que podría considerarse un poco más legítimo al tratar con otras personas orientadas a Microsoft. (Y tiene mejor funcionalidad que la muy antigua PortQry) - martyvis
Encontré algo más simple; Eso no requeriría ninguna descarga o instalación. Test-NetConnection -ComputerName 192.168.2.2 -Port 5000 - Ayan Mullick


En Linux puedes usar hping pero utiliza TCP, en lugar de ICMP.

hping example.com -S -V -p 80

13
2017-12-22 23:12



hping (hping3 en mi ubuntu) es excelente. Periódicamente repite la sonda como lo hace ping, y a diferencia de muchas de las herramientas sugeridas aquí. También prueba si el paquete llega a su destino y si el puerto está abierto. Si está abierto te dan flags=SA (es decir, SYN ACK), y si está cerrado obtienes flags=SR (es decir, SYN RST). Tenga en cuenta que probablemente no necesite el -V marca aquí, pero necesitas sudo / root para ejecutar hping. - mc0e
¡Excelente! A diferencia de muchas otras respuestas, esto reporta latencia RTT como ping y hace ping hasta que se detenga. - Edward Anderson


Ping es muy específico, pero si desea comprobar si un puerto está abierto o no, y está ejecutando un cuadro de Windows, entonces PortQry es tu amigo.

Solo lo he usado para probar controladores de dominio por problemas de conectividad, pero funcionó muy bien para eso, así que debería funcionar para usted.


11
2017-10-08 10:06



PortQry funciona muy bien y solo tiene 140kb. ¡Gracias! - SCL
+1 PortQry funciona muy bien para probar localhost. - Chris Masterton
PortQry fue lanzado originalmente en 1999/2000 por el equipo de MS Exchange, pero la versión reciente de MS parece haberlo atrofiado al eliminar la capacidad de consultar puertos remotos (salud y seguridad). - Luke Puplett


Aquí hay una aplicación de consola .NET rápida y sucia:

    static void Main(string[] args)
    {
        string addressArgument = null, portArgument = null;

        System.Net.Sockets.TcpClient tcpClient = null;

        try
        {
            addressArgument = args[0];
            portArgument = args[1];

            int portNumber;
            portNumber = Int32.Parse(portArgument);

            tcpClient = new System.Net.Sockets.TcpClient();
            tcpClient.ReceiveTimeout = tcpClient.SendTimeout = 2000;


            IPAddress address;
            if (IPAddress.TryParse(args[0], out address))
            {
                var endPoint = new System.Net.IPEndPoint(address, portNumber);
                tcpClient.Connect(endPoint);
            }
            else
            {
                tcpClient.Connect(addressArgument, portNumber);
            }

            Console.WriteLine("Port {0} is listening.", portArgument);
        }
        catch (Exception e)
        {
            if (e is SocketException || e is TimeoutException)
            {
                Console.WriteLine("Not listening on port {0}.", portArgument);
            }
            else
            {
                Console.WriteLine("Usage:");
                Console.WriteLine("    portquery [host|ip] [port]");
            }
        }
        finally
        {
            if (tcpClient != null)
                tcpClient.Close();
        }
    }

7
2017-07-09 17:53