Come diagnosticare i problemi di rete su Linux con Traceroute

Come diagnosticare i problemi di rete su Linux con Traceroute
Traceroute Linux in primo piano

Traceroute è una semplice utility di rete in grado di tracciare il percorso seguito da un pacchetto Internet dall’origine all’host di destinazione. Questo articolo ti mostrerà come utilizzare Traceroute per verificare l’integrità della rete Linux e diagnosticare i problemi emergenti.

Come funziona Traceroute?

Traceroute funziona inviando pacchetti UDP con lunghezze TTL brevi a ogni gateway Internet lungo il percorso verso un host remoto. Queste brevi lunghezze TTL costringono quindi questi gateway a segnalare una risposta ICMP “TIME_EXCEEDED” insieme all’indirizzo IP della loro interfaccia.

Questi due fattori combinati consentono a traceroute di creare un elenco dettagliato di macchine che il tuo pacchetto attraverserà quando si connette a un server esterno. Ad esempio, l’esecuzione di un traceroute verso “google.com” nella mia rete elencherà dai 9 ai 10 gateway prima che raggiunga i server di Google.

Un terminale che mostra un traceroute di base per google.com.

Quali problemi di rete può risolvere Traceroute?

Traceroute è solo uno strumento di sondaggio della rete e non ottimizza né risolve eventuali problemi in sospeso nella tua rete. Traceroute può solo descrivere come si comportano le reti e i pacchetti che viaggiano su di esse.

Nonostante ciò, è ancora uno strumento importante per diagnosticare potenziali problemi di rete. Un buon esempio è quando un gateway locale non riesce a inoltrare un pacchetto all’hop successivo. Traceroute può risolvere questo problema evidenziando qualsiasi router all’interno della rete principale che non invia una risposta “TIME_EXCEEDED”.

Un terminale che mostra un traceroute di base in cui i gateway costantemente non riescono a rispondere al programma.

Oltre a ciò, puoi anche utilizzare traceroute per verificare la presenza di problemi di latenza tra host. Questo può essere utile se vuoi vedere se la tua rete locale necessita di una VPN per garantire una bassa latenza costante quando ti connetti a un computer remoto.

Utilizzo di Traceroute in Linux

Apri un nuovo terminale e digita traceroute seguito dall’indirizzo della macchina a cui desideri che la tua macchina si connetta. Potrebbe trattarsi di un nome di dominio o di un indirizzo IP. Ad esempio:

Premi Enter per iniziare a mappare il percorso verso il tuo host remoto.

Un terminale che mostra un traceroute di base verso un piccolo VPS.

Invio di pacchetti con TTL personalizzato in Traceroute

Sebbene l’utilizzo di traceroute da solo sia sufficiente per un utilizzo di base, puoi anche modificare il modo in cui funziona il programma utilizzando i flag. Questo può essere utile soprattutto se stai effettuando un triage della tua rete.

Una delle modifiche più comuni in traceroute è la modifica della quantità di pacchetti che invia a un gateway. Per fare ciò, utilizza il flag -q seguito dalla quantità di pacchetti che desideri inviare per richiesta:

Puoi anche utilizzare il flag -N seguito da “1” per disabilitare esplicitamente le richieste di pacchetti simultanee. Ciò è utile se disponi di gateway che limitano la velocità dei pacchetti UDP con TTL breve.

Un terminale che mostra un traceroute con pacchetti simultanei disabilitati.

Infine, puoi anche modificare il valore TTL predefinito per traceroute. Per fare ciò, aggiungi il flag -f seguito dal TTL che desideri per il tuo primo pacchetto di sondaggio.

Un terminale che mostra un traceroute in cui il programma salta i primi due gateway.

Modifica del protocollo Traceroute in Linux

Per impostazione predefinita, traceroute in Linux utilizza UDP per inviare pacchetti sonda ai gateway di rete. Questo può essere un problema se stai sondando un gateway che blocca attivamente i pacchetti traceroute.

Per risolvere questo problema, puoi utilizzare il flag -T per eseguire traceroute utilizzando semplici pacchetti TCP SYN.

Un terminale che mostra un traceroute in cui il programma utilizza il pacchetto TCP SYN anziché UDP.

D’altra parte, puoi anche forzare traceroute a utilizzare un pacchetto ICMP ECHO se il gateway di destinazione limita solo UDP:

Traceroute supporta anche interfacce di rete personalizzate. È qui che traceroute utilizzerà una scheda di rete diversa nel tuo computer per sondare il percorso di un pacchetto.

Per farlo, esegui il programma con il flag -i seguito dal nome del dispositivo della tua interfaccia.

Oltre a ciò, puoi utilizzare il flag -p per specificare il numero di porta iniziale che traceroute utilizzerà per il sondaggio UDP:

Infine, anche il flag -p cambia il suo comportamento a seconda del protocollo che stai utilizzando. L’abbinamento con -I imposterà il valore -p come numero di sequenza ICMP iniziale anziché come porta di destinazione.

Un terminale che mostra un traceroute utilizzando ICMP ECHO con un numero di sequenza ICMP personalizzato.

Imparare a utilizzare traceroute è solo il primo passo per comprendere come i computer comunicano tra loro su una rete. Scopri di più sulla rete di computer analizzando il contenuto di un pacchetto TCP utilizzando tcpdump.

Nel frattempo, puoi anche saperne di più sui livelli OSI più alti, come il DNS, utilizzando lo strumento dig in Linux.

Tutte le modifiche e gli screenshot di Ramces Red.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *