Come utilizzare il comando Linux mtr (My Traceroute).
Cos'è il comando mtr?
Mtr (my traceroute) è uno strumento diagnostico di rete da riga di comando che fornisce le funzioni dei comandi ping e traceroute. È uno strumento semplice e multipiattaforma che fornisce informazioni sull'intero percorso seguito dai pacchetti di rete dal sistema host al sistema di destinazione specificato. Il comando mtr è superiore al comando traceroute perché restituisce anche la percentuale di risposta e i tempi di risposta per tutti i passaggi di rete tra i due sistemi.
In qualità di amministratore di rete, devi sapere come utilizzare il comando mtr e i flag che puoi utilizzare per personalizzare l'output al fine di eseguire una diagnostica di rete produttiva. Questo articolo spiega in dettaglio l'uso del comando mtr e fornisce esempi per mostrare come utilizzare flag specifici con questo comando.
Abbiamo eseguito i comandi e le procedure descritte in questo articolo su un sistema Ubuntu 20.04 e Ubuntu 22.04 LTS, ma dovrebbe funzionare anche su Debian 11.
Poiché mtr è un programma da riga di comando, lo useremo nella riga di comando di Ubuntu, il terminale. Puoi aprire l'applicazione terminale utilizzando il Dash di sistema o la combinazione di tasti Ctrl+Alt+t.
Installazione del comando mtr
Probabilmente il comando mtr non è installato di default sul tuo sistema. puoi installarlo facilmente con apt però.
sudo apt install mtr
Utilizzo del comando mtr
1. Visualizza il rapporto traceroute in tempo reale
Il comando mtr viene utilizzato principalmente per visualizzare il report traceroute per una macchina remota. Tutto quello che devi fare è inserire il nome di dominio o l'indirizzo IP del sistema remoto utilizzando il comando mtr e l'output mostrerà il report di traceroute in tempo reale. Una volta terminata la visualizzazione del report, puoi uscire dal comando con q o con la combinazione di tasti Ctrl+C.
Visualizza nomi host
La seguente sintassi del comando mtr visualizza i nomi host nel report traceroute.
Sintassi:
$mtr [nomedominio/IP]
Esempio :
mtr google.com
Visualizza indirizzi IP numerici
Quando si utilizza il flag g con il comando mtr, vengono visualizzati gli indirizzi IP numerici anziché i nomi host nel rapporto traceroute.
Sintassi:
$mtr -g [nomedominio/IP]
Esempio :
mtr -g google.com
Entrambi i nomi host e gli indirizzi IP numerici
Quando si utilizza il flag b con il comando mtr, vengono visualizzati sia gli indirizzi IP numerici che i nomi host nel rapporto traceroute.
Sintassi:
$mtr -b [nomedominio/IP]
Esempio :
mtr -b google.com
2. Specificare un limite per il numero di ping
È possibile configurare il comando mtr per uscire dopo aver stampato il rapporto traceroute per un numero specifico di ping. Nell'output puoi facilmente visualizzare il numero di ping nella colonna Snt; quando Snt raggiunge il numero specificato nel comando tramite il flag c, mtr uscirà automaticamente.
Sintassi:
$mtr -c [n] “nomedominio/IP ”
Esempio :
mtr -c 10 google.com
3. Abilita la modalità Rapporto
Invece di stampare l'output del comando mtr sullo schermo, puoi abilitare la modalità report che stamperà invece l'output in un file di testo. In questo modo è possibile registrare l'analisi della rete per un utilizzo e un'osservazione successivi. Tutto quello che devi fare è abilitare la modalità report tramite il flag r, specificare un conteggio ping per il quale desideri limitare il report tramite il flag c e anche specificare il nome del file del report in cui verrà salvato il report.
Sintassi:
$mtr -r -c [n] “nomedominio/IP ” > ”nome-report ”
Esempio :
mtr -r -c 10 google.com >mtr-report-google
Per impostazione predefinita, il report viene salvato nella cartella Home dell'utente corrente. È tuttavia possibile specificare un percorso corretto in cui salvare il report.
Cancella l'output nel report
L'aggiunta di un flag w con il flag r consentirà a mtr di stampare un report piuttosto chiaro e più leggibile per il traceroute.
Sintassi:
$mtr -rw -c [n] “nomedominio/IP ” > ”nome-report ”
Esempio :
mtr -rw -c 10 google.com >mtr-report-google
4. Riorganizzare i campi di output
Quando vedi l'output del report mtr, noterai che le colonne sono disposte in un modo predefinito specifico. Il flag o consente di riorganizzare l'output in modo personalizzato per renderlo più utile e produttivo.
Sintassi:
$mtr -o "[Formato di output]" “nome dominio/IP "
La manpage mtr può aiutarti con le opzioni a tua disposizione durante la personalizzazione delle colonne del report mtr.
Esempio :
mtr -o "LSDR NBAW JMXI" google.com
5. Specificare l'intervallo di tempo tra le richieste ICMP ECHO
Sebbene l'intervallo di tempo predefinito tra ciascuna richiesta ICMP ed ECHO sia 1 secondo nel comando mtr, è possibile modificarlo utilizzando il flag i per specificare un nuovo intervallo di tempo.
Sintassi:
$mtr -i [tempo in secondi] “nomedominio/IP ”
Esempio :
mtr -i 10 google.com
6. Utilizzare pacchetti TCP SYN o datagrammi UDP
Se desideri utilizzare i datagrammi TCP SYN o UDP per richiedere mtr invece delle richieste ICMP ECHO predefinite, puoi farlo utilizzando rispettivamente i flag tcp e udp.
Sintassi:
$mtr --tcp “nomedominio/IP”
$mtr --udp “nomedominio/IP”
Esempio :
mtr --tcp google.com
mtr --udp google.com
7. Specificare il numero massimo di hop tra il sistema locale e la macchina remota
È possibile personalizzare il numero massimo di hop da verificare tra il sistema locale e la macchina remota specificando il tempo, in secondi, con il flag m. Il limite di tempo predefinito tra due hop è di 30 secondi per il comando mtr.
Sintassi:
$mtr -m [timeInSeconds] “nomedominio/IP ”
Esempio :
mtr -m 35 216.58.223.78
8. Specificare la dimensione del pacchetto
Tramite il flag s nel comando mtr è possibile specificare la dimensione, in byte, del pacchetto IP per la diagnosi della qualità della rete.
Sintassi:
$mtr -r -s [dimensione pacchetto] “nomedominio/IP ”
Esempio :
mtr -r -s 50 google.com
9. Stampa l'output CSV
L'output CSV del report mtr delimita le colonne con ", ". Con il flag csv, puoi personalizzare il comando mtr per generare il report in formato CSV.
Sintassi:
$mtr --csv “nomedominio/IP”
Esempio :
mtr --csv google.com
10. Stampa l'output XML
Il comando mtr può anche supportare il formato XML per la stampa dei report traceroute. Il report XML è una buona opzione per l'elaborazione automatizzata dell'output e può essere stampato specificando il flag xml con il comando mtr.
Sintassi:
$mtr --xml “nomedominio/IP”
Esempio :
mtr --xml google.com
11. Accesso alla guida di mtr e alla pagina man
Infine, puoi ottenere ulteriori opzioni per l'utilizzo e la personalizzazione del comando mtr leggendo la sua guida e la pagina man tramite i seguenti comandi.
man mtr
mtr --help
Di seguito è riportato un elenco di tutte le opzioni della riga di comando mtr
Usage:
mtr [options] hostname
-F, --filename FILE read hostname(s) from a file
-4 use IPv4 only
-6 use IPv6 only
-u, --udp use UDP instead of ICMP echo
-T, --tcp use TCP instead of ICMP echo
-I, --interface NAME use named network interface
-a, --address ADDRESS bind the outgoing socket to ADDRESS
-f, --first-ttl NUMBER set what TTL to start
-m, --max-ttl NUMBER maximum number of hops
-U, --max-unknown NUMBER maximum unknown host
-P, --port PORT target port number for TCP, SCTP, or UDP
-L, --localport LOCALPORT source port number for UDP
-s, --psize PACKETSIZE set the packet size used for probing
-B, --bitpattern NUMBER set bit pattern to use in payload
-i, --interval SECONDS ICMP echo request interval
-G, --gracetime SECONDS number of seconds to wait for responses
-Q, --tos NUMBER type of service field in IP header
-e, --mpls display information from ICMP extensions
-Z, --timeout SECONDS seconds to keep probe sockets open
-M, --mark MARK mark each sent packet
-r, --report output using report mode
-w, --report-wide output wide report
-c, --report-cycles COUNT set the number of pings sent
-j, --json output json
-x, --xml output xml
-C, --csv output comma separated values
-l, --raw output raw format
-p, --split split output
-t, --curses use curses terminal interface
--displaymode MODE select initial display mode
-g, --gtk use GTK+ xwindow interface
-n, --no-dns do not resolve host names
-b, --show-ips show IP numbers and host names
-o, --order FIELDS select output fields
-y, --ipinfo NUMBER select IP information in output
-z, --aslookup display AS number
-h, --help display this help and exit
-v, --version output version information and exit
Dopo aver letto questo articolo, sarai meglio equipaggiato per eseguire la diagnostica di rete tra la tua macchina e un sistema remoto. Hai anche un'alternativa ai comandi ping e traceroute, con molte più opzioni di personalizzazione per una migliore produttività e utilità.