Grazie a Linux, abbiamo accesso a molti strumenti che facilitano l’amministrazione di rete& diagnostica. In questo senso, il comando ping di Linux è uno degli strumenti più utili per amministratori di sistema e amministratori di rete.

La sua funzione di base è determinare se un host della rete è raggiungibile o meno. Tuttavia, in questo post, affronteremo altre funzionalità più avanzate del comando Ping Linux.

Sommario

A che serve il comando ping?,

Il comando ping è uno degli strumenti di base per lavorare con le reti. Il suo scopo è diagnosticare errori di connessione di rete.

In questo modo, è possibile sapere se un nodo di rete ha perso la connettività. D’altra parte, è anche utile eseguire altre attività diagnostiche come le seguenti:

  • Misurare il tempo impiegato da due nodi di rete per comunicare.
  • Saremo anche in grado di identificare l’indirizzo IP di un host specifico. Possiamo utilizzare questa funzione sia su Internet che in una rete privata.,
  • Il comando ping può essere utilizzato in uno script bash per eseguire controlli automatici con i nodi di rete.
  • Permette di sapere se c’è una connessione con apparecchiature specifiche.

Come puoi vedere, è un comando necessario per l’amministrazione di reti e server.

Come funziona il comando ping?

In Linux, il funzionamento del comando ping è abbastanza semplice da spiegare. Il comando invia una serie di piccoli pacchetti a un nodo specifico.

È possibile testare questo nodo utilizzando l’indirizzo IP o il nome host., Quindi, dopo aver inviato il pacchetto, il comando verifica e misura il tempo necessario per ricevere una risposta dal nodo di destinazione.

Come ci si può aspettare, il tempo di risposta può essere influenzato a causa di condizioni come la posizione geografica tra i punti di connessione o qualsiasi parte dell’hardware utilizzato tra i due nodi.

Ad esempio, nelle reti private cablate, il comando otterrà tempi migliori rispetto a una rete con più router o bridge.

Tuttavia, le informazioni che il comando genererà giudicheranno se la rete è in buone o cattive condizioni.,

La sintassi del comando è la seguente:

ping 

Alcune delle opzioni più utili e utilizzate del comando ping sono le seguenti:

  • -c: Con questa opzione, è possibile specificare quanti pacchetti inviare.
  • -s: Questa opzione consente di modificare la dimensione predefinita dei pacchetti.
  • -v: modalità dettagliata.
  • -w: Specifica un tempo in secondi in cui l’esecuzione del comando terminerà. Non importa quanti pacchetti il comando ha inviato o ricevuto.
  • -i: Con questa opzione, è possibile specificare l’interfaccia di rete da utilizzare.,

Il nodo di destinazione può essere specificato da un indirizzo IP o da un nome host.

Posso eseguire il ping con un proxy?

Un proxy è un server o un’applicazione che funge da intermediario per la connessione tra due punti su una rete. È l’uomo nel mezzo che fa la richiesta direttamente su un altro nodo.

Il problema è che il comando Ping richiede una connessione di rete diretta tra i nodi.

Pertanto, il comando Ping generalmente non può funzionare correttamente se c’è un proxy dietro di esso.

Una possibile soluzione è che molti siti web offrono il servizio di comando Ping., D’altra parte, per alcune attività del comando ping, è possibile utilizzare il comando curl. Inoltre, puoi utilizzare una VPN in modo che nasconda il tuo IP.

Tuttavia, in alcune distribuzioni Linux, questo comando non è installato di default. Innanzitutto, verificalo e poi installalo se non è installato.

Protocollo Ping IPv6

Normalmente, quando si utilizza il comando Ping, utilizziamo gli indirizzi IP con il protocollo IPv4. Tuttavia, con l’avvento del protocollo IPv6, è sempre più comune notare gli indirizzi in questo formato.

Il kernel Linux supporta il protocollo IPv6 dalla versione 2.,2, quindi tutte le distribuzioni Linux attualmente lo supportano.

La sintassi di base è la seguente:

$ ping -6 2001:4860:4860::8888

Nelle vecchie versioni, c’era il comando ping6. Nelle versioni recenti di Linux, ping6 non esiste più e la sua funzionalità è stata fusa in ping e funziona allo stesso modo di quanto hai visto.

La sintassi di base è la seguente:

ping6 

Con l’opzione-c, possiamo specificare il numero di pacchetti da inviare e con-i per l’interfaccia di rete che userete., Ad esempio:

ping6 2001:4860:4860::8888

Ping una porta specifica

A volte vogliamo sapere se una porta specifica su un nodo è attiva. Tuttavia, il comando ping non fornisce questa funzionalità, ma è possibile farlo con il comando telnet installato di default su Linux.

