Comando traceroute: installazione, uso e opzioni -n, -I, -T

Ambiente di testFamiglia RHELAlmaLinux 9.8account rootDebian 12 · traceroute 2.1.2 account normaleVerificato il 2026-10-29
Comandi di retetraceroute

Per controllare hop per hop i router attraversati dai pacchetti fino alla destinazione, usa il comando traceroute. Sul server AlmaLinux 9.8 traceroute non era installato, quindi l'abbiamo installato con dnf, e tracciando il percorso verso example.com da un server Debian 12 con traceroute 2.1.2 la destinazione è stata raggiunta al settimo hop.

L'output seguente proviene dal server Debian 12, eseguito con un account normale, e solo l'output di rpm e dnf del capitolo sull'installazione viene dal server AlmaLinux 9.8 (account root). Il nome host del server è stato cambiato in server1, e gli indirizzi di router e destinazioni nei percorsi sono stati sostituiti con indirizzi di esempio (192.0.2.x, 198.51.100.x, 203.0.113.x). Anche il numero di release del pacchetto installato (la versione principale 2.1 non cambia) e l'orario dei metadati di dnf sono valori di esempio, mentre i tempi di risposta sono quelli misurati.

1️⃣ Installare traceroute

  • ↪️ dnf nella famiglia RHEL, apt nella famiglia Debian

L'installazione predefinita di traceroute dipende dalla distribuzione. Sul server AlmaLinux 9.8 l'esecuzione ha restituito [traceroute: command not found], e anche la ricerca con rpm non ha trovato alcun pacchetto installato.

rpm -q traceroute
package traceroute is not installed

Nella famiglia RHEL si installa con dnf. Un'anteprima con [--assumeno] ha mostrato un solo pacchetto da installare, traceroute dal repository baseos, senza altri pacchetti.

dnf install --assumeno traceroute
Last metadata expiration check: 0:05:00 ago on Thu Oct 29 09:00:00 2026.
Dependencies resolved.
================================================================================
 Package            Architecture   Version                 Repository      Size
================================================================================
Installing:
 traceroute         x86_64         3:2.1.0-9.el9           baseos          56 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 56 k
Installed size: 107 k
Operation aborted.

La dimensione del download era di 56k e quella dopo l'installazione di 107k. [--assumeno] risponde no a tutte le domande, quindi non installa nulla e termina con [Operation aborted.] (secondo la documentazione ufficiale di dnf).

L'installazione vera e propria è stata fatta con [dnf install traceroute], senza [--assumeno].

dnf install traceroute
Last metadata expiration check: 0:20:00 ago on Thu Oct 29 09:00:00 2026.
Dependencies resolved.
================================================================================
 Package            Architecture   Version                 Repository      Size
================================================================================
Installing:
 traceroute         x86_64         3:2.1.0-9.el9           baseos          56 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 56 k
Installed size: 107 k
Downloading Packages:
traceroute-2.1.0-9.el9.x86_64.rpm               3.6 MB/s |  56 kB     00:00    
--------------------------------------------------------------------------------
Total                                            97 kB/s |  56 kB     00:00     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1 
  Installing       : traceroute-3:2.1.0-9.el9.x86_64                        1/1 
  Running scriptlet: traceroute-3:2.1.0-9.el9.x86_64                        1/1 
  Verifying        : traceroute-3:2.1.0-9.el9.x86_64                        1/1 

Installed:
  traceroute-3:2.1.0-9.el9.x86_64                                               

Complete!

Sotto [Installed:] è comparso solo il pacchetto traceroute, e l'installazione è terminata con [Complete!] senza pacchetti di dipendenza.

Dopo l'installazione abbiamo controllato la versione con [traceroute --version].

traceroute --version
Modern traceroute for Linux, version 2.1.0
Copyright (c) 2016  Dmitry Butskoy,   License: GPL v2 or any later

Il percorso dell'eseguibile trovato con [command -v traceroute] era [/usr/bin/traceroute].

Nella famiglia Debian, installa il pacchetto traceroute dal repository della distribuzione con [apt install traceroute] (secondo le informazioni ufficiali sui pacchetti Debian). Controlla la versione installata con --version.

traceroute --version
Modern traceroute for Linux, version 2.1.2
Copyright (c) 2016  Dmitry Butskoy,   License: GPL v2 or any later

Sul server Debian 12 il pacchetto traceroute era già installato, e la versione è comparsa come [Modern traceroute for Linux] 2.1.2.

2️⃣ Come usare il comando traceroute

  • ↪️ Forma di base e lettura delle righe di output

traceroute riceve un nome o un indirizzo IP di destinazione e invia pacchetti con un TTL che parte da 1 e aumenta di uno alla volta. Un pacchetto con TTL 1 scade al primo router, uno con TTL 2 al secondo. Dalle risposte [time exceeded] restituite da quei router, traceroute stampa l'indirizzo e il tempo di andata e ritorno di ogni hop (secondo il manuale ufficiale).

