Il ping è una semplice e ampiamente utilizzata utility di rete multi-piattaforma per testare se un host è raggiungibile su una rete del Protocollo Internet (IP). Funziona inviando una serie di messaggi Internet Control Message Protocol (ICMP) di tipo ECHO_REQUEST all’host di destinazione e aspettando una risposta di eco ICMP (o ECHO_RESPONSE).
Puoi eseguire un test di ping per stabilire se il tuo computer può comunicare con un altro computer (host di destinazione); ti aiuta a determinare:
- Se l’host di destinazione è raggiungibile (attivo) o meno.
- Per misurare il tempo impiegato dai pacchetti per raggiungere l’host di destinazione e tornare al tuo computer (il tempo di andata e ritorno (rtt) nella comunicazione con l’host di destinazione) e
- La perdita di pacchetti è espressa come percentuale.
Il suo output è una lista di risposte dall’host di destinazione insieme al tempo impiegato per l’ultimo pacchetto per raggiungere l’host di destinazione e tornare al tuo computer.
Mostra anche un riepilogo statistico del test, tipicamente includendo il numero di pacchetti trasmessi e quelli ricevuti, la percentuale di perdita di pacchetti; i tempi di andata e ritorno minimo, massimo, medio e la deviazione standard della media (mdev). In caso di fallimento di un test di ping, vedrai messaggi di errore come output.
Esempi di comandi ping in Linux
In questo articolo, spiegheremo 12 esempi pratici del comando ping per testare la raggiungibilità di un host in una rete.
Tabella dei contenuti
1. Ping del Dominio o dell’Indirizzo IP
Puoi eseguire un semplice test ping per vedere se l’host di destinazione www.google.com è raggiungibile o meno. Puoi anche utilizzare un indirizzo IP invece del nome di dominio come mostrato.
$ ping www.google.com OR $ ping 172.217.27.196
Output di Esempio:
ping www.google.com PING www.google.com (172.217.27.196) 56(84) bytes of data. 64 bytes from bom07s15-in-f4.1e100.net (172.217.27.196): icmp_seq=1 ttl=111 time=5.01 ms 64 bytes from bom07s15-in-f4.1e100.net (172.217.27.196): icmp_seq=2 ttl=111 time=4.75 ms 64 bytes from bom07s15-in-f4.1e100.net (172.217.27.196): icmp_seq=3 ttl=111 time=5.37 ms 64 bytes from bom07s15-in-f4.1e100.net (172.217.27.196): icmp_seq=4 ttl=111 time=4.99 ms ^C --- www.google.com ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3004ms rtt min/avg/max/mdev = 4.751/5.030/5.373/0.222 ms ...
Dai risultati del comando sopra, il ping è stato eseguito con successo e non ci sono stati pacchetti persi. Una cosa importante da notare, in un output del test di ping, è il tempo alla fine di ogni risposta al ping.
Presumendo che stai effettuando test di ping sui tuoi server, allora il valore qui conta molto, a seconda del tipo di applicazione che stai eseguendo su un server.
Se, ad esempio, hai un’applicazione web dove una singola richiesta dell’utente comporta così tante query a un database(i) per generare risultati sull’interfaccia utente, allora un tempo di ping più basso verso quel particolare server implica che più dati vengano trasmessi senza ritardi e viceversa.
2. Richiesta di Echo di Ping
Puoi specificare il numero di ECHO_REQUESTs da inviare dopo i quali il ping termina, utilizzando l’opzione -c
come mostrato (in questo caso il test ping si interromperà dopo l’invio di 5 pacchetti).
$ ping -c 5 www.google.com PING www.google.com (172.217.27.196) 56(84) bytes of data. 64 bytes from bom07s15-in-f4.1e100.net (172.217.27.196): icmp_seq=1 ttl=111 time=4.31 ms 64 bytes from bom07s15-in-f4.1e100.net (172.217.27.196): icmp_seq=2 ttl=111 time=4.35 ms 64 bytes from bom07s15-in-f4.1e100.net (172.217.27.196): icmp_seq=3 ttl=111 time=4.06 ms 64 bytes from bom07s15-in-f4.1e100.net (172.217.27.196): icmp_seq=4 ttl=111 time=5.20 ms 64 bytes from bom07s15-in-f4.1e100.net (172.217.27.196): icmp_seq=5 ttl=111 time=4.41 ms --- www.google.com ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4006ms rtt min/avg/max/mdev = 4.064/4.464/5.195/0.383 ms
3. Imposta il timeout dell’intervallo di ping
L’opzione -i
ti consente di impostare gli intervalli in secondi tra l’invio di ciascun pacchetto, il valore predefinito è di un secondo.
$ ping -i 3 -c 5 www.google.com PING www.google.com (172.217.27.196) 56(84) bytes of data. 64 bytes from bom07s15-in-f4.1e100.net (172.217.27.196): icmp_seq=1 ttl=111 time=5.71 ms 64 bytes from bom07s15-in-f4.1e100.net (172.217.27.196): icmp_seq=2 ttl=111 time=6.19 ms 64 bytes from bom07s15-in-f4.1e100.net (172.217.27.196): icmp_seq=3 ttl=111 time=5.39 ms 64 bytes from bom07s15-in-f4.1e100.net (172.217.27.196): icmp_seq=4 ttl=111 time=7.34 ms 64 bytes from bom07s15-in-f4.1e100.net (172.217.27.196): icmp_seq=5 ttl=111 time=4.77 ms --- www.google.com ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 12014ms rtt min/avg/max/mdev = 4.768/5.879/7.341/0.863 ms
4. Attacco DoS con Flood di Ping noto anche come Ping of Death
Per determinare la risposta della tua rete in condizioni di elevato carico, puoi eseguire un “flood ping” che invia richieste il più rapidamente possibile, utilizzando l’opzione -f
. Solo l’utente root può utilizzare questa opzione, altrimenti utilizza il comando sudo per ottenere i privilegi di root.
$ sudo ping -f www.google.com OR $ sudo ping -f -i 3 www.google.com #specify interval between requests PING www.google.com (172.217.163.36) 56(84) bytes of data. .......................................................................................................................................................................................^C --- www.google.com ping statistics --- 2331 packets transmitted, 2084 received, 10% packet loss, time 34095ms rtt min/avg/max/mdev = 29.096/29.530/61.474/1.417 ms, pipe 4, ipg/ewma 14.633/29.341 ms
5. Ping Broadcast di una LAN
Puoi abilitare il ping di broadcast utilizzando l’opzione -b
, che otterrà una risposta da tutti gli indirizzi IP collegati alla tua rete LAN.
$ ping -b 192.168.0.0
6. Imposta il valore TTL del ping
Per limitare il numero di salti di rete (TTL – Time-to-live) che attraversano le sonde, utilizzare il flag -t
. È possibile impostare un valore compreso tra 1 e 255; i diversi sistemi operativi impostano valori predefiniti differenti.
Ogni router che riceve il pacchetto sottrae almeno 1 dal conteggio e se il conteggio è ancora maggiore di 0, il router inoltra il pacchetto al prossimo salto, altrimenti lo scarta ed invia una risposta ICMP al computer.
In questo esempio, il TTL è stato superato e il test ping è fallito, come mostrato nello screenshot.
$ ping -t 10 www.google.com

