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

Μπορείτε να χρησιμοποιήσετε την εντολή Linux traceroute για να εντοπίσετε το αργό σκέλος της διαδρομής ενός πακέτου δικτύου και να αντιμετωπίσετε προβλήματα υποτονικών συνδέσεων δικτύου. Θα σας δείξουμε πώς!

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

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

Μια μικρή οργάνωση τοπικό δίκτυο (LAN) μπορεί να είναι σχετικά απλό. Θα έχει πιθανώς τουλάχιστον έναν διακομιστή και έναν δρομολογητή ή δύο. Η πολυπλοκότητα αυξάνεται σε α δίκτυο ευρείας περιοχής (WAN) που επικοινωνεί μεταξύ διαφορετικών τοποθεσιών ή μέσω Διαδικτύου. Στη συνέχεια, το πακέτο του δικτύου σας συναντά (και προωθείται και δρομολογείται από) πολύ υλικό, όπως δρομολογητές και πύλες.

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

traceroute χρησιμοποιεί το TCP/IP σουίτα πρωτοκόλλων και αποστέλλει Πρωτόκολλο User Datagram πακέτα. Η κεφαλίδα περιέχει το Ωρα να ζήσω πεδίο (TTL), το οποίο περιέχει μια ακέραια τιμή οκτώ bit. Παρά τα όσα υποδηλώνει το όνομα, αντιπροσωπεύει μια καταμέτρηση, όχι μια διάρκεια.

Ένα πακέτο ταξιδεύει από την προέλευσή του στον προορισμό του μέσω ενός δρομολογητή. Κάθε φορά που το πακέτο φθάνει σε έναν δρομολογητή, μειώνει τον μετρητή TTL. Εάν η τιμή TTL φτάσει ποτέ ένα, ο δρομολογητής που λαμβάνει το πακέτο μειώνει την τιμή και παρατηρεί ότι είναι πλέον μηδέν. Στη συνέχεια, το πακέτο απορρίπτεται και δεν προωθείται στο επόμενο άλμα του ταξιδιού του επειδή έχει «λήξει ο χρόνος».

Ο δρομολογητής στέλνει ένα Πρωτόκολλο ελέγχου μηνυμάτων Διαδικτύου (ICMP) Υπέρβαση χρόνου μήνυμα πίσω στην προέλευση του πακέτου για να το ενημερώσει ότι το χρονικό όριο του πακέτου έληξε. Το μήνυμα Time Exceeded περιέχει την αρχική κεφαλίδα και τα πρώτα 64 bit των δεδομένων του αρχικού πακέτου. Αυτό ορίζεται στη σελίδα έξι του Αίτημα για σχόλια 792.

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

  Οι καλύτερες διανομές Linux για χρήστες Mac

Στη συνέχεια επαναλαμβάνει την άσκηση με το TTL να έχει οριστεί στο 2, το οποίο θα αποτύχει μετά από δύο άλματα. Το traceroute αυξάνει το TTL σε τρία και προσπαθεί ξανά. Αυτή η διαδικασία επαναλαμβάνεται μέχρι να επιτευχθεί ο προορισμός ή να δοκιμαστεί ο μέγιστος αριθμός αναπηδήσεων (30, από προεπιλογή).

Μερικοί δρομολογητές δεν παίζουν καλά

Ορισμένοι δρομολογητές έχουν σφάλματα. Προσπαθούν να προωθήσουν πακέτα με μηδέν TTL αντί να τα απορρίψουν και να ανεβάσουν ένα μήνυμα υπέρβασης χρόνου ICMP.

Σύμφωνα με Cisco, ορισμένοι πάροχοι υπηρεσιών Διαδικτύου (ISP) ρυθμίζουν-περιορίζουν τον αριθμό των μηνυμάτων ICMP που αναμεταδίδουν οι δρομολογητές τους.

Ορισμένες συσκευές έχουν ρυθμιστεί να μην στέλνουν πακέτα ICMP. Αυτό γίνεται συχνά για να διασφαλιστεί ότι η συσκευή δεν μπορεί άθελά της να εξαναγκαστεί να συμμετάσχει σε ένα κατανεμημένη άρνηση παροχής υπηρεσιών, σαν ένα επίθεση στρουμφ.

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

Εγκατάσταση traceroute

Το traceroute είχε ήδη εγκατασταθεί στο Fedora 31, αλλά πρέπει να εγκατασταθεί στο Manjaro 18.1 και στο Ubuntu 18.04. Για να εγκαταστήσετε το traceroute στο Manjaro χρησιμοποιήστε την ακόλουθη εντολή:

