Comando tracepath: verificare hop e MTU del percorso al posto di traceroute
Su un server Linux, il comando tracepath permette di verificare senza privilegi di root il percorso (hop) che i pacchetti seguono fino a una destinazione e la MTU del percorso. Su un server AlmaLinux 9 senza traceroute installato abbiamo limitato il numero di hop a 10 e verificato il percorso fino a example.com: fino al quarto hop si leggevano i tempi di risposta e una MTU di percorso di 1500, mentre i sei hop successivi non hanno risposto.
L'output qui sotto proviene da un server AlmaLinux 9.8 (account root), mentre la versione di traceroute e lo stato del pacchetto sono stati verificati su un server Debian 12 (account normale). Gli indirizzi IPv6 del primo hop e dei router intermedi sono stati sostituiti con indirizzi di esempio per la documentazione, mentre tempi di risposta e valori pmtu sono rimasti invariati.
1️⃣ Come usare il comando tracepath
tracepath riceve un nome o un indirizzo IP di destinazione, invia pacchetti UDP e stampa gli hop che rispondono, una riga per hop in ordine di TTL. Il numero massimo di hop predefinito è 30 e si cambia con -m.
Per example.com abbiamo aggiunto -m 10 per verificare solo fino al decimo hop.
tracepath -n -m 10 example.com 1?: [LOCALHOST] 0.006ms pmtu 9001
1: fe80::1%eth0 0.077ms pmtu 1500
1: 2001:db8:a::5b 2.627ms asymm 8
2: 2001:db8:a::52 1.473ms asymm 12
3: 2001:db8:b::1e 19.653ms asymm 9
4: 2001:db8:c:: 3.642ms asymm 11
5: no reply
6: no reply
7: no reply
8: no reply
9: no reply
10: no reply
Too many hops: pmtu 1500
Resume: pmtu 1500 Questo server ha inviato i pacchetti all'indirizzo IPv6 di example.com, e fino al quarto hop sono comparsi i tempi di risposta. Dal quinto hop in poi è continuato no reply, quindi la riga reached, che indica che la destinazione è stata raggiunta entro dieci hop, non è comparsa e l'esecuzione ha impiegato circa 18 secondi.
Lanciato verso la stessa destinazione senza -m, il comando non è terminato entro 30 secondi. Per percorsi con molti hop che non rispondono, si riduce con -m il numero di hop da verificare.
La versione di tracepath installata si verifica con -V; su questo server tracepath era iputils 20210202.
tracepath -Vtracepath from iputils 202102022️⃣ Leggere l'output di tracepath
Ogni riga dell'output mostra nell'ordine il numero di hop, l'indirizzo che ha risposto e il tempo di andata e ritorno. Dove la MTU del percorso cambia compare pmtu, e se andata e ritorno hanno un numero di hop diverso compare asymm. Ecco cosa verificare in ogni riga.
| Output | Significato |
|---|---|
| 1?: | Campo del numero di hop: un ? compare sul numero stimato quando la risposta non ha fornito il TTL |
| [LOCALHOST] | Riga del server stesso, prima che il pacchetto esca sulla rete |
| 0.077ms | Tempo di andata e ritorno fino a quell'hop |
| pmtu 1500 | MTU del percorso (byte) cambiata in quel punto: compare solo quando cambia |
| asymm 8 | Differenza di hop tra andata e ritorno: il manuale ufficiale dice che non è un valore affidabile |
| no reply | Hop che non ha risposto al pacchetto inviato con quel TTL |
| reached | Riga in cui la destinazione è stata raggiunta |
| Too many hops | Si ferma dopo aver verificato fino al numero di hop impostato con -m |
| Resume: pmtu … hops … back … | MTU dell'intero percorso, hop fino alla destinazione e stima degli hop di ritorno |
Nell'output di example.com la pmtu della prima riga [LOCALHOST] era 9001 ed è diventata 1500 al primo hop. Anche la riga TTL 1 che compare due volte cambiando solo l'indirizzo corrisponde all'esempio del manuale ufficiale. Il manuale spiega che, se il primo pacchetto viene rifiutato al primo hop per la MTU del percorso, la stessa riga TTL compare un'altra volta.
Quando la destinazione viene raggiunta, alla fine della riga compare reached e l'ultima riga Resume mostra il numero di hop fino alla destinazione. Inviando a 127.0.0.1, reached è comparso dopo un solo hop e la riga Resume era [pmtu 65535 hops 1 back 1].
tracepath -n 127.0.0.1 1: 127.0.0.1 0.047ms reached
Resume: pmtu 65535 hops 1 back 1 Un percorso che termina con Too many hops senza reached non ha ricevuto risposta dalla destinazione entro gli hop impostati con -m. Anche il percorso verso example.com non ha avuto reached entro dieci hop, quindi nella riga Resume è rimasta solo la pmtu, senza numero di hop.
3️⃣ Opzioni di tracepath
tracepath ha solo otto opzioni: -4, -6, -n, -b, -l, -m, -p e -V, e lanciato senza destinazione mostra questo elenco come istruzioni d'uso. Senza opzioni risolve in nomi gli indirizzi che rispondono; inviando a localhost, nel campo dell'hop è comparso localhost.
tracepath localhost 1?: [LOCALHOST] 0.003ms pmtu 65536
1: localhost 0.048ms reached
1: localhost 0.030ms reached
Resume: pmtu 65536 hops 1 back 1 [tracepath -n] stampa solo indirizzi IP senza risolvere i nomi. Aggiungendo -n per lo stesso localhost, il campo dell'hop è diventato l'indirizzo IPv6 ::1, e anche il percorso verso example.com lanciato con -n ha mostrato solo indirizzi in quel campo.
tracepath -n localhost 1?: [LOCALHOST] 0.005ms pmtu 65536
1: ::1 0.039ms reached
1: ::1 0.010ms reached
Resume: pmtu 65536 hops 1 back 1 -b stampa insieme nome e indirizzo. Aggiungendo -b per 127.0.0.1, l'indirizzo è comparso tra parentesi dopo il nome: [localhost (127.0.0.1)].
tracepath -b 127.0.0.1 1: localhost (127.0.0.1) 0.050ms reached
Resume: pmtu 65535 hops 1 back 1 -m è l'opzione che imposta il numero massimo di hop da verificare e accettava valori da 0 a 255. Con -m 0 sono comparse subito solo le righe Too many hops e Resume, senza righe di hop, e 256 è stato rifiutato con [out of range].
tracepath -m 0 127.0.0.1 Too many hops: pmtu 65535
Resume: pmtu 65535 -l è la lunghezza del primo pacchetto inviato; il valore predefinito è 65535 byte per IPv4 e 128000 byte per IPv6. Aggiungendo -l 1500 per 127.0.0.1, la pmtu della riga Resume è passata da 65535 a 1500.
tracepath -l 1500 -n 127.0.0.1 1: 127.0.0.1 0.028ms reached
Resume: pmtu 1500 hops 1 back 1 -p è l'opzione che imposta la prima porta UDP di destinazione. Il risultato con -p 33434 per 127.0.0.1 era lo stesso di quello senza.
| Opzione | Copia | Descrizione |
|---|---|---|
| -n | Stampa solo indirizzi IP senza risolvere i nomi | |
| -b | Stampa insieme nome e indirizzo | |
| -mhop | Imposta il numero massimo di hop da verificare, predefinito 30 | |
| -llunghezza | Imposta la lunghezza del primo pacchetto, predefinito IPv4 65535, IPv6 128000 | |
| -V | Stampa la versione ed esce |
| Opzione | Copia | Descrizione |
|---|---|---|
| -4 | Invia solo a indirizzi IPv4 | |
| -6 | Invia solo a indirizzi IPv6 | |
| -pPorta | Imposta la prima porta UDP di destinazione |
4️⃣ Differenze tra tracepath e traceroute
Sui server dove traceroute non si può installare, il percorso si verifica con tracepath al posto di traceroute. Il server AlmaLinux 9.8 verificato non aveva il pacchetto traceroute, mentre tracepath fa parte del pacchetto iputils ed è partito senza installazioni aggiuntive.
rpm -q traceroutepackage traceroute is not installedIl server Debian 12 era l'opposto: traceroute 2.1.2 era installato, mentre il pacchetto iputils-tracepath, che contiene tracepath, non lo era.
traceroute --versionModern traceroute for Linux, version 2.1.2
Copyright (c) 2016 Dmitry Butskoy, License: GPL v2 or any laterapt-cache policy iputils-tracepathiputils-tracepath:
Installed: (none)
Candidate: 3:20221126-1+deb12u1Come mostrano questi due server, i comandi presenti cambiano in base alla distribuzione, quindi verifica prima quale esiste sul server a cui sei collegato. tracepath non richiede privilegi di root e funziona con qualsiasi account in grado di inviare pacchetti UDP. Anche l'eseguibile di tracepath sul server AlmaLinux 9.8 aveva permessi rwxr-xr-x, senza capability aggiuntive.
| Voce | tracepath | traceroute |
|---|---|---|
| Server AlmaLinux 9.8 | Incluso nel pacchetto iputils, si avvia subito | Non installato |
| Server Debian 12 | Pacchetto iputils-tracepath non installato | traceroute 2.1.2 installato |
| Pacchetti inviati | UDP | UDP predefinito, -I per ICMP, -T per TCP |
| Output per hop | Una riga | Tre invii predefiniti, tre tempi (si cambia con -q) |
| Numero di opzioni | Otto: -4 -6 -n -b -l -m -p -V | Oltre 20 solo nella prima schermata di --help |
Se devi vedere il percorso con ICMP o TCP, oppure inviare più volte per hop per confrontare i tempi, dovrai installare e usare il comando traceroute. Sui server dove installarlo è difficile o dove serve vedere anche la MTU del percorso, tracepath è la scelta giusta.
🔲 Simulatore del comando tracepath
Nel simulatore qui sotto puoi rivedere il percorso verso example.com cambiando solo il numero di hop, oppure inserire tu stesso -n, -b, -m e -l per localhost e 127.0.0.1 e confrontare le differenze.
🔢 FAQ & contenuti consigliati
Firewall
Installare FirewallD su Linux e configurare il demone
Installazione e impostazioni del demone di FirewallD, che gestisce le regole del firewall con zone e servizi.
Rete · Configurazione
Comandi netstat e ifconfig di Linux
I comandi netstat e ifconfig, che mostrano porte aperte, stati delle connessioni e informazioni sulle interfacce di rete.
Rete · DNS
comando nslookup
Il comando nslookup, che chiede a un server DNS in quale indirizzo IP si risolve un nome di dominio.
ℹ️ 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.