2014-06-16 18:17:25 +0000 2014-06-16 18:17:25 +0000
217
217

¿Es posible hacer ping a una dirección:puerto?

No estoy en la red, y tengo la siguiente pregunta relacionada con el comando Linux ping.

¿Sólo puedo hacer ping a una dirección? Por ejemplo:

miner@raspberrypi ~ $ ping onofri.org
PING onofri.org (67.222.36.105) 56(84) bytes of data.
64 bytes from onofri.org (67.222.36.105): icmp_req=1 ttl=47 time=202 ms
64 bytes from onofri.org (67.222.36.105): icmp_req=2 ttl=47 time=206 ms
64 bytes from onofri.org (67.222.36.105): icmp_req=3 ttl=47 time=215 ms

O también puedo hacer ping a address:port , por ejemplo: onofri.org:80?

Si intento este no funciona:

miner@raspberrypi ~ $ ping onofri.org:80
ping: unknown host onofri.org:80

¿Es posible hacer ping a algo como address:port? Si es posible, ¿por qué no funciona lo que he intentado?

Respuestas (11)

311
311
311
2014-06-16 18:19:26 +0000

Los puertos son un concepto de UDP y TCP . Los mensajes ping se denominan técnicamente ICMP Solicitud de Eco y ICMP Respuesta de Eco que forman parte de ICMP . ICMP, TCP y UDP son “hermanos”; no están basados el uno en el otro, sino que son tres protocolos separados que se ejecutan sobre IP.

Por lo tanto no se puede ping un puerto. Lo que puede hacer, es usar un escáner de puertos como nmap.

nmap -p 80 onofri.org

También puede usar telnet onofri.org 80, como se sugiere en una de las otras respuestas (dará un error si el puerto está cerrado o filtrado).

86
86
86
2014-06-16 18:24:11 +0000

Yo uso Telnet , ya que está incorporado en muchas plataformas sin descargas adicionales.

Sólo usa el comando telnet para conectarte al puerto que quieras probar. Si recibes el mensaje de abajo, o un mensaje del propio servicio, entonces el puerto está vivo.

Minty16 ~ $ telnet localhost 139
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

Si conoces la secuencia de comandos para el servicio al que te estás conectando, puedes escribir un comando HTTP/FTP GET por ejemplo) y observar la respuesta y la salida en la terminal. Esto es muy útil para probar el servicio en sí, ya que le mostrará la información de error enviada al cliente, como los errores HTTP 500.

Si recibe un mensaje que indica que la conexión fue rechazada, el puerto se cierra.

Minty16 ~ $ telnet localhost 5000
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused
49
49
49
2014-06-16 21:15:05 +0000

Puedes usar netcat para conectarte a un puerto específico para ver si consigues una conexión. La bandera -v aumentará la verbosidad para mostrar si el puerto está abierto o cerrado. La bandera -z hará que netcat se cierre una vez que tenga una conexión. Entonces puedes usar los códigos de salida a través de $? para ver si la conexión se estableció o no.

$ nc -zv localhost 22
localhost [127.0.0.1] 22 (ssh) open
$ echo $?
0
$ nc -zv localhost 23
localhost [127.0.0.1] 23 (telnet) : Connection refused
$ echo $?
1

Adicionalmente, puedes usar mtr con la bandera -T para tcp y la bandera -P para especificar un puerto. Esto hará algo similar a un traceroute sobre TCP en lugar de sólo ICMP. Sin embargo, esto puede ser exagerado.

sigh Tengo que editar para añadir este bit, ya que no podemos poner código en los comentarios. Knoppix puede estar haciendo algo diferente con su versión de netcat, pero esto es lo que obtengo de Linux Mint

$ date;nc -z -w 1 www.google.com 8000;date
Fri Jun 20 15:55:26 PDT 2014
Fri Jun 20 15:55:27 PDT 2014
$ date;nc -z -w 4 www.google.com 8000;date
Fri Jun 20 15:55:33 PDT 2014
Fri Jun 20 15:55:37 PDT 2014

$ nc -h
[v1.10-40]
48
48
48
2014-06-17 15:35:04 +0000

Sí, use HPing para hacerlo:

$ sudo hping -S -p 80 google.com
HPING google.com (p5p1 77.237.27.37): S set, 40 headers + 0 data bytes
len=46 ip=77.237.27.37 ttl=58 id=25706 sport=80 flags=SA seq=0 win=29200 rtt=7.5 ms
len=46 ip=77.237.27.37 ttl=58 id=25707 sport=80 flags=SA seq=1 win=29200 rtt=7.4 ms
len=46 ip=77.237.27.37 ttl=58 id=25708 sport=80 flags=SA seq=2 win=29200 rtt=8.5 ms
len=46 ip=77.237.27.37 ttl=58 id=25709 sport=80 flags=SA seq=3 win=29200 rtt=7.8 ms
^C
--- google.com hping statistic ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 7.4/7.8/8.5 ms

Tenga en cuenta que necesita privilegios de root (o capacidades SELinux) para crear paquetes de IP en bruto, al igual que ping (que es muy probable que sea suid en su sistema).

21
21
21
2015-01-21 08:02:45 +0000

Puedes usar Paping , una prueba de puerto TCP multiplataforma, emulando la funcionalidad de ping (ping de puerto)

(ver también Github ya que code.google.com se ha depreciado)

paping -p 80 google.com
19
19
19
2014-06-23 09:57:58 +0000

