Introduzione
Il comando ping
è una delle utility più utilizzate per la risoluzione dei problemi, il test e la diagnosi dei problemi di connettività di rete.
Il ping funziona inviando uno o più pacchetti di richieste echo ICMP (Internet Control Message Protocol) a un IP di destinazione specificato sulla rete e attende una risposta. Quando la destinazione riceve il pacchetto, risponderà con una risposta echo ICMP.
Con il comando ping
, è possibile determinare se un IP di destinazione remoto è attivo o inattivo. È inoltre possibile trovare il ritardo di andata e ritorno nel comunicare con la destinazione e verificare se vi è una perdita di pacchetti.
L'utility ping
fa parte del pacchetto iputils
(o iputils-ping
), che è preinstallato su quasi tutte le distribuzioni Linux. ping
è disponibile anche su Windows, macOS e FreeBSD.
Come utilizzare il comando Ping
La sintassi per il comando ping è la seguente:
ping [OPTIONS] DESTINATION
Per illustrare meglio come funziona il comando ping, eseguiamo il ping google.com
:
ping google.com
L'output sarà simile al seguente:
PING google.com (216.58.206.46) 56(84) bytes of data.
64 bytes from mil07s07-in-f14.1e100.net (216.58.206.46): icmp_seq=1 ttl=52 time=23.5 ms
64 bytes from mil07s07-in-f14.1e100.net (216.58.206.46): icmp_seq=2 ttl=52 time=23.3 ms
64 bytes from mil07s07-in-f14.1e100.net (216.58.206.46): icmp_seq=3 ttl=52 time=23.0 ms
64 bytes from mil07s07-in-f14.1e100.net (216.58.206.46): icmp_seq=4 ttl=52 time=23.4 ms
64 bytes from mil07s07-in-f14.1e100.net (216.58.206.46): icmp_seq=5 ttl=52 time=23.5 ms
64 bytes from mil07s07-in-f14.1e100.net (216.58.206.46): icmp_seq=6 ttl=52 time=23.8 ms
64 bytes from mil07s07-in-f14.1e100.net (216.58.206.46): icmp_seq=7 ttl=52 time=24.0 ms
64 bytes from mil07s07-in-f14.1e100.net (216.58.206.46): icmp_seq=8 ttl=52 time=23.5 ms
^C
--- google.com ping statistics ---
8 packets transmitted, 8 received, 0% packet loss, time 7009ms
rtt min/avg/max/mdev = 23.007/23.489/24.000/0.285 ms
Il comando ping
risolve il nome di dominio in un indirizzo IP e inizia a inviare i pacchetti ICMP all'IP di destinazione. Se l'IP di destinazione è raggiungibile, risponderà e il comando ping stampa una riga che include i seguenti campi:
- Il numero di byte di dati. Il valore predefinito è 56, che si traduce in 64 byte di dati ICMP -
64 bytes
- L'indirizzo IP della destinazione -
from muc11s01-in-f14.1e100.net (172.217.22.206)
- Il numero di sequenza ICMP per ciascun pacchetto.
icmp_seq=1
- Il Time to Live. -
ttl=53
- Come funziona TTL? - Il tempo di ping, misurato in millisecondi, che è il tempo di andata e ritorno per il pacchetto per raggiungere l'host e per la risposta per tornare al mittente. -
time=41.4 ms
Per impostazione predefinita, l'intervallo tra l'invio di un nuovo pacchetto è di un secondo.
Il comando ping
continuerà a inviare i pacchetti ICMP all'indirizzo IP di destinazione fino a quando non riceve un interrupt. Per interrompere il comando, basta premere la combinazione di tasti Ctrl+C
.
Quando il comando si interrompe, visualizza una statistica che include la percentuale di perdita di pacchetti. La perdita di pacchetti significa che i dati sono stati rilasciati da qualche parte nella rete, indicando un problema all'interno della rete. In caso di perdita di pacchetti, è possibile utilizzare il comando traceroute
per identificare dove si verifica la perdita di pacchetti.
Se ping
non restituisce una risposta, significa che la comunicazione di rete non è stata stabilita. Quando ciò accade, non significa sempre che l'IP di destinazione non sia attivo. Alcuni host potrebbero avere un firewall che blocca il traffico ICMP o impostato per non rispondere alle richieste di ping.
In caso di successo, il comando ping
termina con il codice 0
. Altrimenti uscirà con il codice 1
o 2
. Ciò può essere utile quando si utilizza l'utility ping
in uno script di shell.
Nelle sezioni seguenti, esamineremo le opzioni ping
di comando più comunemente utilizzate.
Specificare il numero di pacchetti
Come già accennato, per impostazione predefinita, ping
continuerà a inviare pacchetti ICMP fino a quando non riceve un segnale di interruzione. Per specificare il numero di pacchetti di richieste Echo da inviare dopo il quale uscirà il ping, utilizzare l'opzione -c
seguita dal numero dei pacchetti:
ping -c 1 DESTINATION
Ad esempio, per eseguire il ping noviello.it
solo una volta dovresti usare:
ping -c 1 noviello.it
Specifica l'interfaccia di origine
Il comportamento predefinito del comando ping
è di inviare pacchetti ICMP tramite la route predefinita. Se sul tuo computer sono presenti più interfacce, puoi specificare l'interfaccia di origine con l'opzione -I
:
ping -I INTERFACE_NAME DESTINATION
Il comando seguente eseguirà il ping noviello.it
usando em2
come interfaccia di origine:
ping -I em2 noviello.it
Specifica il protocollo Internet
Quando si esegue il comando ping
, utilizzerà IPv4 o IPv6, a seconda delle impostazioni DNS della macchina.
Per forzare ping
nell'utilizzare IPv4, passa l'opzione -4
o usa il suo alias ping4
:
ping -4 DESTINATION
Per IPv6, passa l'opzione -6
o usa ping6
:
ping -6 DESTINATION
Conclusione
ping
è un'utility di rete a riga di comando che consente di testare la connettività a livello IP di un determinato host sulla rete.
Per visualizzare tutte le opzioni disponibili del comando ping
, digitare:
man ping