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

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

Ο πελάτης εγκαθιστά κανόνες, ο πυρήνας κάνει την επιλογή

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

Γι' αυτό ένα διαχωρισμένο τούνελ μπορεί να φαίνεται αυθαίρετο. Δύο προορισμοί σε μία εφαρμογή μπορεί να ακολουθήσουν διαφορετικές διαδρομές μόνο και μόνο επειδή το ένα πρόθεμα είναι στενότερο από το άλλο.

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

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

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

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

Το DNS και ο διακόπτης ασφαλείας ακολουθούν τους δικούς τους κανόνες

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

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

Ελέγξτε τον διαχωρισμό και από τις δύο πλευρές

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

ip route get 203.0.113.10
ip route get 198.51.100.25
resolvectl query intranet.example.com
curl -s --interface tun0 https://example.com -o /dev/null -w '%{http_code}\n'

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

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

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