Πώς να χρησιμοποιήσετε την εντολή 'traceroute' στο Linux

Τι να ξέρετε

  • Η μόνη παράμετρος που πρέπει να συμπεριλάβετε με μια εντολή traceroute είναι το όνομα κεντρικού υπολογιστή ή η διεύθυνση IP του προορισμού.
  • Ξεκινήστε τους ανιχνευτές με TTL 1 και αυξήστε κατά ένα μέχρι να λάβετε μια "θύρα μη προσβάσιμη" ICMP ή να πετύχετε μια μέγιστη τιμή προσπαθειών.

Αυτό το άρθρο καλύπτει πληροφορίες traceroute που ισχύουν για μηχανές Linux και περιλαμβάνει επεξηγήσεις διακόπτη εντολών καθώς και πληροφορίες σχετικά με τον τρόπο ερμηνείας των αποτελεσμάτων. Traceroute είναι χρησιμοποιείται διαφορετικά στα Windows.

Πώς λειτουργεί το Traceroute

Η εντολή traceroute χαρτογραφεί το ταξίδι που αναλαμβάνει ένα πακέτο πληροφοριών από την πηγή του στον προορισμό του. Μια χρήση του traceroute είναι να εντοπίζει πότε συμβαίνει απώλεια δεδομένων σε ένα δίκτυο, κάτι που θα μπορούσε να σημαίνει ότι ένας κόμβος είναι εκτός λειτουργίας.

Επειδή κάθε μεταπήδηση στην εγγραφή αντικατοπτρίζει έναν νέο διακομιστή ή δρομολογητή μεταξύ του αρχικού υπολογιστή και του προοριζόμενου στόχος, η ανασκόπηση των αποτελεσμάτων μιας σάρωσης traceroute εντοπίζει αργά σημεία που μπορεί να επηρεάσουν αρνητικά το δίκτυό σας ΚΙΝΗΣΗ στους ΔΡΟΜΟΥΣ.

Αντιμετώπιση προβλημάτων με το Traceroute

Η αξιολόγηση της συγκεκριμένης διαδρομής που ακολουθεί η κυκλοφορία δικτύου (ή η εύρεση της λανθασμένης πύλης που απορρίπτει τα πακέτα σας) παρουσιάζει αρκετές προκλήσεις αντιμετώπισης προβλημάτων. Το Traceroute χρησιμοποιεί το πρωτόκολλο IP ώρα να ζήσω πεδίο για να ζητήσετε μια απάντηση ICMP TIME_EXCEEDED από κάθε πύλη κατά μήκος της διαδρομής προς έναν κεντρικό υπολογιστή προορισμού.

Η μόνη παράμετρος που πρέπει να συμπεριλάβετε όταν εκτελείτε την εντολή traceroute είναι το όνομα κεντρικού υπολογιστή ή η διεύθυνση IP του προορισμού.

Traceroute Σύνταξη και διακόπτες

Στιγμιότυπο οθόνης της σύνταξης traceroute στο Ubuntu
Traceroute Syntax στο Ubuntu.

Το Traceroute ακολουθεί την ακόλουθη γενική σύνταξη:

traceroute [ -dFInrvx ] [ -f first_ttl ] [ -g gateway ] [ -i iface ] [ -m max_ttl ] [ -p port ] [ -q nqueries ] [ -s src_addr ] [ -t tos ] [ -w χρόνος αναμονής ] [-z pausemsecs] κεντρικός υπολογιστής [packetlen] 

Μπορείτε να αλλάξετε την απόδοση ή την έξοδο της εντολής καθορίζοντας έναν ή περισσότερους προαιρετικούς διακόπτες.