Quando un pacchetto raggiunge la destinazione, questa risponde con [port unreachable] e la traccia termina a quell'hop; altrimenti continua fino al numero massimo di hop. Secondo il manuale ufficiale vengono inviati tre pacchetti per hop, quindi ogni riga mostra tre tempi, e per impostazione predefinita si controllano fino a 30 hop.

Per example.com abbiamo stampato solo gli indirizzi con -n e controllato solo fino al decimo hop con -m 10.

traceroute -n -m 10 example.com
traceroute to example.com (203.0.113.154), 10 hops max, 60 byte packets
 1  192.0.2.1  0.110 ms  0.083 ms  0.067 ms
 2  192.0.2.2  0.348 ms  0.273 ms  0.263 ms
 3  198.51.100.77  0.426 ms  0.337 ms 198.51.100.13  1.251 ms
 4  198.51.100.49  0.968 ms  1.264 ms 198.51.100.53  1.148 ms
 5  * * *
 6  203.0.113.19  1.631 ms 203.0.113.25  2.549 ms 203.0.113.14  1.543 ms
 7  203.0.113.154  1.544 ms  1.656 ms  1.607 ms

La prima riga ha mostrato il nome di destinazione, l'indirizzo realmente usato, il numero massimo di hop e la dimensione del pacchetto di 60 byte. L'indirizzo di destinazione ha risposto al settimo hop, quindi la traccia è terminata senza arrivare al decimo, e l'intera esecuzione ha richiesto meno di un secondo.

OutputSignificato
traceroute to example.com (203.0.113.154)Nome di destinazione e indirizzo risolto a cui i pacchetti sono stati realmente inviati
10 hops maxNumero massimo di hop controllati — si imposta con -m, predefinito 30
60 byte packetsDimensione dei pacchetti inviati — 60 byte predefiniti per IPv4, 80 byte per IPv6 (secondo il manuale ufficiale)
1Numero di hop — il valore TTL impostato su quel pacchetto
192.0.2.1Indirizzo del router che ha risposto a quell'hop
0.110 ms 0.083 ms 0.067 msTempi di andata e ritorno dei tre pacchetti inviati a un hop
198.51.100.77 … 198.51.100.13Riga con due indirizzi perché router diversi hanno risposto a pacchetti diversi nello stesso hop
* * *Nessuno dei tre pacchetti ha ricevuto risposta in tempo — ogni asterisco è un pacchetto
!H · !N · !P · !XSimbolo di irraggiungibilità dopo il tempo — host, rete o protocollo irraggiungibile, vietato dall'amministratore (secondo il manuale ufficiale)

Il terzo e il quarto hop hanno mostrato due indirizzi su una riga, il sesto hop tre. Quando router diversi rispondono ai tre pacchetti inviati a un hop, traceroute stampa di seguito tutti gli indirizzi che hanno risposto, come descrive il manuale ufficiale.

Senza -n, traceroute converte gli indirizzi che rispondono in nomi host.

traceroute localhost
traceroute to localhost (127.0.0.1), 30 hops max, 60 byte packets
 1  server1 (127.0.0.1)  0.068 ms  0.048 ms  0.028 ms

Eseguendolo su localhost, la colonna dell'hop ha mostrato il nome host del server Debian 12, con l'indirizzo 127.0.0.1 tra parentesi.

3️⃣ Opzioni di traceroute

  • ↪️ -n, -q, -m e i metodi di invio -I, -T

Il --help di traceroute 2.1.2 elenca 34 opzioni. Tra queste abbiamo provato con un account normale sul server Debian 12 -n, -q e -m, che cambiano l'output, e -I e -T, che cambiano i pacchetti inviati.

[traceroute -n] stampa solo gli indirizzi IP, senza convertirli in nomi host. Con -n sullo stesso localhost, nella colonna dell'hop è rimasto solo 127.0.0.1.

traceroute -n localhost
traceroute to localhost (127.0.0.1), 30 hops max, 60 byte packets
 1  127.0.0.1  0.073 ms  0.075 ms  0.025 ms

-q imposta il numero di pacchetti inviati per hop, e il valore predefinito è 3. Con -q 1 è comparso un solo tempo, con -q 5 ne sono comparsi cinque.

traceroute -q 1 -n 127.0.0.1
traceroute to 127.0.0.1 (127.0.0.1), 30 hops max, 60 byte packets
 1  127.0.0.1  0.096 ms
traceroute -q 5 -n 127.0.0.1
traceroute to 127.0.0.1 (127.0.0.1), 30 hops max, 60 byte packets
 1  127.0.0.1  0.083 ms  0.028 ms  0.024 ms  0.022 ms  0.022 ms

