Γιατί ένα υποδίκτυο εξακολουθεί να παρακάμπτει την προεπιλεγμένη διαδρομή του VPN
Ένα υποδίκτυο που πηγαίνει απευθείας υπό πλήρη σήραγγα συνήθως σημαίνει ότι κερδίζει ένα μεγαλύτερο πρόθεμα, όχι διαρροή. Ελέγξτε μισές προεπιλογές, κανόνες πολιτικής και εξαιρέσεις προφίλ.
Αλλάζετε το VPN σε πλήρη σήραγγα, η περισσότερη κίνηση υπακούει, και μετά μια διεύθυνση απαντά απευθείας — ένας εκτυπωτής, ένα NAS, ένας ενδιάμεσος κεντρικός υπολογιστής στο 10.x. Η προφανής ανάγνωση είναι ότι η σήραγγα διαρρέει, οπότε μειώνετε τη μετρική στην προεπιλεγμένη διαδρομή και τίποτα δεν αλλάζει. Αυτή η αποτυχημένη προσπάθεια είναι το στοιχείο: μια προεπιλεγμένη διαδρομή είναι εφεδρική λύση, όχι ετυμηγορία. Η αναζήτηση διαδρομής παίρνει το μεγαλύτερο ταιριαστό πρόθεμα πριν καν συγκρίνει μετρικές, οπότε το /24 συνεχίζει να κερδίζει το /0 ανεξάρτητα από τον αριθμό που επισυνάπτετε σε οποιοδήποτε από τα δύο. Μόλις γίνει σαφής αυτή η σειρά, η διαρροή είναι συνήθως μια διαδρομή που εγκατέστησε κάποιος επίτηδες, ή ένα πρόθεμα που ο πελάτης δεν είχε ποτέ σκοπό να καλύψει.
Τι υπόσχεται στην πραγματικότητα μια προεπιλεγμένη διαδρομή
Το 0.0.0.0/0 ταιριάζει με κάθε προορισμό IPv4 με μηδέν bit εξειδίκευσης. Υπάρχει ώστε ένας κεντρικός υπολογιστής να φτάνει οτιδήποτε δεν περιγράφει καλύτερα ο πίνακάς του. Μια διαδρομή προς το 192.168.1.0/24 φέρει 24 ταιριαστά bit, οπότε για το 192.168.1.40 κερδίζει πριν συγκρίνει κανείς μετρικές, διαχειριστική απόσταση ή ό,τι κι αν ονομάζει ο πελάτης πεδίο προτεραιότητας. Ο ίδιος κανόνας ισχύει στο Linux FIB, στον πίνακα δρομολόγησης των Windows και στη στοίβα BSD πίσω από το macOS.
Σε ένα κανονικό LAN αυτή η συμπεριφορά είναι χαρακτηριστικό. Το τοπικό υποδίκτυο είναι άμεσα συνδεδεμένο, ο εκτυπωτής συνεχίζει να λειτουργεί όσο η σήραγγα μεταφέρει την περιήγησή σας, και τίποτα δεν είναι λάθος ρυθμισμένο. Η ερώτηση που αξίζει να τεθεί δεν είναι γιατί αυτή η μία διεύθυνση πηγαίνει απευθείας, αλλά ποιο πρόθεμα σε ποιον πίνακα της ταιριάζει, και ποιος το έβαλε εκεί.
Μισές προεπιλογές, ή γιατί η προεπιλεγμένη καταχώριση μπορεί να φαίνεται άθικτη
Το καθαρότερο παράδειγμα είναι το redirect-gateway def1 του OpenVPN. Αντί να διαγράψει την προεπιλεγμένη διαδρομή σας και να την αντικαταστήσει, προσθέτει 0.0.0.0/1 και 128.0.0.0/1. Μαζί το ζεύγος καλύπτει όλο το IPv4, κάθε πρόθεμα είναι μεγαλύτερο από /0, και τα δύο νικούν την προεπιλεγμένη του δρομολογητή αφήνοντάς την στη θέση της. Εκτελέστε μετά μια λίστα διαδρομών και η αρχική προεπιλεγμένη είναι ακόμη εκεί, δείχνει ακόμη στην πύλη σας· απλώς δεν επιλέγεται ποτέ για προορισμούς του διαδικτύου.
Το wg-quick του WireGuard φτάνει στο ίδιο αποτέλεσμα μέσω δρομολόγησης πολιτικής. Με το AllowedIPs να καλύπτει το 0.0.0.0/0 δημιουργεί τον δικό του πίνακα, στέλνει εκεί τα σημασμένα πακέτα και προσθέτει έναν κανόνα που αγνοεί το πρόθεμα μηδενικού μήκους του κύριου πίνακα. Ο κύριος πίνακας κρατά την προεπιλεγμένη καταχώρισή του, και οι κανόνες αποφασίζουν ότι ο πίνακας της σήραγγας συμβουλεύεται πρώτος για την κίνηση που κατέχει η διεπαφή.
Και τα δύο σχέδια χρειάζονται ακριβώς μία διαδρομή εκτός της σήραγγας: μια διαδρομή υπολογιστή προς τη διεύθυνση του ίδιου του διακομιστή VPN μέσω της αρχικής πύλης. Χωρίς αυτήν, ο πελάτης θα προσπαθούσε να μεταφέρει τα πακέτα που χτίζουν τη σήραγγα μέσα στη σήραγγα, και η σύνδεση δεν θα ολοκληρωνόταν ποτέ. Μια διαδρομή που δεν είναι σήραγγας στον πίνακά σας είναι επομένως φυσιολογική ακόμη και σε αυστηρό προφίλ πλήρους σήραγγας. Οι διαδρομές που αξίζει να αμφισβητήσετε είναι εκείνες που καλύπτουν προορισμούς που πραγματικά σας νοιάζουν.
Οι μετρικές αποφασίζουν ισοπαλίες, τα προθέματα αποφασίζουν νικητές
Οι μετρικές συγκρίνονται μόνο μεταξύ υποψηφίων που ταιριάζουν εξίσου καλά στον προορισμό. Στο Linux, ip route get 10.20.5.9 εκτυπώνει τον νικητή μαζί με τον πίνακά του, και ip route show table all απαριθμεί τους υποψηφίους, συμπεριλαμβανομένων τυχόν μισών προεπιλογών και οποιουδήποτε πίνακα δείχνει ένας κανόνας. Στα Windows, Find-NetRoute -RemoteIPAddress 10.20.5.9 επιστρέφει την επιλεγμένη διαδρομή και τη διεύθυνση προέλευσης, ενώ Get-NetRoute δείχνει τον ακατέργαστο πίνακα — αλλά το πραγματικό κόστος είναι μετρική διαδρομής συν μετρική διεπαφής, οπότε ένας αργός προσαρμογέας μπορεί να χάσει μια ισοπαλία που φαίνεται να κερδίζει.
Τρεις περιπτώσεις καλύπτουν το μεγαλύτερο μέρος όσων θα δείτε:
- Ίδιος προορισμός, /24 έναντι /0: το /24 κερδίζει στο μήκος προθέματος, ό,τι κι αν λένε οι μετρικές.
- Ίδιος προορισμός, δύο /24 με διαφορετικές μετρικές: κερδίζει η χαμηλότερη πραγματική μετρική.
- Ίδιος προορισμός, δύο πίνακες, ο ένας επιλεγμένος από κανόνα πολιτικής: ο κανόνας επιλέγει πρώτα τον πίνακα, και η σύγκριση προθεμάτων γίνεται μέσα σε αυτόν.
Η τρίτη περίπτωση είναι εκεί όπου καταλήγουν οι περισσότερες από αυτές τις αναφορές. Ένας ip rule του Linux ή ένα φίλτρο κίνησης VPN των Windows μπορεί να στείλει κίνηση σε πίνακα που δεν κράτησε ποτέ την προεπιλεγμένη διαδρομή της σήραγγας, και ο κύριος πίνακας δείχνει τέλειος όλη την ώρα.
Ποιος κατέχει συνήθως την παράκαμψη
Ξεκινήστε από το προφίλ, όχι από τον πίνακα. Οι ρυθμίσεις split-tunnel και οι ρυθμίσεις VPN ανά εφαρμογή αφήνουν σκόπιμα ονομασμένα προθέματα εκτός σήραγγας· ένα προφίλ εργασίας που προστατεύει ένα ιδιωτικό υποδίκτυο και αφήνει τη γενική περιήγηση να πηγαίνει απευθείας συμπεριφέρεται όπως σχεδιάστηκε, και η παράκαμψή του παραβιάζει την πολιτική που υποτίθεται ότι επιβάλλει. Οι οδηγίες δρομολόγησης VPN της Microsoft χαράσσουν την ίδια γραμμή μεταξύ αναγκαστικά σηραγγοποιημένης κίνησης και ρητών εξαιρέσεων, που τις κάνει χρήσιμο σταυροειδή έλεγχο πριν επεξεργαστείτε οτιδήποτε.
Στη συνέχεια, ψάξτε για υπολείμματα. Μια διαδρομή που δείχνει σε διεπαφή που δεν υπάρχει πια, ή σε διεύθυνση από το προηγούμενο δίκτυο, εμφανίζεται αφού πάνε κι έρχονται σταθμοί σύνδεσης, προσαρμογείς USB και γέφυρες κοντέινερ. Η διαγραφή μία φορά δεν είναι το τέλος: τα προφίλ σύνδεσης του NetworkManager, τα αρχεία netplan και οι μόνιμες διαδρομές των Windows την επανεγκαθιστούν στην επόμενη σύνδεση ή εκκίνηση, οπότε βρείτε το αρχείο ή το προφίλ που την κατέχει πριν επεξεργαστείτε οτιδήποτε.
Έπειτα ελέγξτε το IPv6 χωριστά. ip -6 route και Get-NetRoute -AddressFamily IPv6 κρατούν ξεχωριστή κατάσταση, ξεχωριστές προεπιλογές και ξεχωριστή συμπεριφορά πελάτη. Ένας έλεγχος μόνο IPv4 δεν λέει τίποτα για έναν κεντρικό υπολογιστή διπλής στοίβας που προτιμά ήσυχα μια εγγενή διαδρομή IPv6, και μόνο αυτό μπορεί να κάνει έναν πελάτη να φαίνεται split-tunnel.
Επιβεβαιώστε με τη ροή της ίδιας της εφαρμογής
Καταγράψτε τον προορισμό που χρησιμοποιεί πραγματικά η εφαρμογή, και μετά ρωτήστε το σύστημα για τη διαδρομή που θα ακολουθούσε από τη διεύθυνση προέλευσης στην οποία δεσμεύεται αυτή η εφαρμογή. ip route get 10.20.5.9 from 192.168.1.40 απαντά σε αυτό στο Linux· Find-NetRoute -RemoteIPAddress 10.20.5.9 συν την τοπική διεύθυνση το κάνει στα Windows. Συγκρίνετε το αποτέλεσμα με αυτό που ισχυρίζεται το προφίλ. Η σελίδα δημόσιας IP ενός προγράμματος περιήγησης δοκιμάζει έναν προορισμό σε ένα πρωτόκολλο και δεν λέει τίποτα για την ιδιωτική διεύθυνση που ξεκίνησε το παράπονο.
Διορθώστε το στενότερο αντικείμενο που εξηγεί τη διαφορά. Αν η εξαίρεση είναι εγκεκριμένη, γράψτε το πρόθεμα και αφήστε το· αν δεν είναι, αφαιρέστε τη διαδρομή ή προσθέστε μια ρητή στενότερη διαδρομή μέσω της σήραγγας αντί να μειώσετε τη μετρική της προεπιλογής. Η μείωση μιας μετρικής δεν μπορεί να ξεπεράσει ένα μεγαλύτερο πρόθεμα, και η επεξεργασία της προεπιλογής ενώ δύο διαδρομές /1 κατέχουν τη διαδρομή του διαδικτύου επίσης δεν αλλάζει τίποτα.
Έπειτα συνδέστε ξανά τη σήραγγα και επαναλάβετε το ίδιο ερώτημα. Οι πελάτες επανεγκαθιστούν διαδρομές σε κάθε σύνδεση, οπότε μια αλλαγή που επιβιώνει μόνο μέχρι την επόμενη χειραψία δεν έχει δοκιμαστεί. Αν η διαδρομή αποκλίνει ακόμη, οι εναπομείναντες ύποπτοι είναι ένας κανόνας πολιτικής, ένας δεύτερος πίνακας ή ένα φίλτρο στην πλευρά του πελάτη — όχι η προεπιλεγμένη διαδρομή.
- Ονομάστε τον προορισμό και τη διεύθυνση προέλευσης που χρησιμοποιεί πραγματικά η εφαρμογή.
- Εκτυπώστε τη νικήτρια διαδρομή με
ip route getήFind-NetRoute. - Ελέγξτε αν ένα ζεύγος /1 ή ένας πίνακας πολιτικής κατέχει τη διαδρομή του διαδικτύου.
- Απαριθμήστε κάθε πρόθεμα μεγαλύτερο από /0 που ταιριάζει στον προορισμό.
- Επαναλάβετε τον έλεγχο IPv6 χωριστά.
- Ιχνηλατήστε τη διαδρομή που επιβίωσε πίσω στο αρχείο, το προφίλ ή το φίλτρο που την εγκαθιστά.
- Συνδεθείτε ξανά και εκτελέστε ξανά το ερώτημα πριν το χαρακτηρίσετε διορθωμένο.
Αν και τα επτά συμφωνούν με το προφίλ, η σήραγγα κάνει ακριβώς αυτό για το οποίο ρυθμίστηκε, και η διόρθωση ανήκει στο προφίλ και όχι σε μια μετρική.