Per fare questo, è sufficiente utilizzare la seguente sintassi:

telnet 
telnet google.com 80

In questo modo, è possibile eseguire il ping di una porta specifica di un nodo di rete in modo primitivo.,

Ping con il tempo

Anche se il comando ping visualizza informazioni utili, può essere un po ‘ semplice. Tuttavia, è possibile modificare un po ‘ l’operazione del comando, per farlo mostrare la data in cui il pacchetto viene inviato.

Questo può rendere le informazioni piacevoli alla vista e potrebbe essere utile per script e log.

Questa sintassi è sufficiente per farlo. Tuttavia, è necessario installare il pacchetto ccze.

ping | xargs -n1 -i bash -c 'echo `date +%F\ %T`" {}"' | ccze

Come puoi vedere, mostra il tempo per ogni pacchetto inviato.,

Ping tutti gli host su una data sottorete

È possibile inviare un segnale ping a tutti gli host su una rete o sottorete. Per questo, è sufficiente aggiungere l’opzione-b e eseguire il ping dell’indirizzo IP di trasmissione di qualsiasi rete che termina con 255.

Ad esempio:

ping -b -c 4 192.168.1.255

Quindi se la destinazione è irraggiungibile, forse bloccano i pacchetti ICMP inviati dal comando ping, o forse c’è un problema di rete o un problema sulla tabella di routing.

Come terminare un ping?,

Per impostazione predefinita, il comando ping su Linux invia continuamente pacchetti di test agli host. Tuttavia, una volta che le informazioni sono disponibili, diventa necessario terminare l’esecuzione del comando ping.

Per farlo, è sufficiente premere i seguenti tasti:

CTRL + C

In questo modo, il comando smetterà immediatamente di funzionare.

Termina dopo un conteggio specifico

Puoi limitare il conteggio dei pacchetti a 10 o qualsiasi altra cosa. Quando finisce di inviare i dieci pacchetti, si fermerà.,

ping -c 10 

Dove si trova il comando ping su Linux?

In un sistema derivato da Unix come Linux, i binari si trovano comunemente nel percorso:

/usr/bin/

In questa directory, troverete molti binari che usiamo come comandi sul terminale. In altri sistemi operativi della famiglia Linux, è anche possibile posizionarlo nella directory

/usr/sbin/

.,

Così, siamo in grado di controllare utilizzando il comando ls:

$ ls /usr/bin | grep ping

In questa immagine, si può vedere che i comandi ping si trovano in

/usr/bin/

un Altro modo, è possibile utilizzare il comando per individuare qualsiasi comando su Linux:

$ which ping

viene visualizzata la seguente:

/usr/bin/ping

Controlla la latenza utilizzando il comando ping

Una delle possibilità offerte dal comando ping è che non si può misurare la connessione di tempo di risposta. Questa è la latenza.,

Per misurare la latenza usando il comando ping, basta usarlo e prestare attenzione all’output dello schermo:

ping -c 4 ping -c 4 192.168.1.1

Come puoi vedere, quattro pacchetti sono stati inviati alla destinazione con un certo tempo di risposta.

In fondo, c’è una riga che inizia come segue:

rtt min/avg/max/mdev

Il secondo valore dopo il segno di uguale è il valore di latenza. In questo caso, il valore è 6.798.,

Con la latenza, è possibile determinare gli host che hanno connettività inferiore al resto. In questo modo, saremo in grado di prendere le misure pertinenti.

Trova l’MTU ideale

L’MTU (Maximum transmission unit) è un valore che esprime staticamente la dimensione in byte dell’unità dati più grande che può essere inviata su una rete.

Attualmente, a causa delle misure di sicurezza, sempre più reti impediscono a MTU di funzionare. Tuttavia, la maggior parte delle reti locali Ethernet utilizza un MTU da 1500 byte.,

Se si desidera trovare il valore MTU ideale utilizzando il comando ping, impostare i valori iniziali e diminuire fino a quando non si verificano errori. Se il valore è troppo alto, possiamo ottenere la seguente errore:

ping: local error: Message too long

Per fare questo, utilizzare la seguente sintassi:

ping -M do -s 

Per esempio:

ping -M do -s 1473 192.168.1.1

In questo caso, il valore della dimensione del pacchetto è molto grande. Quindi lo ridurrò. In questo caso, il valore ottimale è 1472.,

Se si riceve un altro messaggio, il valore iniziale deve essere diminuito uno per uno fino ad ottenere il risultato desiderato.

Se il valore MTU è noto, può essere utilizzato per migliorare il comportamento della rete, specialmente se si tratta di una rete grande o addirittura metropolitana.