-m cambia il numero massimo di hop controllati. Il valore 256 è stato rifiutato con [max hops cannot be more than 255].

traceroute -m 256 -n 127.0.0.1
max hops cannot be more than 255

Per impostazione predefinita i pacchetti vengono inviati via UDP. -I li invia come ICMP ECHO, -T come TCP SYN (porta 80 predefinita). Queste due opzioni servono a ricontrollare con un altro tipo di pacchetto un percorso che filtra UDP. Con un account normale, entrambe le opzioni hanno lasciato un messaggio di permessi insufficienti e sono terminate con il codice di uscita 1.

traceroute -I -n 127.0.0.1
You do not have enough privileges to use this traceroute method.
socket: Operation not permitted
traceroute -T -n 127.0.0.1
You do not have enough privileges to use this traceroute method.
socket: Operation not permitted

Il manuale ufficiale indica il metodo predefinito e -U (porta di destinazione 53 fissa) come i metodi consentiti agli account normali. -I funziona con un account normale solo se l'impostazione del kernel ping_group_range consente il gruppo di quell'account.

cat /proc/sys/net/ipv4/ping_group_range
1	0

Il valore del server Debian 12 era [1 0], che secondo la documentazione del kernel Linux non consente alcun gruppo. -T non rientra tra i metodi consentiti agli account normali indipendentemente da questa impostazione, quindi esegui queste due opzioni da un account con permessi root.

📌 Opzioni principali: risultati di questo articolo

OpzioneCompitoRisultato in questo articolo
-nStampa solo gli indirizzi IP, senza convertirli in nomi hostSu localhost, nella colonna dell'hop è rimasto solo 127.0.0.1
-qImposta il numero di pacchetti inviati per hop (predefinito 3)-q 1 mostra un tempo, -q 5 ne mostra cinque
-mImposta il numero massimo di hop controllati (predefinito 30)Con -m 10, example.com è terminato al settimo hop; -m 256 è stato rifiutato con [max hops cannot be more than 255]
-IInvia i pacchetti come ICMP ECHOMessaggio di permessi insufficienti e codice di uscita 1 con un account normale
-TInvia i pacchetti come TCP SYN (porta 80 predefinita)Messaggio di permessi insufficienti e codice di uscita 1 con un account normale
-UInvia via UDP con la porta di destinazione fissa a 53example.com ha mostrato * * * dal settimo al decimo hop, e l'indirizzo di destinazione non è comparso

📎 Altre opzioni: secondo il manuale ufficiale

OpzioneCompito
-wImposta il tempo massimo di attesa di una risposta (predefinito 5 secondi)
-pImposta la porta (porta iniziale per UDP, porta di destinazione fissa per TCP, numero di sequenza iniziale per ICMP)
-fImposta il TTL iniziale (predefinito 1)
-NImposta il numero di pacchetti inviati contemporaneamente (predefinito 16; riducilo con i router che limitano la velocità di risposta)
-sCambia l'indirizzo di origine con un altro indirizzo di interfaccia del server
-iImposta l'interfaccia di rete da cui escono i pacchetti (per impostazione predefinita segue la tabella di routing)
-4Invia solo via IPv4 (IPv4 è il predefinito se un nome restituisce indirizzi IPv4 e IPv6)
-6Invia solo via IPv6

🔲 Simulatore del comando traceroute

Nel simulatore qui sotto puoi accorciare il percorso di example.com con -m, oppure provare su 127.0.0.1 e localhost -n, -q, -f (hop iniziale) e le opzioni -I e -T, che richiedono permessi.

Simulatore del comando traceroutetraceroute 2.1.2
[root@server work]#
Funziona solo nel tuo browser e non invia pacchetti reali. Con ↑↓ richiami i comandi precedenti.

4️⃣ Hop senza risposta in traceroute

  • ↪️ Righe * * * e firewall

Anche se puoi cambiare il metodo di invio, un hop che non risponde resta [* * *]. Secondo il manuale ufficiale, ogni asterisco è un pacchetto senza risposta in tempo, e l'attesa è al massimo di 5 secondi.

Vedendo * * * su un hop intermedio è facile pensare che il percorso si interrompa lì. Sul percorso verso example.com inviato con il metodo predefinito, solo il quinto hop era * * *, ma i pacchetti hanno superato quell'hop, sono passati dal sesto e hanno raggiunto la destinazione al settimo.

-U invia con la porta di destinazione fissa a 53. Inviando pacchetti allo stesso example.com con -U, il router prima della destinazione ha risposto al sesto hop, poi * * * è continuato dal settimo al decimo hop e l'indirizzo di destinazione non è comparso.

