Comando tracepath: verificare hop e MTU del percorso al posto di traceroute

Ambiente di testFamiglia RHELAlmaLinux 9.8iputils 20210202account rootDebian 12 · traceroute 2.1.2 account normale
Comandi di retetracepathPosizione/usr/bin/tracepath

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

  • ↪️ Verificare gli hop e la MTU del percorso fino alla destinazione

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 -V
tracepath from iputils 20210202

2️⃣ Leggere l'output di tracepath

  • ↪️ Numero di hop, pmtu, asymm, reached

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.

OutputSignificato
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.077msTempo di andata e ritorno fino a quell'hop
pmtu 1500MTU del percorso (byte) cambiata in quel punto: compare solo quando cambia
asymm 8Differenza di hop tra andata e ritorno: il manuale ufficiale dice che non è un valore affidabile
no replyHop che non ha risposto al pacchetto inviato con quel TTL
reachedRiga in cui la destinazione è stata raggiunta
Too many hopsSi 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

  • ↪️ -n, -b, -m e lunghezza del pacchetto -l

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.

OpzioneCopiaDescrizione
-nStampa solo indirizzi IP senza risolvere i nomi
-bStampa insieme nome e indirizzo
-mhopImposta il numero massimo di hop da verificare, predefinito 30
-llunghezzaImposta la lunghezza del primo pacchetto, predefinito IPv4 65535, IPv6 128000
-VStampa la versione ed esce
OpzioneCopiaDescrizione
-4Invia solo a indirizzi IPv4
-6Invia solo a indirizzi IPv6
-pPortaImposta la prima porta UDP di destinazione

4️⃣ Differenze tra tracepath e traceroute

  • ↪️ Installazione, permessi, pacchetti inviati

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 traceroute
package traceroute is not installed

Il server Debian 12 era l'opposto: traceroute 2.1.2 era installato, mentre il pacchetto iputils-tracepath, che contiene tracepath, non lo era.

traceroute --version
Modern traceroute for Linux, version 2.1.2
Copyright (c) 2016  Dmitry Butskoy,   License: GPL v2 or any later
apt-cache policy iputils-tracepath
iputils-tracepath:
  Installed: (none)
  Candidate: 3:20221126-1+deb12u1

Come 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.

Vocetracepathtraceroute
Server AlmaLinux 9.8Incluso nel pacchetto iputils, si avvia subitoNon installato
Server Debian 12Pacchetto iputils-tracepath non installatotraceroute 2.1.2 installato
Pacchetti inviatiUDPUDP predefinito, -I per ICMP, -T per TCP
Output per hopUna rigaTre invii predefiniti, tre tempi (si cambia con -q)
Numero di opzioniOtto: -4 -6 -n -b -l -m -p -VOltre 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.

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

🔢 FAQ & contenuti consigliati

No, il codice di uscita non lo indica. Anche quando l'esecuzione verso example.com con -m 10 è terminata con Too many hops senza reached, il codice di uscita era 0. Un errore di risoluzione dei nomi e un argomento non valido hanno dato 1, e l'esecuzione senza destinazione ha dato 255. Il codice di uscita distingue solo gli errori di esecuzione, quindi per sapere se la destinazione è stata raggiunta si guarda la riga reached nell'output.

localhost è stato inviato all'indirizzo IPv6 ::1, quindi la prima riga [LOCALHOST] ha mostrato la MTU dell'interfaccia di loopback, 65536, mentre con 127.0.0.1, che è IPv4, è comparsa così com'è la lunghezza di pacchetto predefinita di IPv4, 65535. Anche la MTU dell'interfaccia lo verificata con ip link era 65536.

Con -4 si invia solo a indirizzi IPv4. Aggiungendo -4 per localhost, reached è comparso dopo un solo hop via IPv4 senza la riga [LOCALHOST]; al contrario, aggiungendo -6 per 127.0.0.1 è terminato con [Address family for hostname not supported].

ℹ️ 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: 2   +   7   =