sudo pacman -Sy traceroute

ο

Για να εγκαταστήσετε το traceroute στο Ubuntu, χρησιμοποιήστε την ακόλουθη εντολή:

sudo apt-get install traceroute

ο

Χρήση traceroute

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

Για παράδειγμα, θα τρέξουμε ένα traceroute στο Κάστρο Blarney ιστοσελίδα στην Ιρλανδία, το σπίτι των διάσημων Blarney Stone. Ο θρύλος λέει ότι αν φιλήσεις την Blarney Stone, θα ευλογηθείς με το «δώρο της γάμπας». Ας ελπίσουμε ότι οι δρομολογητές που συναντάμε στην πορεία είναι κατάλληλα σχολαστικοί.

Πληκτρολογούμε την παρακάτω εντολή:

traceroute www.blarneycastle.ie

ο

Η πρώτη γραμμή μας δίνει τις ακόλουθες πληροφορίες:

Ο προορισμός και η διεύθυνση IP του.
Ο αριθμός των λυκίσκων traceroute θα προσπαθήσει πριν τα παρατήσει.
Το μέγεθος των πακέτων UDP που στέλνουμε.

Όλες οι άλλες γραμμές περιέχουν πληροφορίες για έναν από τους λυκίσκους. Ωστόσο, προτού ψάξουμε στις λεπτομέρειες, μπορούμε να δούμε ότι υπάρχουν 11 άλματα μεταξύ του υπολογιστή μας και του ιστότοπου του Blarney Castle. Το Hop 11 μας λέει επίσης ότι φτάσαμε στον προορισμό μας.

  Πώς να εγκαταστήσετε τον διακομιστή Web Caddy σε Linux

Η μορφή κάθε γραμμής hop είναι η εξής:

Το όνομα της συσκευής ή, εάν η συσκευή δεν ταυτοποιείται, τη διεύθυνση IP.
Η διεύθυνση IP.
Ο χρόνος που χρειάστηκε μετ’ επιστροφής για καθεμία από τις τρεις δοκιμές. Εάν υπάρχει ένας αστερίσκος εδώ, σημαίνει ότι δεν υπήρξε απάντηση για αυτό το τεστ. Εάν η συσκευή δεν ανταποκρίνεται καθόλου, θα δείτε τρεις αστερίσκους και κανένα όνομα συσκευής ή διεύθυνση IP.

Ας δούμε τι έχουμε παρακάτω:

Hop 1: Η πρώτη θύρα κλήσης (χωρίς λογοπαίγνιο) είναι ο δρομολογητής DrayTek Vigor στο τοπικό δίκτυο. Αυτός είναι ο τρόπος με τον οποίο τα πακέτα UDP μας φεύγουν από το τοπικό δίκτυο και μπαίνουν στο Διαδίκτυο.
Hop 2: Αυτή η συσκευή δεν ανταποκρίθηκε. Ίσως έχει ρυθμιστεί να μην στέλνει ποτέ πακέτα ICMP. Ή, ίσως ανταποκρινόταν, αλλά ήταν πολύ αργή, οπότε το χρονικό όριο του traceroute έληξε.
Hop 3: Μια συσκευή απάντησε, αλλά δεν λάβαμε το όνομά της, μόνο τη διεύθυνση IP. Σημειώστε ότι υπάρχει ένας αστερίσκος σε αυτήν τη γραμμή, που σημαίνει ότι δεν λάβαμε απάντηση και στα τρία αιτήματα. Αυτό μπορεί να υποδηλώνει απώλεια πακέτων.
Hops 4 και 5: Περισσότερα ανώνυμα hops.
Hop 6: Υπάρχει πολύ κείμενο εδώ επειδή μια διαφορετική απομακρυσμένη συσκευή χειριζόταν καθένα από τα τρία αιτήματά μας UDP. Εκτυπώθηκαν τα (μάλλον μεγάλα) ονόματα και οι διευθύνσεις IP για κάθε συσκευή. Αυτό μπορεί να συμβεί όταν συναντήσετε ένα δίκτυο «πλούσιο» στο οποίο υπάρχει πολύ υλικό για τη διαχείριση μεγάλου όγκου κίνησης. Αυτό το hop βρίσκεται σε έναν από τους μεγαλύτερους ISP στο Ηνωμένο Βασίλειο. Επομένως, θα ήταν μικρό θαύμα εάν το ίδιο κομμάτι απομακρυσμένου υλικού χειριζόταν τα τρία αιτήματα σύνδεσης μας.
Hop 7: Αυτό είναι το hop που έκαναν τα πακέτα μας UDP καθώς έφευγαν από το δίκτυο των ISP.
Hop 8: Και πάλι, λαμβάνουμε μια διεύθυνση IP αλλά όχι το όνομα της συσκευής. Και οι τρεις δοκιμές επέστρεψαν με επιτυχία.
Hops 9 και 10: Δύο ακόμη ανώνυμα hops.
Hop 11: Φτάσαμε στον ιστότοπο του Blarney Castle. Το κάστρο βρίσκεται στο Κορκ της Ιρλανδίας, αλλά, σύμφωνα με Γεωγραφική τοποθεσία διεύθυνσης IP, η ιστοσελίδα βρίσκεται στο Λονδίνο.