Διακόπτες εντολών Traceroute
Διακόπτης Εξήγηση
-φά Ρυθμίστε τον αρχικό χρόνο ζωής που χρησιμοποιείται στο πρώτο εξερχόμενο πακέτο ανιχνευτή.
-ΦΑ Ρυθμίστε το bit "μην κατακερματίζετε".
-ρε Ενεργοποίηση εντοπισμού σφαλμάτων σε επίπεδο υποδοχής.
-σολ Καθορίστε μια πύλη διαδρομής χαλαρής πηγής (μέγιστο 8).
-Εγώ Καθορίστε μια διεπαφή δικτύου για να λάβετε τη διεύθυνση IP προέλευσης για τα εξερχόμενα πακέτα ανιχνευτών. Αυτό είναι συνήθως χρήσιμο μόνο σε έναν κεντρικό υπολογιστή πολλαπλών κατοικιών. (Βλέπε το -μικρό επισημάνετε για άλλο τρόπο να το κάνετε αυτό.)
-ΕΓΩ Χρησιμοποιήστε το ICMP ECHO αντί για UDP datagrams.
Ρυθμίστε το μέγιστο χρόνο ζωής (μέγιστος αριθμός αναπηδήσεων) που χρησιμοποιείται στα εξερχόμενα πακέτα ανιχνευτών. Η προεπιλογή είναι 30 hops (η ίδια προεπιλογή χρησιμοποιείται για συνδέσεις TCP).
-n Εκτυπώστε τις διευθύνσεις hop αριθμητικά και όχι συμβολικά και αριθμητικά (αποθηκεύει μια αναζήτηση διεύθυνσης προς όνομα διακομιστή ονομάτων για κάθε πύλη που βρίσκεται στη διαδρομή).
Ορίστε τον βασικό αριθμό θύρας UDP που χρησιμοποιείται στους ανιχνευτές (η προεπιλογή είναι 33434). Η Traceroute ελπίζει ότι τίποτα δεν ακούει στις θύρες UDP βάση προς το βάση + nhops - 1 στον κεντρικό υπολογιστή προορισμού (έτσι θα επιστραφεί ένα μήνυμα ICMP PORT_UNREACHABLE για να τερματιστεί η ανίχνευση διαδρομής). Εάν κάτι ακούει σε μια θύρα στο προεπιλεγμένο εύρος, αυτή η επιλογή μπορεί να χρησιμοποιηθεί για να επιλέξετε μια αχρησιμοποίητη περιοχή θύρας.
-r Παρακάμψτε τους κανονικούς πίνακες δρομολόγησης και στείλτε απευθείας σε έναν κεντρικό υπολογιστή σε ένα συνδεδεμένο δίκτυο. Εάν ο κεντρικός υπολογιστής δεν βρίσκεται σε απευθείας συνδεδεμένο δίκτυο, επιστρέφεται ένα σφάλμα. Αυτή η επιλογή μπορεί να χρησιμοποιηθεί για να κάνετε ping σε έναν τοπικό κεντρικό υπολογιστή μέσω μιας διεπαφής που δεν έχει διαδρομή μέσω αυτού (π.χ. μετά την απόρριψη της διεπαφής από δρομολογούνται(8C)).
-μικρό Χρησιμοποιήστε την ακόλουθη διεύθυνση IP (η οποία συνήθως δίνεται ως αριθμός IP, όχι ως όνομα κεντρικού υπολογιστή) ως διεύθυνση πηγής στα εξερχόμενα πακέτα ανίχνευσης. Σε κεντρικούς υπολογιστές πολλαπλών εγκαταστάσεων (αυτοί με περισσότερες από μία διευθύνσεις IP), αυτή η επιλογή μπορεί να χρησιμοποιηθεί για να εξαναγκάσει τη διεύθυνση προέλευσης να είναι κάτι διαφορετικό από τη διεύθυνση IP της διεπαφής στην οποία αποστέλλεται το πακέτο ανίχνευσης. Εάν η διεύθυνση IP δεν είναι μία από τις διευθύνσεις διασύνδεσης αυτού του μηχανήματος, επιστρέφεται ένα σφάλμα και δεν αποστέλλεται τίποτα. (Βλέπε το -Εγώ επισημάνετε για άλλο τρόπο να το κάνετε αυτό.)
Ρυθμίστε το είδος υπηρεσίας σε πακέτα ανίχνευσης στην ακόλουθη τιμή (προεπιλεγμένο μηδέν). Η τιμή πρέπει να είναι ένας δεκαδικός ακέραιος στην περιοχή από 0 έως 255. Αυτή η επιλογή μπορεί να χρησιμοποιηθεί για να δείτε εάν διαφορετικοί τύποι υπηρεσιών καταλήγουν σε διαφορετικές διαδρομές. (Εάν δεν εκτελείτε 4.4bsd, αυτό μπορεί να είναι ακαδημαϊκό, καθώς οι κανονικές υπηρεσίες δικτύου όπως το telnet και το ftp μην σας αφήνουμε να ελέγχετε τους Όρους Παροχής Υπηρεσιών.) Δεν είναι νόμιμες ή σημαντικές όλες οι τιμές των Όρων—δείτε την προδιαγραφή IP για ορισμοί. Χρήσιμες τιμές είναι πιθανώς `16' (χαμηλή καθυστέρηση) και `8' (υψηλή απόδοση).
-v Λεπτή έξοδος. Παρατίθενται πακέτα ICMP που έχουν ληφθεί εκτός από τα TIME_EXCEEDED και τα UNREACHABLE.
-w Ρυθμίστε το χρόνο (σε δευτερόλεπτα) για να περιμένετε μια απάντηση σε έναν αισθητήρα (προεπιλογή 5 δευτ.).
Εναλλαγή IP αθροίσματα ελέγχου. Κανονικά, αυτό εμποδίζει το traceroute να υπολογίζει αθροίσματα ελέγχου IP. Σε ορισμένες περιπτώσεις, το λειτουργικό σύστημα μπορεί να αντικαταστήσει μέρη του εξερχόμενου πακέτου αλλά να μην υπολογίσει ξανά το άθροισμα ελέγχου. Έτσι, σε ορισμένες περιπτώσεις η προεπιλογή είναι να μην υπολογίζονται τα αθροίσματα ελέγχου και να χρησιμοποιείτε  προκαλεί τον υπολογισμό τους. Σημειώστε ότι συνήθως απαιτούνται αθροίσματα ελέγχου για το τελευταίο άλμα όταν χρησιμοποιείτε ανιχνευτές ICMP ECHO (-ΕΓΩ), επομένως υπολογίζονται πάντα όταν χρησιμοποιείται ICMP.
-z Ρυθμίστε το χρόνο (σε χιλιοστά του δευτερολέπτου) για παύση μεταξύ των ανιχνευτών (προεπιλογή 0). Ορισμένα συστήματα, όπως το Solaris και οι δρομολογητές της Cisco, τα μηνύματα icmp ορίου ρυθμού. Μια καλή τιμή για χρήση με αυτό είναι 500 (π.χ. 1/2 δευτερόλεπτο).

