Τα περισσότερα πλήρη τούνελ στέλνουν κάθε πακέτο μέσω του VPN και η οδηγία redirect-gateway το κάνει εφικτό. Ένας μεμονωμένος προορισμός μπορεί παρ' όλα αυτά να εξαιρεθεί. Η προσθήκη διαδρομής κεντρικού υπολογιστή για αυτή τη διεύθυνση με το σύμβολο θέσης net_gateway λέει στον πελάτη να φτάσει εκεί μέσω της αρχικής πύλης του μηχανήματος, ενώ όλα τα υπόλοιπα συνεχίζουν να χρησιμοποιούν τη σήραγγα.

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

Τι ονομάζει στην πραγματικότητα το net_gateway

Η καταχώριση προφίλ για αυτήν την εξαίρεση είναι μία γραμμή: route 198.51.100.77 255.255.255.255 net_gateway. Η πρώτη διεύθυνση είναι σύμβολο τεκμηρίωσης για τον προορισμό, η μάσκα τη μετατρέπει σε διαδρομή ενός κεντρικού υπολογιστή και το τελευταίο διακριτικό ονομάζει το σύμβολο της πύλης. Το OpenVPN επιλύει τα σύμβολα πύλης όταν εγκαθιστά διαδρομές. Το vpn_gateway σημαίνει την ίδια την πύλη της σήραγγας, την απέναντι πλευρά του συνδέσμου VPN. Το net_gateway σημαίνει την προεπιλεγμένη πύλη που είχε ο κεντρικός υπολογιστής πριν αλλάξει οτιδήποτε το VPN, που συνήθως είναι ο τοπικός δρομολογητής στο φυσικό δίκτυο.

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

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

Γιατί μια διαδρομή κεντρικού υπολογιστή νικά την προεπιλεγμένη της σήραγγας

Η δρομολόγηση αποφασίζεται από το πιο συγκεκριμένο ταιριαστό πρόθεμα. Το redirect-gateway def1 συνήθως δεν αντικαθιστά την προεπιλεγμένη διαδρομή· προσθέτει δύο μισά, μια διαδρομή για το κάτω μισό του χώρου διευθύνσεων και μία για το πάνω μισό, ώστε η αρχική προεπιλεγμένη διαδρομή να διατηρείται για άλλες χρήσεις. Αυτά τα μισά είναι ευρύτερα από μία διεύθυνση.

Μια διαδρομή για μία διεύθυνση με μάσκα 255.255.255.255 είναι μια /32, όσο συγκεκριμένη μπορεί να γίνει στο IPv4. Όταν αξιολογείται ένα πακέτο για αυτή τη διεύθυνση, η /32 ταιριάζει και κερδίζει ανεξάρτητα από το ποια διαδρομή εγκαταστάθηκε πρώτη. Αυτός είναι ο μηχανισμός πίσω από την εξαίρεση, και λειτουργεί το ίδιο σε Linux, macOS και Windows εφόσον η διαδρομή υπάρχει πράγματι.

Τα Windows προσθέτουν μια δεύτερη διάσταση. Όταν δύο διαδρομές είναι εξίσου συγκεκριμένες, κερδίζει αυτή με τη χαμηλότερη μετρική, και ένας προσαρμογέας VPN μπορεί να φέρει μετρική διεπαφής που αλλάζει το αποτέλεσμα. Η /32 παραμένει πιο συγκεκριμένη από τα μισά, οπότε η εξαίρεση συνήθως ισχύει, αλλά μια παλιά διαδρομή από προηγούμενη συνεδρία μπορεί να δώσει μπερδεμένο αποτέλεσμα αν είναι εξίσου συγκεκριμένη.

Τι δεν καλύπτει η εξαίρεση

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

Το IPv6 είναι το δεύτερο. Η οδηγία διαδρομής χειρίζεται μόνο IPv4. Ένας προορισμός διπλής στοίβας μπορεί να προτιμήσει IPv6, που ακολουθεί τη σήραγγα ή την προεπιλεγμένη διαδρομή IPv6 του κεντρικού υπολογιστή ανάλογα με την πολιτική, οπότε η εξαίρεση IPv4 δεν ενεργοποιείται ποτέ. Χρειάζεστε αντίστοιχη διαδρομή IPv6 ή συνειδητή απόφαση να απενεργοποιήσετε το IPv6 για αυτόν τον πελάτη.

Το εύρος εφαρμογών είναι το τρίτο. Ο κανόνας βασίζεται στον προορισμό, οπότε κάθε διεργασία που συνδέεται με αυτή τη διεύθυνση χρησιμοποιεί την άμεση διαδρομή, είτε είναι αυτή που είχατε κατά νου είτε όχι. Αντίστροφα, ένας ιστότοπος μπορεί να απαντά από πολλές διευθύνσεις, οπότε η εξαίρεση μιας /32 δεν εξαιρεί τον ιστότοπο. Αν η πραγματική απαίτηση είναι δρομολόγηση ανά εφαρμογή, ο πίνακας διαδρομών του πελάτη Community είναι το λάθος εργαλείο.

Έλεγχος της εξαίρεσης χωρίς να ξεγελάσετε τον εαυτό σας

Ξεκινήστε από την εγκατεστημένη διαδρομή, όχι από ένα πρόγραμμα περιήγησης. Στο Linux, ρωτήστε τον πυρήνα ποια διαδρομή και ποιο επόμενο άλμα θα χρησιμοποιήσει για τη συγκεκριμένη διεύθυνση· στα Windows, διαβάστε τον πίνακα διαδρομών για αυτή τη /32. Επιβεβαιώστε ότι η πύλη είναι η φυσική και όχι η σήραγγα. Αν η καταχώριση λείπει, το προφίλ δεν εφαρμόστηκε ή ο πελάτης δεν είχε το δικαίωμα να αλλάξει διαδρομές.

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

Τέλος, ελέγξτε τους μηχανισμούς που μπορούν να υπερισχύσουν της διαδρομής. Ένας διακόπτης ασφαλείας στην πλευρά του πελάτη ή μια ρύθμιση block-outside-dns των Windows μπορεί να απαγορεύσει την άμεση κίνηση, και αυτό εμφανίζεται ως σύνδεση που αποτυγχάνει παρόλο που η διαδρομή είναι σωστή. Μην απενεργοποιείτε αυτούς τους μηχανισμούς για να φαίνεται ότι λειτουργεί η εξαίρεση· αν η πολιτική απαγορεύει την άμεση διαδρομή, η εξαίρεση είναι πρόβλημα σχεδιασμού για όποιον κατέχει την υπηρεσία VPN.

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

Σχετικά άρθρα