Λοιπόν, ήταν μια μικτή τσάντα. Κάποιες συσκευές έπαιξαν μπάλα, κάποιες απάντησαν αλλά δεν μας είπαν τα ονόματά τους και άλλες παρέμειναν εντελώς ανώνυμες.

Ωστόσο, φτάσαμε στον προορισμό, γνωρίζουμε ότι απέχει 11 άλματα και ο χρόνος μετ’ επιστροφής για το ταξίδι ήταν 13.773 και 14.715 χιλιοστά του δευτερολέπτου.

Απόκρυψη ονομάτων συσκευών

Όπως έχουμε δει, μερικές φορές η συμπερίληψη ονομάτων συσκευών οδηγεί σε ακατάστατη οθόνη. Για να διευκολύνετε την προβολή των δεδομένων, μπορείτε να χρησιμοποιήσετε την επιλογή -n (χωρίς αντιστοίχιση).

  Πώς να μετατρέψετε αρχεία πολυμέσων σε Linux με το Curlew

Για να το κάνουμε αυτό με το παράδειγμά μας, πληκτρολογούμε τα εξής:

traceroute -n blarneycastle.ie

ο

Αυτό διευκολύνει την επιλογή μεγάλων αριθμών για χρονοδιαγράμματα μετ’ επιστροφής που θα μπορούσαν να υποδηλώνουν συμφόρηση.

Το Hop 3 αρχίζει να φαίνεται λίγο ύποπτο. Την τελευταία φορά, απάντησε μόνο δύο φορές, και αυτή τη φορά, απάντησε μόνο μία φορά. Σε αυτό το σενάριο, είναι εκτός ελέγχου μας, φυσικά.

Ωστόσο, εάν ερευνούσατε το εταιρικό σας δίκτυο, θα άξιζε τον κόπο να σκάψετε λίγο βαθύτερα σε αυτόν τον κόμβο.

Ρύθμιση της τιμής χρονικού ορίου του traceroute

Ίσως αν επεκτείνουμε την προεπιλεγμένη περίοδο χρονικού ορίου (πέντε δευτερόλεπτα), θα λάβουμε περισσότερες απαντήσεις. Για να το κάνουμε αυτό, θα χρησιμοποιήσουμε την επιλογή -w (χρόνος αναμονής) για να την αλλάξουμε σε επτά δευτερόλεπτα. (Σημειώστε ότι αυτός είναι ένας αριθμός κινητής υποδιαστολής.)

Πληκτρολογούμε την παρακάτω εντολή:

traceroute -w 7.0 blarneycastle.ie

ο

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

Ρύθμιση του αριθμού των δοκιμών

Από προεπιλογή, το traceroute στέλνει τρία πακέτα UDP σε κάθε hop. Μπορούμε να χρησιμοποιήσουμε την επιλογή -q (αριθμός ερωτημάτων) για να το προσαρμόσουμε προς τα πάνω ή προς τα κάτω.

Για να επιταχύνουμε τη δοκιμή traceroute, πληκτρολογούμε τα ακόλουθα για να μειώσουμε τον αριθμό των πακέτων ανιχνευτών UDP που στέλνουμε σε ένα:

traceroute -q 1 blarneycastle.ie

ο

Αυτό στέλνει έναν μόνο ανιχνευτή σε κάθε άλμα.

Ρύθμιση της αρχικής τιμής TTL

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

Επειδή γνωρίζουμε ότι ο ιστότοπος του Blarney Castle είναι 11 άλματα από αυτόν τον υπολογιστή, πληκτρολογούμε τα εξής για να πάμε κατευθείαν στο Hop 11:

traceroute -f 11 blarneycastle.ie

ο

Αυτό μας δίνει μια ωραία, συνοπτική αναφορά για την κατάσταση της σύνδεσης με τον προορισμό.

Να είστε προσεκτικοί

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

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

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