Ping sul livello 2 (usando arping)

Con il comando ping, saremo in grado di eseguire test conoscendo l’indirizzo IP di uno specifico nodo all’interno della rete. Questo perché il comando ping funziona sul livello 3 del modello O (rete).,

D’altra parte, è possibile utilizzare un altro comando che è costruito in Linux come arping. Questo comando funziona in modo molto simile a ping ma funziona sul livello 2 del modelloSI.

La sintassi del comando è la seguente:

$ sudo arping 
$ sudo arping 192.168.1.1

Si otterrà un risultato simile a questo:

La schermata di output del comando mostra prima la dimensione del pacchetto inviato e l’indirizzo MAC del nodo e il tempo di risposta.

Si noti che questo comando non è installato di default su Debian Linux e derivati., Quindi devi installarlo, quindi puoi eseguirlo come root.

Ping a hostname

Per impostazione predefinita, il comando ping invia pacchetti di test alla destinazione utilizzando l’indirizzo IP o il nome host della destinazione. Va anche notato che la maggior parte delle implementazioni ping su Linux non risolve DNS in senso inverso.

Ad esempio, se si utilizza il comando Ping aggiungendo un indirizzo IP, verrà restituito solo l’indirizzo IP dell’host in uscita. Al contrario, se abbiamo specificato un nome host, lo risolverà e mostrerà l’IP all’output.,

Controlla l’output del seguente comando:

$ ping google.com

Percorso ping (usando traceroute)

Il comando ping non mostra il percorso dalla sorgente per raggiungere la destinazione.

E questo può essere molto utile nel caso in cui la connessione con l’host sia stata persa perché possiamo capire a che punto la connessione è stata persa.

Il comando tracert o traceroute funziona in modo molto simile al comando ping. Il vantaggio di questo è che mostra il percorso che il pacchetto prende, mostrando così il suo percorso.,

Come il comando ping viene installato nella maggior parte delle distribuzioni Linux. La sintassi di base è la seguente:

traceroute 

In questo modo, possiamo vedere il percorso che i pacchetti stanno prendendo.

Esegui il comando se il ping fallisce

Supponiamo di voler essere avvisati quando il comando ping fallisce. Per fare ciò, è necessario incorporare il comando ping in uno script bash per impostare la condizione desiderata.,

Ad esempio, questo script di shell consente di verificare se il comando ping fallisce:

#! /bin/bashping -c 1 If ; then #Your_command_hereFi

Imposta la dimensione del pacchetto ping

La dimensione predefinita dei pacchetti inviati dal comando ping agli host è di 56 byte. È un valore abbastanza basso da non influire sul funzionamento della rete.

Tuttavia, è possibile cambiarlo in un altro valore. Per fare ciò, è sufficiente aggiungere l’opzione-s con la dimensione del pacchetto desiderata.,

Ad esempio:

ping -s hostname/IP

Se vuoi che la dimensione del pacchetto sia di 100 byte, usa il seguente comando:

ping -s 100 192.168.1.1

Ricorda che potrebbe variare leggermente in base alla dimensione del pacchetto.MTU.

Disabilita il comando ping

Se siamo responsabili del mantenimento di una rete, potremmo voler disabilitare le risposte ping in qualsiasi momento. Possiamo farlo temporaneamente o permanentemente, secondo le nostre esigenze.,

Se vogliamo disattivarlo temporaneamente, è sufficiente utilizzare questo comando come utente root:

$ su$ echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all

Questo disabiliterà la risposta del comando ping, ma solo fino a quando non si riavvia il sistema.

Se si desidera farlo in modo permanente, è necessario modificare il seguente file

/etc/sysctl.conf

e aggiungere la riga seguente:

$ nano /etc/sysctl.conf
net.ipv4.icmp_echo_ignore_all=1

Quindi salvare il file e uscire., Per applicare le modifiche, utilizzare questo comando:

$ sysctl -p

Questo disabiliterà il comando ping o la risposta dei pacchetti ICMP.

Conclusione

In questo post, abbiamo spiegato in dettaglio come funziona il comando ping su Linux. Dalla sua utilità fino a disabilitarlo. Ping è uno dei comandi più facili da usare.

In questo modo la persona responsabile del funzionamento della rete sa dove si trova il problema in modo da poter agire.

Spero che trovi il post utile. Continua a tornare.

Grazie.,

Fondatore di LikeGeeks. Sto lavorando come amministratore di sistema Linux dal 2010. Sono responsabile della manutenzione, della protezione e della risoluzione dei problemi dei server Linux per più client in tutto il mondo. Mi piace scrivere script shell e Python per automatizzare il mio lavoro.