In questo post vedremo come usare comando Traceroute in Ubuntu per individuare colli di bottiglia, rallentamenti di un pacchetto di rete e risolvere i problemi di connessione di rete.
Ti mostreremo come fare!
Sommario
Cos’è Traceroute?
Traceroute è un comando che esegue gli strumenti utilizzati per la diagnostica di rete. Questi strumenti tracciano i percorsi dei pacchetti di dati dalla loro origine alle loro destinazioni, consentendo agli amministratori di risolvere meglio i problemi di connettività.
Su una macchina Windows, questo comando si chiama tracert; su Linux e Mac, si chiama traceroute.
Traceroute e tracert funzionano in gran parte allo stesso modo: mappano i dati del percorso da un punto di una rete a un server IP specifico. Quando i dati vengono trasmessi tra due punti, devono “saltare” attraverso diversi dispositivi, come switch e router.
Traceroute mappa ogni hop, fornisce i dettagli e il tempo di andata e ritorno (RTT) e, ove possibile, fornisce il nome e l’indirizzo IP del dispositivo.
Mentre ping può dirti se c’è un problema, traceroute può aiutarti a individuare dove si trova il problema. Per un esempio di come utilizzare traceroute, immagina di visitare un sito Web e il caricamento delle sue pagine richiede molto tempo. In questo caso, è possibile utilizzare traceroute per determinare dove si verificano i ritardi più lunghi per arrivare al percorso del problema.
Vediamo come usare Traceroute installandolo su Ubuntu.
Come usare comando Traceroute in Ubuntu
Segui i passaggi seguenti per installare rapidamente traceroute su Ubuntu. Puoi semplicemente seguire i passaggi da terminale della riga di comando utilizzando il gestore di pacchetti APT integrato.
sudo apt-get install traceroute
Una volta conclusa tale operazione è possibile usare comando traceroute passandogli come parametro l’host di destinazione (con o senza prefisso “www.” nel caso si tratti di un nome a dominio) per i package di dati inviati dall’applicazione:
sudo traceroute www.google.com
Dato che, traceroute lavora su UDP (User Datagram Protocol) a differenza di TRACERT, che opera su ICMP, è possibile che per alcune richieste il tracerouting restituisca unicamente degli asterischi. Per ovviare a questa problematica è possibile forzare il tracciamento tramite ICMP utilizzando l’opzione “-I”:
sudo traceroute -I www.google.com
Traceroute delinea il percorso che un pacchetto IP segue verso un host Internet lanciando pacchetti di sonda UDP con un piccolo TTL, quindi ascoltando una risposta ICMP “tempo superato” da un gateway. Avvia le sonde con un TTL di uno e aumenta di uno finché non ottieni una “porta irraggiungibile” ICMP (che significa che il pacchetto è arrivato a destinazione) o raggiungi un valore massimo di tentativi, che per impostazione predefinita è 30 hop e può essere modificato con il comando –m .
Quando traceroute viene eseguito, invia tre hop a ciascuna impostazione TTL e quindi stampa una riga sulla console che mostra il TTL, l’indirizzo del gateway e il tempo di andata e ritorno di ciascun hop. Se le risposte del hop provengono da gateway diversi, viene stampato l’indirizzo di ciascun sistema che risponde.
Se traceroute non riceve una risposta entro cinque secondi (modificato con il flag -w ), stampa un asterisco per quel hop.
Per evitare che l’elaborazione del pacchetto sonda UDP travolga l’host di destinazione, traceroute imposta la porta di destinazione su un valore che è improbabile che il dispositivo utilizzi. Se una rete o un servizio nella destinazione utilizza quella porta, modificare il valore utilizzando il flag -p .
Sintassi e opzioni di Traceroute
Oltre ad usare comando Traceroute occorre essere a conoscenza della sua sintassi:
traceroute [ -dFInrvx ] [ -f first_ttl ] [ -g gateway ] [ -i iface ] [ -m max_ttl ] [ -p port ] [ -q nqueries ] [ -s src_addr ] [ -t tos ] [ -w waittime ] [-z pausemsecs] host [packetlen]
È possibile modificare le prestazioni o l’output del comando specificando una o più opzioni facoltative.
Comandi Traceroute | |
---|---|
Comandi | Spiegazione |
-F | Imposta il tempo di vita iniziale utilizzato nel primo pacchetto sonda in uscita. |
-F | Imposta il bit “non frammentare”. |
-D | Abilita il debug a livello di socket. |
-G | Specificare un gateway di route di origine libero (massimo 8). |
-io | Specificare un’interfaccia di rete per ottenere l’indirizzo IP di origine per i pacchetti probe in uscita. Questo è normalmente utile solo su un host multi-homed. (Vedi il flag -s per un altro modo per farlo.) |
-IO | Usa ICMP ECHO invece di datagrammi UDP . |
-m | Imposta il tempo massimo di vita (numero massimo di hop) utilizzato nei pacchetti sonda in uscita. Il valore predefinito è 30 hop (lo stesso predefinito utilizzato per le connessioni TCP). |
-n | Print hop indirizzi numericamente piuttosto che simbolicamente e numericamente (salva una ricerca da indirizzo a nome del server dei nomi per ogni gateway trovato sul percorso). |
-P | Imposta il numero di porta UDP di base utilizzato nelle sonde (il valore predefinito è 33434). Traceroute spera che nulla sia in ascolto sulle porte UDP da base a base + nhops – 1 sull’host di destinazione (quindi verrà restituito un messaggio ICMP PORT_UNREACHABLE per terminare la traccia del percorso). Se qualcosa è in ascolto su una porta nell’intervallo predefinito, questa opzione può essere utilizzata per selezionare un intervallo di porte inutilizzato. |
-R | Ignora le normali tabelle di routing e invia direttamente a un host su una rete collegata. Se l’host non è su una rete direttamente collegata, viene restituito un errore. Questa opzione può essere utilizzata per eseguire il ping di un host locale attraverso un’interfaccia che non ha un percorso attraverso di essa (ad esempio, dopo che l’interfaccia è stata eliminata da routed (8C)). |
-S | Utilizzare il seguente indirizzo IP (che di solito viene fornito come numero IP, non come nome host) come indirizzo di origine nei pacchetti sonda in uscita. Su host multi-homed (quelli con più di un indirizzo IP), questa opzione può essere utilizzata per forzare l’indirizzo di origine ad essere qualcosa di diverso dall’indirizzo IP dell’interfaccia su cui viene inviato il pacchetto probe. Se l’indirizzo IP non è uno degli indirizzi di interfaccia di questa macchina, viene restituito un errore e non viene inviato nulla. (Vedi il flag -i per un altro modo per farlo.) |
-T | Imposta il tipo di servizio nei pacchetti probe sul valore seguente (predefinito zero). Il valore deve essere un numero intero decimale nell’intervallo da 0 a 255. Questa opzione può essere utilizzata per vedere se diversi tipi di servizio determinano percorsi diversi. (Se non stai eseguendo 4.4bsd, questo potrebbe essere accademico, poiché i normali servizi di rete come telnet e ftp non ti consentono di controllare il TOS.) Non tutti i valori di TOS sono legali o significativi: vedi le specifiche IP per le definizioni. I valori utili sono probabilmente ` -t 16 ‘ (basso ritardo) e ` -t 8 ‘ (alta velocità di trasmissione). |
-v | Uscita dettagliata. Sono elencati i pacchetti ICMP ricevuti diversi da TIME_EXCEEDED e UNREACHABLE. |
-w | Impostare il tempo (in secondi) di attesa di una risposta ad una sonda (default 5 sec.). |
-X | Attiva/disattiva i checksum IP . Normalmente, questo impedisce a traceroute di calcolare i checksum IP. In alcuni casi, il sistema operativo può sovrascrivere parti del pacchetto in uscita ma non ricalcolare il checksum; quindi, in alcuni casi l’impostazione predefinita è non calcolare i checksum e l’uso di -x fa sì che vengano calcolati. Si noti che i checksum sono generalmente richiesti per l’ultimo hop quando si utilizzano sonde ECHO ICMP ( -I ), quindi vengono sempre calcolati quando si utilizza ICMP. |
-z | Imposta il tempo (in millisecondi) per la pausa tra le sonde (default 0). Alcuni sistemi come Solaris e router di Cisco, inviano messaggi icmp con limite di velocità. Un buon valore da utilizzare con questo è 500 (ad esempio, 1/2 secondo). |
Conclusione
Abbiamo visto come usare comando Traceroute e i suoi comandi base. L’unico vero modo per imparare la sua logica é utilizzarlo.
Se hai difficolta nell’ usare comando Traceroute scrivimi nei commenti.