GNU/Linux >> Linux Esercitazione >  >> Linux

Spiegazione del comando Ping di Linux con esempi

Ping è uno dei comandi di rete più comunemente usati in Linux e in altri sistemi operativi.

Il ping viene utilizzato principalmente per verificare se un host remoto è raggiungibile o meno. L'host remoto potrebbe essere un server web, il tuo router o un sistema sulla tua rete locale.

Come funziona il ping? In realtà invia piccoli pacchetti ICMP all'host remoto e attende la risposta. Se l'host è attivo, dovresti vedere una risposta.

È come la tecnologia sonar usata nei sottomarini. I sottomarini inviano impulsi di segnale audio e aspettano il ritorno dell'eco.

Quindi, come usi Ping in Linux? Quali sono le diverse opzioni del comando Ping? Lascia che ti mostri alcuni degli usi comuni del comando Ping.

Lo sapevi? Il comando Ping è scritto correttamente come PING e sta per Packet Internet Groper.

Utilizzo del comando ping in Linux

Puoi utilizzare il comando ping con l'indirizzo IP o il nome host/URL.

Supponiamo di eseguire il ping di Google. Invierà pacchetti ICMP di dimensioni 56 byte a google.com.

ping google.com
PING google.com (108.177.122.102) 56(84) bytes of data.
64 bytes from 108.177.122.102 (108.177.122.102): icmp_seq=1 ttl=42 time=325 ms
64 bytes from 108.177.122.102 (108.177.122.102): icmp_seq=2 ttl=42 time=387 ms
64 bytes from 108.177.122.102 (108.177.122.102): icmp_seq=3 ttl=42 time=319 ms
64 bytes from 108.177.122.102 (108.177.122.102): icmp_seq=4 ttl=42 time=321 ms
^C
--- google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3002ms
rtt min/avg/max/mdev = 319.697/338.496/387.785/28.527 ms

Devi interrompere manualmente il comando ping altrimenti continuerà a funzionare. Puoi usare la scorciatoia da terminale Ctrl+C per interrompere il comando ping in Linux, come ho fatto nell'esempio sopra.

Quando si interrompe il comando ping, viene visualizzato un riepilogo della trasmissione. Puoi vedere statistiche come il numero di pacchetti ICMP trasmessi, pacchetti ricevuti, pacchetti persi ecc.

Ora che sai come eseguire il ping in Linux, vediamo alcune delle altre opzioni del comando ping.

Invia solo N numero di pacchetti

Se non vuoi che il comando ping venga eseguito per sempre senza interromperlo manualmente, puoi utilizzare l'opzione -c.

Con questo, puoi specificare il numero di pacchetti che il comando ping deve inviare prima di interrompersi automaticamente.

ping -c 2 104.248.179.115
 PING 104.248.179.115 (104.248.179.115) 56(84) bytes of data.
 64 bytes from 104.248.179.115: icmp_seq=1 ttl=50 time=315 ms
 64 bytes from 104.248.179.115: icmp_seq=2 ttl=50 time=423 ms
 --- 104.248.179.115 ping statistics ---
 2 packets transmitted, 2 received, 0% packet loss, time 1000ms
 rtt min/avg/max/mdev = 315.208/369.190/423.172/53.982 ms

Invia ping solo per un periodo di tempo limitato

Oltre a impostare il numero di pacchetti da inviare, puoi anche impostare per quanto tempo verranno inviati i pacchetti.

Ad esempio, se vuoi inviare pacchetti ping per soli 5 secondi, puoi usarlo in questo modo:

ping -w 5 google.com
 PING google.com (64.233.177.138) 56(84) bytes of data.
 64 bytes from yx-in-f138.1e100.net (64.233.177.138): icmp_seq=1 ttl=40 time=407 ms
 64 bytes from yx-in-f138.1e100.net (64.233.177.138): icmp_seq=2 ttl=40 time=320 ms
 64 bytes from yx-in-f138.1e100.net (64.233.177.138): icmp_seq=3 ttl=40 time=323 ms
 64 bytes from yx-in-f138.1e100.net (64.233.177.138): icmp_seq=4 ttl=40 time=472 ms
 64 bytes from yx-in-f138.1e100.net (64.233.177.138): icmp_seq=5 ttl=40 time=406 ms
 --- google.com ping statistics ---
 5 packets transmitted, 5 received, 0% packet loss, time 4002ms
 rtt min/avg/max/mdev = 320.634/385.993/472.056/57.309 ms

Modifica l'intervallo di tempo tra due ping

Per impostazione predefinita, ping invia i pacchetti a intervalli di un secondo. Puoi modificare questo intervallo di tempo con l'opzione -i.

Per inviare i pacchetti ICMP con un intervallo di 3 secondi, puoi utilizzare il comando Ping in questo modo:

ping -i 3 31.13.90.36

Puoi anche ridurre l'intervallo di tempo tra i ping.

ping -i 0.5 31.13.90.36

Tuttavia, se provi a ridurre l'intervallo di tempo al di sotto di 0,2 secondi (200 ms), vedrai un errore:

ping -i 0.1 31.13.90.36
PING 31.13.90.36 (31.13.90.36) 56(84) bytes of data.
ping: cannot flood; minimal interval allowed for user is 200ms

Non preoccuparti. È ancora possibile eseguire il ping con un intervallo inferiore a 200 ms. Ma per farlo, devi usare il ping con i privilegi di root.

