Γιατί μια διαδρομή VPN δεν δείχνει πύλη στην έξοδο του ip route
Μια γραμμή με συσκευή και χωρίς πύλη είναι άμεση διαδρομή, όχι χαλασμένη. Διαβάστε προορισμό, dev και scope και επιβεβαιώστε με ip route get.
Οι πίνακες δρομολόγησης διαβάζονται ως χαλασμένοι όταν η στήλη της πύλης μένει κενή, ενώ η γραμμή είναι συνήθως πλήρης από μόνη της. Το πεδίο via εμφανίζεται μόνο όταν ο πυρήνας παραδίδει το πακέτο σε διεύθυνση επόμενου άλματος· μια διαδρομή συνδεδεμένη με διεπαφή φτάνει στους προορισμούς της μέσω επίλυσης επιπέδου ζεύξης ή μέσω ομότιμου σημείου προς σημείο. Η ανάγνωση των στηλών από αριστερά προς τα δεξιά σάς λέει σε ποια περίπτωση βρίσκεστε, και αυτή η ανάγνωση πρέπει να γίνει πριν επεξεργαστεί κάποιος μια προεπιλεγμένη διαδρομή. Τα περισσότερα δελτία για πύλη που λείπει τελειώνουν σε αυτή τη διάκριση.
Διαβάστε μια γραμμή διαδρομής στήλη προς στήλη
Κάθε καταχώριση ξεκινά με τον προορισμό και το μήκος του προθέματός του και στη συνέχεια προσθέτει τροποποιητές σε σταθερό λεξιλόγιο: via, dev, proto, scope, src και metric. Μια γραμμή όπως 198.51.100.0/24 dev tun0 proto kernel scope link src 198.51.100.2 είναι πυκνή αλλά πλήρως προσδιορισμένη. Δεν λείπει τίποτα από αυτήν και δεν υπονοείται καμία διεύθυνση δρομολογητή.
Η απουσία του via είναι το ενδιαφέρον σημείο. Χωρίς επόμενο άλμα, ο πυρήνας επιλύει τον προορισμό απευθείας στη συγκεκριμένη διεπαφή, το οποίο για μια σήραγγα σημαίνει παράδοση του πλαισίου στη συσκευή σήραγγας και άφηση της ενθυλάκωσης να το αναλάβει από εκεί. Το proto kernel καταγράφει ότι η καταχώριση εγκαταστάθηκε αυτόματα όταν εκχωρήθηκε μια διεύθυνση, όχι ότι πληκτρολογήθηκε από διαχειριστή. Το scope link λέει ότι ο προορισμός είναι προσβάσιμος σε αυτή τη ζεύξη χωρίς να περάσει από δρομολογητή, και το src ονομάζει τη διεύθυνση που θα προτιμήσει ο πυρήνας ως πηγή για την κίνηση που ταιριάζει.
Τώρα διαβάστε μια προεπιλεγμένη διαδρομή με τον ίδιο τρόπο: default via 192.0.2.254 dev eth0 proto static metric 100. Εδώ το via υπάρχει επειδή το πακέτο χρειάζεται πράγματι επόμενο άλμα, και αυτό το άλμα πρέπει να είναι το ίδιο προσβάσιμο στο eth0. Οι δύο γραμμές δεν είναι παραλλαγές η μία της άλλης· απαντούν σε διαφορετικά ερωτήματα για το πού πηγαίνει η κίνηση.
Δύο σχήματα διαδρομής που συγχέονται μεταξύ τους
Μια διαδρομή υποδικτύου σήραγγας και μια προεπιλεγμένη διαδρομή μοιάζουν σε ένα στιγμιότυπο οθόνης και συμπεριφέρονται εντελώς διαφορετικά. Χρησιμοποιήστε τον παρακάτω πίνακα ως βοήθημα ανάγνωσης για τα πεδία και στη συνέχεια επιβεβαιώστε τους πραγματικούς αριθμούς στο μηχάνημα που αποσφαλματώνετε αντί να εμπιστεύεστε ένα δείγμα από έναν οδηγό.
| Piece of the line | What it settles | What it says nothing about |
|---|---|---|
| The destination and mask | Which packets are eligible to match | Where those packets leave the host |
via plus its address | Which next hop receives them, and therefore that a router is involved | Whether that router is reachable or sane |
dev | Which interface carries the encapsulated or raw packet | Whether the interface is up or has a carrier |
proto and scope | Who installed the entry and how far the destination is considered to be | Whether a firewall later drops the traffic |
Αυτό που δεν μπορεί να σας πει ο πίνακας είναι η πρόθεση. Μια άμεση διαδρομή σε ιδιωτικό εύρος μέσω σήραγγας είναι σκόπιμος σχεδιασμός διαχωρισμένης σήραγγας· το ίδιο σχήμα σε έναν κεντρικό υπολογιστή που θα έπρεπε να στέλνει τα πάντα μέσω του VPN είναι σύμπτωμα. Η πρόθεση ζει στη διαμόρφωση που παρήγαγε την καταχώριση, οπότε κοιτάξτε το εργαλείο που την εγκατέστησε πριν καταλήξετε ότι ο πυρήνας έκανε κάτι λάθος.
Ομοίως, μια πύλη που λείπει δεν είναι άδεια να επινοήσετε μία. Αν μια διαδρομή χρειάζεται πράγματι επόμενο άλμα, αυτό το άλμα πρέπει να είναι προσβάσιμο στη διεπαφή που το μεταφέρει, και για σήραγγα σημείου προς σημείο η διεύθυνση του ομοτίμου δεν είναι το ίδιο αντικείμενο με την τοπική διεύθυνση. Το να αντιμετωπίζετε την τοπική διεύθυνση σήραγγας ως δρομολογητή Ethernet είναι συνηθισμένος τρόπος να παραχθεί μια διαδρομή που φαίνεται σωστή και δεν προωθεί τίποτα.
Ρωτήστε τον πυρήνα ποια γραμμή θα χρησιμοποιήσει πραγματικά
Η ανάγνωση του πίνακα δεν είναι το ίδιο με την εκτέλεση της αναζήτησης, επειδή ο πυρήνας συμβουλεύεται κανόνες πολιτικής, αρκετούς πίνακες και προσωρινά αποθηκευμένες καταχωρίσεις πριν απαντήσει. Το ρήμα που εκτελεί την πραγματική αναζήτηση είναι το ip route get, και εκτυπώνει τη διαδρομή που θα ακολουθούσε ένα πακέτο με αυτές τις ιδιότητες.
ip route get 203.0.113.37 from 198.51.100.2 iif tun0
Βάλτε τον προορισμό που πραγματικά σας ενδιαφέρει και μετά προσθέστε from ή iif όταν η κίνηση επιλέγεται με βάση την πηγή ή προωθείται, επειδή μια συνηθισμένη τοπική αναζήτηση μπορεί να διαλέξει διαφορετική διαδρομή από έναν προωθούμενο πελάτη. Η απάντηση ονομάζει τη διεπαφή, τη διεύθυνση πηγής που επιλέχθηκε και οποιοδήποτε επόμενο άλμα, δηλαδή τις ίδιες πληροφορίες με τις οποίες θα δρομολογούνταν ένα πακέτο εκείνη τη στιγμή.
Αν η απάντηση σας εκπλήξει, εκτυπώστε τους κανόνες πριν αλλάξετε οτιδήποτε: το ip -4 rule show τους απαριθμεί κατά σειρά προτεραιότητας, και ένας πελάτης VPN που εγκαθιστά δικό του πίνακα ή κανόνα για σημασμένα πακέτα δεν θα εμφανιστεί καθόλου στον κύριο πίνακα. Η απαρίθμηση όλων των πινάκων κλείνει αυτό το κενό.
ip -4 route show table all | grep -E 'tun|default'Ελέγξτε το υποκείμενο δίκτυο πριν αντικαταστήσετε την προεπιλεγμένη διαδρομή
Τα ίδια τα πακέτα της σήραγγας πρέπει να φτάσουν στο απομακρυσμένο άκρο, και το κάνουν μέσω της φυσικής διεπαφής χρησιμοποιώντας τη διαδρομή που υπήρχε πριν ενεργοποιηθεί το VPN. Η αντικατάσταση ολόκληρης της προεπιλεγμένης διαδρομής χωρίς καθήλωση αυτού του άκρου στέλνει τα ενθυλακωμένα πακέτα μέσα στη σήραγγα που υποτίθεται ότι θα χτίσουν, και η σύνδεση καταρρέει. Επιβεβαιώστε πρώτα τη διαδρομή προς το άκρο με αναζήτηση μόνο της διεύθυνσης του άκρου.
Κρατήστε τρία πράγματα χωριστά όταν κάνετε την αλλαγή: τη διαδρομή προς το άκρο που πρέπει να μείνει στη φυσική διεπαφή, τα ιδιωτικά εύρη που πρέπει να μπουν στη σήραγγα, και την προεπιλεγμένη διαδρομή που αποφασίζει για όλα τα άλλα. Χωρίστε τα με αυτή τη σειρά, εφαρμόστε ένα κάθε φορά και εκτελέστε ξανά την αναζήτηση μετά από κάθε βήμα. Ένα αποτυχημένο ping μετά αποδεικνύει από μόνο του πολύ λίγα, αφού τα δικαιώματα, η δρομολόγηση απαντήσεων, το DNS και η ίδια η υπηρεσία βρίσκονται όλα κατάντη μιας σωστής διαδρομής.
Σημειώστε τις τέσσερις τιμές που σας έδωσε η γραμμή πριν από την αλλαγή: προορισμός, επόμενο άλμα ή η απουσία του, συσκευή και επιλεγμένη πηγή. Αν μια μεταγενέστερη αλλαγή μετακινήσει οποιαδήποτε από αυτές, ξέρετε ποια απόφαση άλλαξε πραγματικά, και μπορείτε να επαναφέρετε μία καταχώριση αντί να μαντεύετε ολόκληρο τον πίνακα.