Ερμηνεία των Αποτελεσμάτων

Το Traceroute περιγράφει τη διαδρομή που ακολουθεί ένα πακέτο IP προς έναν κεντρικό υπολογιστή διαδικτύου εκκινώντας πακέτα ανιχνευτή UDP με ένα μικρό TTL και, στη συνέχεια, ακούγοντας μια απάντηση ICMP "υπέρβαση χρόνου" από μια πύλη. Ξεκινήστε τους ανιχνευτές με ένα TTL ίσο με ένα και αυξήστε κατά ένα έως ότου λάβετε μια "θύρα μη προσβάσιμη" ICMP (που σημαίνει ότι η το πακέτο έφτασε στον προορισμό του) ή χτύπησε μια μέγιστη τιμή προσπαθειών, η οποία είναι προεπιλεγμένη σε 30 hops και μπορεί να αλλάξει με την  σημαία.

Όταν εκτελείται το traceroute, στέλνει τρεις ανιχνευτές σε κάθε ρύθμιση TTL και στη συνέχεια εκτυπώνει μια γραμμή στην κονσόλα που δείχνει το TTL, τη διεύθυνση της πύλης και τον χρόνο μετ' επιστροφής κάθε ανιχνευτή. Εάν οι απαντήσεις του αισθητήρα προέρχονται από διαφορετικές πύλες, εκτυπώνεται η διεύθυνση κάθε συστήματος που αποκρίνεται. Εάν το traceroute δεν λάβει απάντηση εντός πέντε δευτερολέπτων (αλλάχθηκε με το -w flag), τυπώνει έναν αστερίσκο για αυτόν τον ανιχνευτή.

Για να αποτρέψει την επεξεργασία πακέτων ανιχνευτή UDP από το να κατακλύσει τον κεντρικό υπολογιστή προορισμού, το traceroute ορίζει τη θύρα προορισμού σε μια τιμή που η συσκευή είναι απίθανο να χρησιμοποιήσει. Εάν ένα δίκτυο ή υπηρεσία στον προορισμό χρησιμοποιεί αυτήν τη θύρα, αλλάξτε την τιμή χρησιμοποιώντας το  σημαία.

Παραδείγματα αποτελεσμάτων Traceroute

Ένα δείγμα χρήσης και εξόδου θα επιστρέψει αποτελέσματα παρόμοια με αυτό το παράδειγμα:

[yak 71]% traceroute nis.nsf.net.
traceroute σε nis.nsf.net (35.1.1.48), 30 hops max, 38 byte πακέτο
1 helios.ee.lbl.gov (128.3.112.1) 19 ms 19 ms 0 ms
2 λιλά-dmc. Μπέρκλεϋ. EDU (128.32.216.1) 39 ms 39 ms 19 ms
3 λιλά-dmc. Μπέρκλεϋ. EDU (128.32.216.1) 39 ms 39 ms 19 ms
4 ccngw-ner-cc. Μπέρκλεϋ. EDU (128.32.136.23) 39 ms 40 ms 39 ms
5 ccn-nerif22.Berkeley. EDU (128.32.168.22) 39 ms 39 ms 39 ms
6 128.32.197.4 (128.32.197.4) 40 ms 59 ms 59 ms
7 131.119.2.5 (131.119.2.5) 59 ms 59 ms 59 ms
8 129.140.70.13 (129.140.70.13) 99 ms 99 ms 80 ms
9 129.140.71.6 (129.140.71.6) 139 ms 239 ms 319 ms
10 129.140.81.7 (129.140.81.7) 220 ms 199 ms 199 ms
11 nic.merit.edu (35.1.1.48) 239 ms 239 ms 239 ms

Η δεύτερη και η τρίτη γραμμή είναι ίδιες. Αυτό το αποτέλεσμα σχετίζεται με έναν πυρήνα buggy στο δεύτερο σύστημα hop—lbl-csam.arpa—που προωθεί πακέτα με μηδενικό TTL (ένα σφάλμα στην κατανεμημένη έκδοση του 4.3 BSD). Πρέπει να μαντέψετε ποια διαδρομή ακολουθούν τα πακέτα μεταξύ των χωρών, καθώς το NSFNet (129.140) δεν παρέχει μεταφράσεις διεύθυνσης σε όνομα για τα NSS του.

Παράδειγμα Silent Gateway

Ένα πιο ενδιαφέρον παράδειγμα είναι:

[yak 72]% traceroute allspice.lcs.mit.edu.
traceroute σε allspice.lcs.mit.edu (18.26.0.115), 30 λυκίσκους μέγ.
1 helios.ee.lbl.gov (128.3.112.1) 0 ms 0 ms 0 ms
2 λιλά-dmc. Μπέρκλεϋ. EDU (128.32.216.1) 19 ms 19 ms 19 ms
3 λιλά-dmc. Μπέρκλεϋ. EDU (128.32.216.1) 39 ms 19 ms 19 ms
4 ccngw-ner-cc. Μπέρκλεϋ. EDU (128.32.136.23) 19 ms 39 ms 39 ms
5 ccn-nerif22.Berkeley. EDU (128.32.168.22) 20 ms 39 ms 39 ms
6 128.32.197.4 (128.32.197.4) 59 ms 119 ms 39 ms
7 131.119.2.5 (131.119.2.5) 59 ms 59 ms 39 ms
8 129.140.70.13 (129.140.70.13) 80 ms 79 ms 99 ms
9 129.140.71.6 (129.140.71.6) 139 ms 139 ms 159 ms
10 129.140.81.7 (129.140.81.7) 199 ms 180 ms 300 ms
11 129.140.72.17 (129.140.72.17) 300 ms 239 ms 239 ms
12 * * *
13 128.121.54.72 (128.121.54.72) 259 ms 499 ms 279 ms
14 * * *
15 * * *
16 * * *
17 * * *
18 ALLSPICE.LCS.MIT.EDU (18.26.0.115) 339 ms 279 ms 279 ms

Λάβετε υπόψη ότι οι πύλες στις 12, 14, 15, 16 και 17 μεταπήδηση μακριά είτε δεν στέλνουν μηνύματα ICMP "υπέρβαση χρόνου" είτε τα στέλνουν με πολύ μικρό TTL για να επικοινωνήσετε μαζί μας. Οι γραμμές 14 έως 17 εκτελούν τον κωδικό MIT C Gateway που δεν στέλνει μηνύματα "υπέρβαση χρόνου".

Η αθόρυβη πύλη 12 στο παραπάνω παράδειγμα μπορεί να είναι το αποτέλεσμα ενός σφάλματος στον κώδικα δικτύου 4.[23]BSD και του παράγωγα: Μηχανήματα που εκτελούν κώδικα 4.3 και παλαιότερα στέλνουν ένα μη προσβάσιμο μήνυμα χρησιμοποιώντας ό, τι TTL παραμένει στο πρωτότυπο datagram. Για τις πύλες, το TTL που απομένει είναι μηδέν, η "υπέρβαση χρόνου" ICMP είναι εγγυημένη ότι δεν θα επιστρέψει σε εμάς.