7. Imposta la dimensione del pacchetto Ping
La dimensione predefinita del pacchetto dovrebbe essere sufficiente per un test di ping, tuttavia, è possibile modificarla per soddisfare le esigenze specifiche del test. È possibile specificare la dimensione del payload, in numero di byte, utilizzando l’opzione -s
, che comporterà una dimensione totale del pacchetto pari al valore fornito più 8 byte aggiuntivi per l’intestazione ICMP.
$ ping -s 1000 www.google.com
8. Imposta il pre-caricamento del ping
Se il pre-caricamento viene aggiunto, ping invia quel numero di pacchetti senza attendere una risposta. Si noti che solo l’utente root può selezionare un pre-caricamento superiore a 3, in caso contrario, utilizzare il comando sudo per ottenere i privilegi di root.
$ sudo ping -l 5 www.google.com
9. Imposta il timeout del ping
È anche possibile impostare il tempo di attesa per una risposta, in secondi, utilizzando l’opzione -W
come mostrato.
$ ping -W 10 www.google.com
10. Imposta il timeout del ping in secondi
Per impostare un timeout in secondi, prima che il ping esca indipendentemente da quanti pacchetti sono stati inviati o ricevuti, utilizzare il flag -w
.
$ ping -w 5 www.google.com
11. Ping Debug ICMP Packets
L’opzione -d
ti consente di abilitare i dettagli dei pacchetti IP di debug come mostrato.
$ ping -d www.google.com
12. Ping Verbose Output
Puoi abilitare l’output dettagliato utilizzando il flag -v
, come segue.
$ ping -v www.google.com
Nota: Ping potrebbe non essere necessariamente utilizzato per testare la connettività di rete, semplicemente ti dice se un indirizzo IP è attivo o inattivo.
Viene normalmente utilizzato insieme al programma traceroute, ma, MTR – un moderno strumento di diagnostica di rete combina la funzionalità di ping e traceroute e offre molte funzionalità aggiuntive.
Per una lista completa degli strumenti di rete, controlla: Gestione della rete Linux, Risoluzione dei problemi e Debugging
Sommario
Ping è un metodo molto comune per risolvere problemi di accessibilità degli host in una rete. In questo articolo, abbiamo spiegato 12 esempi pratici del comando ping per testare la raggiungibilità di un dispositivo in rete. Condividi le tue opinioni con noi tramite il modulo dei commenti qui sotto.