También podrías usar nping (parte de nmap):

$ nping -p 80 localhost

Starting Nping 0.6.00 ( http://nmap.org/nping ) at 2014-06-23 11:57 CEST
SENT (0.0015s) Starting TCP Handshake > localhost:80 (127.0.0.1:80)
RECV (0.0016s) Handshake with localhost:80 (127.0.0.1:80) completed
SENT (1.0027s) Starting TCP Handshake > localhost:80 (127.0.0.1:80)
RECV (1.0027s) Handshake with localhost:80 (127.0.0.1:80) completed
SENT (2.0038s) Starting TCP Handshake > localhost:80 (127.0.0.1:80)
RECV (2.0039s) Handshake with localhost:80 (127.0.0.1:80) completed
SENT (3.0050s) Starting TCP Handshake > localhost:80 (127.0.0.1:80)
RECV (3.0050s) Handshake with localhost:80 (127.0.0.1:80) completed
SENT (4.0061s) Starting TCP Handshake > localhost:80 (127.0.0.1:80)
RECV (4.0062s) Handshake with localhost:80 (127.0.0.1:80) completed

Max rtt: 0.032ms | Min rtt: 0.008ms | Avg rtt: 0.012ms
TCP connection attempts: 5 | Successful connections: 5 | Failed: 0 (0.00%)
Tx time: 4.00575s | Tx bytes/s: 99.86 | Tx pkts/s: 1.25
Rx time: 4.00575s | Rx bytes/s: 49.93 | Rx pkts/s: 1.25
Nping done: 1 IP address pinged in 4.01 seconds
8
8
8
2015-12-18 22:11:18 +0000

Puedes hacer esto en la cáscara con Python como una línea no tan corta:

$ portping() { python <<<"import socket; socket.setdefaulttimeout(1); socket.socket().connect(('$1', $2))" 2> /dev/null && echo OPEN || echo CLOSED; }
$ portping 8.8.8.8 54
CLOSED
$ portping 8.8.8.8 53
OPEN
7
7
7
2017-06-06 13:07:40 +0000

Sólo como referencia, quería compartir un post de Vivek Gite: https://www.cyberciti.biz/faq/ping-test-a-specific-port-of-machine-ip-address-using-linux-unix/#comment-920398

Él lista varias formas, algunas de las cuales ya están publicadas aquí. Pero la más sorprendente para mí fue nada más que bash:

(echo >/dev/tcp/{host}/{port}) &>/dev/null && echo "opened" || echo "closed"
(echo >/dev/udp/{host}/{port}) &>/dev/null && echo "opened" || echo "closed"
(echo >/dev/tcp/www.cyberciti.biz/22) &>/dev/null && echo "Opened 22" || echo "Closed 22"
(echo >/dev/tcp/www.cyberciti.biz/443) &>/dev/null && echo "Opened 443" || echo "Closed 443"

O una versión súper simple: sólo mirando la salida del siguiente patrón de comandos:

echo >/dev/{tcp|udp}/{host}/{port}

Útil cuando se trabaja con contenedores de muelle aleatorios.

3
3
3
2015-06-15 10:48:37 +0000

Añado la herramienta watch aquí:

watch nmap -p22,80 google.com

Every 2,0s: nmap -p22,80 google.com Mon Jun 15 16:46:33 2015

Starting Nmap 6.40 ( http://nmap.org ) at 2015-06-15 16:46 NOVT
Nmap scan report for google.com (127.0.0.1)
Host is up (0.0012s latency).
rDNS record for 127.0.0.1: google.com
PORT STATE SERVICE
22/tcp open ssh
80/tcp closed http

Nmap done: 1 IP address (1 host up) scanned in 0.18 seconds
3
3
3
2016-07-25 18:26:01 +0000

Es simple con nmap

ejemplos:

#sintaxis
nmap -p [port] hostName
#first is command, after scan ports, type port - port or range ports, and ip or name of website...

## Scan port 80
nmap -p 80 onofri.org

## Scan TCP port 80
nmap -p T:80 onofri.org

## Scan UDP port 53
nmap -p U:53 onofri.org

## Scan two ports ##
nmap -p 80,443 onofri.org

## Scan port ranges ##
nmap -p 80-200 onofri.org

## Combine all options ##
nmap -p U:53,111,137,T:21-25,80,139,8080 onofri.org
nmap -p U:53,111,137,T:21-25,80,139,8080 server1.cyberciti.biz
nmap -v -sU -sT -p U:53,111,137,T:21-25,80,139,8080 onofri.org

## Scan all ports with * wildcard ##
nmap -p "*" 192.168.1.1

## Scan top ports i.e. scan $number most common ports ##
nmap --top-ports 5 onofri.org
nmap --top-ports 10 onofri.org

Para más información vea esto:

escriba en la línea de comando esto: man nmap http://www.cyberciti.biz/networking/nmap-command-examples-tutorials/ http://www.tecmint.com/nmap-command-examples/

1
1
1
2014-06-19 15:58:08 +0000

¿Intenta probar la comunicación u obtener una respuesta del puerto 80 de ese nodo? PING intentará establecer comunicación con un host específico a través de ICMP que no tiene nada que ver con los puertos.

En su lugar intente http://nmap.org/ para comprobar la información del puerto y probar la comunicación:

nmap -v -p 80 onofri.org

Preguntas relacionadas

6
10
3
5
3