Ping è un'utilità a riga di comando, disponibile praticamente su qualsiasi sistema operativo dotato di connettività di rete, che serve a verificare se un dispositivo collegato in rete è raggiungibile.
Il comando ping invia una richiesta attraverso la rete a un dispositivo specifico. Se il ping ha successo, il computer che ha ricevuto il ping risponde al computer di origine.
Secondo l'autore, il nome ping deriva dalla terminologia dei sonar. Nel sonar, un ping è un'onda sonora udibile inviata per trovare un oggetto. Se il suono colpisce l'oggetto, le onde sonore si riflettono, o fanno eco, alla sorgente. La distanza e la posizione dell'oggetto possono essere determinate misurando il tempo e la direzione dell'onda sonora di ritorno.
Allo stesso modo, il comando ping invia una richiesta di eco. Se trova il sistema di destinazione, l'host remoto invia una risposta di eco. La distanza (numero di hop) dal sistema remoto può essere determinata dalla risposta, così come le condizioni intermedie (perdita di pacchetti e tempo di risposta). Mentre l'autore dell'utility ping ha detto che il nome del programma era semplicemente basato sul suono del sonar, altri dicono che ping è un acronimo di Packet InterNet Groper.
Gli avvisi personalizzati e la visualizzazione dei dati consentono di identificare e prevenire rapidamente i problemi di salute e di prestazioni della rete.
L'utilità ping utilizza i messaggi di richiesta echo e di risposta echo del protocollo ICMP (Internet Control Message Protocol), parte integrante di qualsiasi rete IPS. Quando viene emesso un comando ping, viene inviato un pacchetto di richiesta di echo all'indirizzo specificato. Quando l'host remoto riceve la richiesta di echo, risponde con un pacchetto di echo reply.
Per impostazione predefinita, il comando ping invia diverse richieste di eco, in genere quattro o cinque. Il risultato di ogni richiesta di echo viene visualizzato, mostrando se la richiesta ha ricevuto una risposta positiva, quanti byte sono stati ricevuti in risposta, il Time to Live (TTL) e quanto tempo è stato necessario per ricevere la risposta, oltre a statistiche sulla perdita di pacchetti e sui tempi di round trip.
La richiesta di eco ("ping") è strutturata come segue:
La risposta di echo deve includere l'esatto payload ricevuto nella richiesta:
L'utilità ping è stata incorporata praticamente in tutti i sistemi operativi con supporto di rete. Mentre la richiesta di echo e la risposta di echo sono messaggi ICMP, l'esatta implementazione dell'utilità ping varia leggermente da un produttore all'altro.
Nella sua forma più semplice, l'utilità ping può essere eseguita solo con il comando ping e una destinazione. L'host remoto può essere specificato sia per nome che per indirizzo.
Di seguito è riportato l'output di un semplice ping verso l'host di destinazione Paessler.com:
Tuttavia, l'utilità ping offre anche diverse opzioni personalizzabili.
Notifiche in tempo reale significano una risoluzione più rapida dei problemi, in modo da poter intervenire prima che si verifichino problemi più gravi.
Sono disponibili numerosi interruttori per il comando ping che consentono di personalizzare le impostazioni predefinite per scopi più specifici. Sfortunatamente, non c'è coerenza tra le varie piattaforme per quanto riguarda gli interruttori. Ad esempio, Windows utilizza un -n (numero) per impostare il numero di ping da inviare, mentre la maggior parte dei sistemi Unix utilizza un -c (conteggio).
Ecco alcuni esempi di interruttori del comando ping. In generale, utilizzando ping -? si ottiene un elenco di interruttori con la lettera corrispondente per utilizzare l'interruttore sul sistema operativo.
Numero (o conteggio) - imposta il numero di richieste di eco, o ping, da inviare. Per impostazione predefinita, questo numero è quattro sulla maggior parte dei sistemi Windows e cinque sulla maggior parte dei sistemi Unix. L'impostazione di un numero più alto consente di continuare a inviare il ping per raccogliere più dati, ad esempio per vedere se il tempo di risposta varia, oppure per assicurarsi che il sistema continui a rispondere.
Timeout - modifica il timeout prima che l'utilità attenda una risposta dalla destinazione. Nei sistemi Windows, il valore predefinito è 4.000 millisecondi, ovvero 4 secondi.
Dimensione - modifica la dimensione del pacchetto di ping. Il valore predefinito in Windows è di 32 byte, mentre in molti sistemi Unix/Linux è di 64 byte.
TTL - imposta un TTL diverso.
IP4 o IP6 - risponde con indirizzi IPv4 o IPv6. (ping -4/ping -6 in Windows, ping o ping6 in Linux)
Fino all'arresto - continua a eseguire il ping finché non viene interrotto dall'utente (-t in Windows)
Per essere un'utilità così piccola e basilare, il comando ping può essere uno strumento prezioso in numerose situazioni. Essendo un'utilità basata sulla riga di comando, ping si presta a essere facilmente utilizzato in vari script, consentendo l'esecuzione di numerosi ping e la loro registrazione per ogni tipo di utilizzo. Ad esempio, l'output del comando ping può essere facilmente trasferito in un file di testo per una successiva revisione.
Forse l'uso più comune dell'utilità ping è la risoluzione dei problemi. Quando si cerca di utilizzare applicazioni o sistemi in rete, la cosa più importante da sapere è se la connessione è effettivamente funzionante. Una serie di comandi ping può aiutare a determinare il problema.
Un rapido ping per indirizzo IPS confermerà che il sistema è acceso, che c'è una connessione e che le due macchine possono parlare tra loro.
Se il ping ha successo per nome e indirizzo IPS, ma i tempi di risposta sono lunghi, potrebbe esserci un problema di instradamento, di velocità della rete o di congestione. Anche i ping non riusciti possono fornire informazioni preziose per la risoluzione dei problemi.
Se il ping per indirizzo IPS ha esito positivo, ma il ping per nome fallisce, si tratta di un problema di risoluzione dei nomi. Se il ping fallisce del tutto, si può provare a eseguire il ping di altre parti della rete per isolare il problema. Un ping riuscito del gateway predefinito conferma che la connessione di rete funziona, ma che qualcosa sta interferendo con la connessione al sistema remoto.
Se si riesce a eseguire un ping con la stessa subnet del sistema remoto, ma non con il sistema di destinazione, la connettività di rete dell'host remoto è in dubbio. Se non è possibile eseguire il ping del gateway predefinito, ma l'indirizzo di loopback (127.0.0.1) ha esito positivo, allora si sa che l'interfaccia di rete funziona, ma non c'è connessione alla rete.
Se il ping non ottiene risposta dall'host di destinazione, la maggior parte delle implementazioni di ping non visualizza nulla o una notifica di timeout. Il risultato può apparire, ad esempio, come segue:
Il ping può essere utilizzato come strumento di ricerca rapido e sporco. Poiché praticamente qualsiasi dispositivo collegato alla rete risponde a un ping, il ping di un intervallo di indirizzi, ad esempio, consente all'amministratore di trovare tutti i dispositivi collegati in quell'intervallo, indipendentemente dal tipo di dispositivo o dal sistema operativo.
Il ping può essere utilizzato per monitorare la disponibilità di rete dei dispositivi. Un comando ping eseguito come attività schedulata può offrire un polling rudimentale di qualsiasi computer o dispositivo collegato in rete senza la necessità di installare agenti software aggiuntivi e senza la necessità di aprire porte aggiuntive. Il più elementare dei monitoraggi up/down può essere realizzato eseguendo un ping con l'opzione "run until stopped". Quando i ping iniziano a fallire, significa che c'è un problema che raggiunge il sistema.
Ovviamente, queste soluzioni sono notevolmente migliorate dall'aggiunta di uno strumento di monitoraggio come PRTG, che, pur utilizzando i comandi di ping sottostanti, non si affida a qualcuno che osservi l'output o che lo inserisca in qualche tipo di registrazione.
Il sensore di ping standard esegue i comandi di ping in background. Questi possono essere configurati per essere eseguiti a intervalli specifici o in risposta a un altro evento. Ad esempio, se un sensore segnala un'interruzione della connessione, un ping può determinare se c'è ancora una connessione di rete. Oppure, i monitoraggi possono essere configurati in modo da avvisare l'amministratore se i tempi di ping diventano troppo lunghi o se si verifica una perdita eccessiva di pacchetti.
Un altro interessante sensore basato sul cloud è il Cloud Ping Sensor, che esegue il ping dei sistemi monitorati da un cloud remoto di sistemi distribuiti. In questo modo si ottiene un avviso importante, ma difficile da rilevare, quando tutto funziona bene sul vostro lato, ma per qualsiasi motivo i vostri sistemi non sono raggiungibili dall'esterno da utenti o client remoti.
PRTG Network Monitor è un software di monitoraggio di rete completo e tiene traccia dell'intera infrastruttura IT.
Il semplice fatto di sapere che un sistema esiste ed è connesso alla rete può essere un'informazione sufficiente per un attaccante per iniziare. Un'attenta analisi delle risposte al ping può fornire ulteriori informazioni, come il sistema operativo in esecuzione, la posizione della macchina e così via.
Molti strumenti di hacking sfruttano il "walking the range", pingando ogni indirizzo IPS su una rete mirata per ottenere un elenco dei sistemi raggiungibili e in grado di rispondere. Di conseguenza, molti firewall sono configurati per bloccare le richieste di ping provenienti da reti non attendibili.