sudo ping -i 0.1 31.13.90.36
PING 31.13.90.36 (31.13.90.36) 56(84) bytes of data.
64 bytes from 31.13.90.36: icmp_seq=1 ttl=49 time=470 ms
64 bytes from 31.13.90.36: icmp_seq=2 ttl=49 time=372 ms

Cambia la dimensione del pacchetto

La dimensione del pacchetto ICMP predefinito inviato da Ping è 56 byte. Anche questo può essere modificato con l'aiuto del comando -s.

ping -s 100 31.13.90.36
 PING 31.13.90.36 (31.13.90.36) 100(128) bytes of data.
 108 bytes from 31.13.90.36: icmp_seq=1 ttl=49 time=234 ms
 108 bytes from 31.13.90.36: icmp_seq=2 ttl=49 time=257 ms
 108 bytes from 31.13.90.36: icmp_seq=3 ttl=49 time=280 ms
 ^C
 --- 31.13.90.36 ping statistics ---
 3 packets transmitted, 3 received, 0% packet loss, time 2002ms
 rtt min/avg/max/mdev = 234.208/257.352/280.424/18.867 ms

Attacco DoS con Ping flooding alias Ping of Death

Uno degli attacchi DoS più semplici è il Ping of Death. In questo tipo di attacco, l'attaccante invia un gran numero di richieste ping in un arco di tempo molto breve. Se il server non è ben configurato, si sgretolerà nella gestione della richiesta di ping e il sito andrà in crash.

Il comando ping ha una "funzione" incorporata per questo. Si chiama ping flooding e può essere ottenuto con l'opzione -f. Avrai bisogno dei diritti sudo per eseguire questa opzione con intervallo zero.

sudo ping -f google.com 
 PING google.com (108.177.122.101) 56(84) bytes of data.
 …………………..^C    
 --- google.com ping statistics ---
 1436 packets transmitted, 1413 received, 1% packet loss, time 22837ms
 rtt min/avg/max/mdev = 313.887/326.102/388.178/7.464 ms, pipe 26, ipg/ewma 15.914/323.456 ms

Quando esegui questo comando, vedrai alcuni punti apparire e scomparire nell'output. Ogni singolo '.' denota una richiesta mentre la risposta è un backspace (ecco perché i punti scompaiono).

Questa opzione di flood ping è utile per testare la capacità di carico di un server.

Suggerimento bonus:invia segnali acustici

Puoi inviare ping udibili con l'opzione -a. Con questo, sentirai un segnale acustico per ogni ping riuscito.

ping -a google.com

Si noti che non tutte le distribuzioni Linux sono configurate per emettere il segnale acustico. L'ho testato su Ubuntu 18.04 e ho sentito il segnale acustico.

Comando ping per la risoluzione dei problemi

Finora ciò che abbiamo visto sono gli esempi di successo del comando ping. Ma ciò non accadrà sempre. Vediamo alcuni degli errori comuni che potresti vedere e comprendiamo il motivo di tali errori.

Nessuna risposta per il ping

Potresti notare che alcuni host non rispondono alla richiesta di ping. Sembra che il comando ping si sia bloccato perché non c'è risposta. Il comando rimane lì, non va nemmeno in timeout.

Se termini il comando ping, vedrai alcune strane statistiche.

ping intel.com
PING intel.com (13.91.95.74) 56(84) bytes of data. 
 ^C
--- intel.com ping statistics ---
100 packets transmitted, 0 received, 100% packet loss, time 101362m

Come puoi vedere, sono stati trasmessi 100 pacchetti ma non è stata ricevuta alcuna risposta per nessuno di essi.

È molto probabile che alcuni server scartino i pacchetti ICMP. Questa è una misura di sicurezza per evitare il ping flood.

Host di destinazione irraggiungibile

Questo errore può verificarsi a causa di uno dei due motivi:

  • O il sistema locale non ha alcun percorso verso l'host remoto
  • o il router dell'end point non ha un percorso verso l'host remoto

Se visualizzi solo l'errore "host di destinazione irraggiungibile", significa che il tuo sistema non è riuscito a trovare un percorso verso l'host remoto.

Se invece vedi l'errore nella parte "Rispondi da " della risposta, significa che il pacchetto è stato inviato al di fuori della tua rete ma non è riuscito a raggiungere la destinazione.

A volte i server bloccano anche il traffico ICMP che potrebbe mostrare questo errore.

La richiesta scade

Questo errore significa che i pacchetti hanno raggiunto il server remoto ma la risposta non è riuscita a raggiungere il tuo sistema. Il problema potrebbe essere la perdita di pacchetti o un errore di routing.

Pronto per eseguire il ping?

Spero che questo tutorial ti abbia aiutato a comprendere meglio il comando ping di Linux.

Se hai domande o suggerimenti, lascia un messaggio nella sezione commenti.


Linux
  1. Comando di spegnimento di Linux spiegato con esempi

  2. Il comando nslookup Linux spiegato con esempi

  3. Comando Traceroute di Linux, spiegato con esempi

  4. Comando JQ in Linux con esempi

  5. Esempi di comandi ping in Linux

Comando wget Linux spiegato con esempi

Il comando Tr in Linux spiegato con esempi

w Comando spiegato con esempi in Linux

Esempi di comandi ping Linux

Spiegazione del comando tee di Linux (con esempi)

Spiegazione del comando csplit di Linux (con esempi)