Skip to main content

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

traceroute explained using Wireshark (Ιούνιος 2025)

traceroute explained using Wireshark (Ιούνιος 2025)
Anonim

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

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

Πως δουλεύει

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

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

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

traceroute -dFInrvx -φά first_ttl -σολ πύλη -Εγώ αντιμετωπίζω -m max_ttl Λιμάνι -q nqueries -μικρό src_addr -t tos -w χρόνος αναμονής pausemsecs πλήθος πακέτα

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

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

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

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

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

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

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

yak 71% traceroute nis.nsf.net. traceroute στο nis.nsf.net (35.1.1.48), 30 hops max, 38 bytes πακέτο 1 helios.ee.lbl.gov (128.3.112.1) 19 ms 19 ms 0 ms 2 lilac-dmc.Berkeley.EDU (128.32. 216.1) 39 ms 39 ms 19 ms 3 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 39 ms 19 ms 4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 39 ms 40 ms 39 ms 5 ccn (129.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) δεν παρέχει μεταφράσεις από τη διεύθυνση σε όνομα για τις NSSes.

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

yak 72% traceroute allspice.lcs.mit.edu. traceroute to allspice.lcs.mit.edu (18.26.0.115), 30 λυκίσκου max 1 helios.ee.lbl.gov (128.3.112.1) 0 ms 0 ms 0 ms 2 lilac-dmc.Berkeley.EDU (128.32.216.1) 19 ms 19 ms 19 ms 3 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 19 ms 19 ms 4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 19 ms 39 ms 39 ms 5 ccn-nerif22 (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, ο οποίος δεν στέλνει μηνύματα "υπερβαίνει το χρόνο".

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

1 helios.ee.lbl.gov (128.3.112.1) 0 ms 0 ms 0 ms 2 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 19 ms 39 ms 3 lilac-dmc.Berkeley.EDU (128.32.216.1) ) 19 ms 39 ms 19 ms 4 ccngw-ner-cc.Berkeley.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. Berkeley.EDU (128.32.133.254) 39 ms 59 ms 39 ms 7 * * * 8 * * * 9 * * * 10 * * * 11 * * * 12 * * * 13 rip.Berkeley.EDU (128.32.131.22) Κυρία ! 39 ms! 39 ms!

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

Μια απάντηση που επιστρέφει με ένα TTL 1 είναι μια ένδειξη ότι αυτό το πρόβλημα υπάρχει. Το Traceroute εκτυπώνει ένα "!" μετά την πάροδο του χρόνου, εάν ο TTL είναι μικρότερος ή ίσος με 1. Δεδομένου ότι οι πωλητές αποστείλουν πολλά παρωχημένα λογισμικά (DEC ™ Ultrix, Sun 3.x) ή μη τυποποιημένα (HPUX), περιμένετε να δείτε αυτό το πρόβλημα συχνά και φροντίστε να διαλέξετε στοχευμένη υποδοχή των ανιχνευτών σας.

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

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