traceroute -U -n -m 10 example.com
traceroute to example.com (203.0.113.154), 10 hops max, 60 byte packets
 1  192.0.2.1  0.176 ms  0.096 ms  0.661 ms
 2  * * *
 3  198.51.100.13  0.622 ms  0.586 ms  0.562 ms
 4  198.51.100.49  0.898 ms  1.314 ms 198.51.100.53  1.159 ms
 5  * * *
 6  203.0.113.9  3.773 ms 203.0.113.27  3.275 ms 203.0.113.14  8.973 ms
 7  * * *
 8  * * *
 9  * * *
10  * * *

Il manuale ufficiale spiega che con -U il programma sul lato di destinazione di solito non risponde, quindi l'ultimo hop non si vede. Anche su un percorso in cui un firewall filtra le porte UDP di traceroute o ICMP ECHO, da dietro quel firewall non arrivano risposte e continua solo * * *.

Dove compare * * *Come leggerloRicontrolla
Un singolo hop intermedioNessuna risposta da quell'hop — se gli hop successivi rispondono, i pacchetti l'hanno superatoLascialo così e leggi gli hop successivi
Prima della destinazione, fino a -mLa destinazione o un firewall davanti a essa filtra quel pacchetto o quella porta (secondo il manuale ufficiale)Metodo predefinito / -T (root) / [-T -p porta]
Hop che cambiano a ogni esecuzioneSe un router limita la velocità di risposta ICMP, alcune risposte possono mancare (secondo il manuale ufficiale)[-N 1] · [-w 5]

Se si è fermato prima della destinazione, cambia il metodo di invio e ricontrolla. Il manuale ufficiale presenta -T come un metodo pensato per attraversare i firewall. Per una destinazione con una porta chiaramente aperta, come un server di posta, spiega che indicare quella porta come in [-T -p 25] può arrivare anche quando -I non arriva.

L'* di un hop intermedio può cambiare anche in base al metodo di invio o all'esecuzione. Il secondo hop ha risposto con il metodo predefinito, ma con -U è comparso come * * *. Il manuale ufficiale dice che alcune risposte possono mancare se un router limita la velocità di risposta ICMP, e consiglia di ridurre i pacchetti inviati contemporaneamente con [-N 1]. traceroute riduce anche l'attesa in base ai tempi di risposta già ricevuti; se per questo l'* compare troppo presto, indica un solo tempo di attesa come in [-w 5] per disattivare quel calcolo (secondo il manuale ufficiale).

5️⃣ tracepath al posto di traceroute

  • ↪️ Sui server dove installare è difficile

Su un server dove non puoi installare pacchetti, controlla lo stesso percorso con il comando tracepath. Il server AlmaLinux 9.8 non aveva traceroute, ma aveva tracepath, come iputils 20210202. Il server Debian 12, invece, non aveva tracepath. Secondo il manuale ufficiale di tracepath, si esegue senza permessi root, ma ha meno opzioni e invia solo UDP. Perciò, quando devi cambiare il metodo di invio con -I o -T, o inviare più pacchetti per hop con -q per confrontarli, installa e usa traceroute.

🔢 FAQ & contenuti consigliati

No, il codice di uscita non lo dice. Era 0 sia quando il metodo predefinito ha raggiunto example.com al settimo hop, sia quando -U non era ancora arrivato al decimo hop. Opzioni errate, valori di -m fuori intervallo e risoluzioni dei nomi fallite sono terminati con 2, mentre -I e -T con un account normale con 1. Il codice di uscita distingue solo gli errori di esecuzione: per sapere se la destinazione è stata raggiunta, controlla se l'ultima riga mostra l'indirizzo di destinazione.

Secondo la documentazione Microsoft, tracert di Windows invia ICMP Echo Request aumentando il TTL, mentre traceroute di Linux invia per impostazione predefinita pacchetti UDP (secondo il manuale ufficiale). Per controllare su Linux con lo stesso metodo ICMP di tracert, aggiungi -I.

Se imposti il primo TTL con -f, l'output parte da quell'hop. Secondo il manuale ufficiale il valore predefinito è 1, e -f 2 su 127.0.0.1 ha fatto partire i numeri di hop da 2. Quando l'hop massimo è inferiore a quello iniziale, come con -m 0, il comando è stato rifiutato con [first hop out of range].

ℹ️ Informativa sull'affiliazione
I contenuti di questo sito includono link di affiliazione. Se un visitatore acquista un prodotto o un servizio tramite uno di questi link, il sito riceve una commissione dal venditore. In questo processo l'importo pagato dall'acquirente (durante le promozioni l'importo scende↓) non aumenta. Prezzi, sconti e disponibilità indicati si riferiscono al momento della stesura e possono differire da quelli reali: prima di acquistare verifica sempre presso il venditore. I prodotti vengono scelti e valutati secondo criteri propri, e le commissioni non influiscono sull'ordine di presentazione né sul contenuto delle valutazioni.

Lascia un commento

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

Dimostra di essere umano: 8   +   1   =