Παράδειγμα Silent Gateway System System

Η συμπεριφορά αυτού του σφάλματος είναι ελαφρώς πιο ενδιαφέρουσα όταν εμφανίζεται στο σύστημα προορισμού:

1 helios.ee.lbl.gov (128.3.112.1) 0 ms 0 ms 0 ms
2 λιλά-dmc. Μπέρκλεϋ. EDU (128.32.216.1) 39 ms 19 ms 39 ms
3 λιλά-dmc. Μπέρκλεϋ. EDU (128.32.216.1) 19 ms 39 ms 19 ms
4 ccngw-ner-cc. Μπέρκλεϋ. EDU (128.32.136.23) 39 ms 40 ms 19 ms
5 ccn-nerif35.Berkeley. EDU (128.32.168.35) 39 ms 39 ms 39 ms
6 csgw. Μπέρκλεϋ. EDU (128.32.133.254) 39 ms 59 ms 39 ms
7 * * *
8 * * *
9 * * *
10 * * *
11 * * *
12 * * *
13 σχίζω. Μπέρκλεϋ. EDU (128.32.131.22) 59 ms! 39 ms! 39 ms!

Παρατηρήστε ότι υπάρχουν 12 «πύλες» (13 είναι ο τελικός προορισμός) και το τελευταίο μισό λείπει. Αυτό που πραγματικά συμβαίνει είναι ότι ο διακομιστής ονομάστηκε ξήλωμα (ένα Sun-3 που εκτελεί Sun OS 3.5) χρησιμοποιεί το TTL από το φθίνον datagram μας ως TTL στην απάντησή του ICMP. Έτσι, η απάντηση θα λήξει στη διαδρομή επιστροφής (χωρίς να σταλεί ειδοποίηση σε κανέναν, καθώς τα ICMP δεν αποστέλλονται για ICMP) μέχρι να διερευνήσουμε με ένα TTL που είναι τουλάχιστον διπλάσιο από το μήκος της διαδρομής—με άλλα λόγια, το rip είναι πραγματικά μόνο επτά άλματα Μακριά.

Μια απάντηση που επιστρέφει με TTL 1 είναι μια ένδειξη ότι αυτό το πρόβλημα υπάρχει. Εκτυπώσεις Traceroute a! μετά το πέρας του χρόνου εάν το TTL είναι μικρότερο ή ίσο με 1. Εφόσον οι πωλητές αποστέλλουν πολύ απαρχαιωμένο λογισμικό (DEC's Ultrix, Sun 3.x) ή μη τυπικό (HPUX), περιμένετε να βλέπετε συχνά αυτό το πρόβλημα και να φροντίζετε να επιλέγετε τον κεντρικό υπολογιστή-στόχο των ανιχνευτών σας.

Άλλοι πιθανοί σχολιασμοί μετά την ώρα είναι , , ή  (μη πρόσβαση σε κεντρικό υπολογιστή, δίκτυο ή πρωτόκολλο), !ΜΙΚΡΟ (η διαδρομή πηγής απέτυχε), !ΦΑ- (απαιτείται κατακερματισμός—εμφανίζεται η τιμή RFC1191 Path MTU Discovery),  (απαγορεύεται διοικητικά η επικοινωνία), !V (παραβίαση προτεραιότητας κεντρικού υπολογιστή), !ΝΤΟ (αποκοπή προτεραιότητας σε ισχύ) ή ! (Απρόσιτος κωδικός ICMP). Αυτοί οι κωδικοί ορίζονται από τον RFC1812, ο οποίος αντικαθιστά τον RFC1716. Εάν σχεδόν όλοι οι ανιχνευτές καταλήξουν σε κάποιο είδος απρόσιτου ξενιστή, το traceroute θα εγκαταλείψει και θα βγει.

Αυτό το πρόγραμμα προορίζεται για χρήση σε δοκιμές, μετρήσεις και διαχείριση δικτύου. Θα πρέπει να χρησιμοποιείται κυρίως για χειροκίνητη απομόνωση σφαλμάτων. Λόγω του φορτίου που θα μπορούσε να επιβάλει στο δίκτυο, δεν είναι συνετό να χρησιμοποιείτε το traceroute κατά τη διάρκεια κανονικών λειτουργιών ή από αυτοματοποιημένα σενάρια.