Δύο άλματα VPN στη σειρά: ποιος βλέπει πραγματικά την κίνησή σας;
Τα σειριακά άλματα αποκρυπτογραφούν και επανακρυπτογραφούν στην πρώτη πύλη· τα ένθετα άλματα αφαιρούν μόνο το εξωτερικό στρώμα. Διαβάστε και τα δύο σχέδια και δείτε ποιος διαχειριστής διαβάζει τι.
Κάθε προφίλ πελάτη ονομάζει έναν διακομιστή, άρα από τη θέση του χρήστη υπάρχει μία σήραγγα και ένα σημείο όπου τελειώνει η προστασία. Το τι συμβαίνει μετά από αυτή την πρώτη πύλη είναι απόφαση σχεδίασης που ο πελάτης δεν βλέπει ποτέ, και τα δύο κοινά σχέδια συμπεριφέρονται πολύ διαφορετικά υπό έλεγχο. Σε σειριακή αλυσίδα η πρώτη πύλη αποκρυπτογραφεί και επανακρυπτογραφεί. Σε ένθετη αλυσίδα αφαιρεί ένα εξωτερικό στρώμα και προωθεί μια εσωτερική σήραγγα που δεν μπορεί να ανοίξει. Ο αριθμός αλμάτων είναι ίδιος και στα δύο, γι' αυτό η διαφορά πρέπει να σχεδιαστεί και όχι να μετρηθεί.
Ξεκινήστε από τον πελάτη και ονομάστε και τα δύο άκρα
Ξεκινήστε εκεί όπου ξεκινά ο χρήστης, στο προφίλ σύνδεσης. Περιέχει μία απομακρυσμένη διεύθυνση, μία μέθοδο ταυτοποίησης και, όταν το σχέδιο το υποστηρίζει, μια λίστα διαδρομών. Ονομάστε αυτή την εξωτερική σήραγγα από τον πελάτη προς την πύλη A και δώστε της διευθύνσεις παραδείγματος: η διεύθυνση σήραγγας του πελάτη 10.77.0.2, του A 10.77.0.1 και το δημόσιο τελικό σημείο του A 198.51.100.10, παρμένες από το εύρος τεκμηρίωσης TEST-NET-2 ώστε τίποτα στο παράδειγμα να μην μπορεί να συγκρουστεί με πραγματικό κεντρικό υπολογιστή.
Τίποτα σε αυτό το προφίλ δεν αναφέρει την πύλη B, και αυτό δεν είναι ελάττωμα. Το δεύτερο άλμα ανήκει στο A, και η μόνη υποχρέωση του πελάτη είναι να παραδώσει την κίνηση στο A και να δεχτεί ό,τι επιστρέψει. Το αν το A τερματίζει τη σήραγγα, την προωθεί ή ανοίγει καινούργια είναι το ερώτημα που απαντά η υπόλοιπη περιήγηση, και αυτό καθορίζει τι μπορεί να διαβάσει το A.
Σειριακά: το A αποκρυπτογραφεί και μετά επανακρυπτογραφεί
Στο σειριακό σχέδιο το A τερματίζει την κίνηση δύο φορές. Αφαιρεί την προστασία από τον πελάτη, λαμβάνει το πακέτο IP της εφαρμογής και μετά στέλνει αυτό το πακέτο μέσα από δεύτερη σήραγγα που δημιουργεί το A προς το B. Μεταξύ των δύο πράξεων το πακέτο βρίσκεται στη διαδρομή προώθησης του A ως συνηθισμένο πακέτο IP με διεύθυνση προς ιδιωτικό προορισμό.
Αυτό έχει δύο συνέπειες που αξίζει να ειπωθούν καθαρά. Το A μπορεί να εφαρμόσει πολιτική στο εσωτερικό πακέτο, με τη μορφή διαδρομών, κανόνων φιλτραρίσματος και καταγραφής πηγής και προορισμού, και το A πρέπει να κρατά δύο σύνολα διαπιστευτηρίων: ένα ως διακομιστής για τον πελάτη και ένα ως πελάτης του B. Η προστασία υπάρχει σε κάθε στιγμή, όμως το αντικείμενο που προστατεύεται αλλάζει ταυτότητα στο A.
Από αυτό δεν έπεται ότι το A διαβάζει το απλό κείμενο της εφαρμογής. Όταν ο πελάτης και η υπηρεσία χρησιμοποιούν TLS και επαληθεύουν τα πιστοποιητικά ο ένας του άλλου, το A βλέπει ροή εγγραφών TLS και όχι αναγνώσιμο αίτημα. Η επιβεβαίωση του πού τελειώνει αυτή η προστασία απαιτεί ματιά στην αλυσίδα πιστοποιητικών της υπηρεσίας, όχι στο διάγραμμα της σήραγγας.
Ένθετα: το A αφαιρεί μόνο το εξωτερικό στρώμα
Στο ένθετο σχέδιο ο πελάτης χτίζει πρώτα μια εσωτερική σήραγγα προς το B και μετά μεταφέρει αυτή τη σήραγγα μέσα στην εξωτερική προς το A. Το A αφαιρεί την εξωτερική κεφαλίδα, βρίσκει μια εσωτερική σήραγγα και την προωθεί χωρίς να κρατά τα κλειδιά της, οπότε η εσωτερική προστασία εξακολουθεί να τερματίζεται στο B.
Τότε το ανερχόμενο κανάλι του πελάτη μεταφέρει δύο στρώματα, ενώ η διαδρομή μεταξύ A και B μεταφέρει ένα. Το A βλέπει τις εξωτερικές διευθύνσεις της εσωτερικής σήραγγας, που αρκούν για να ξέρει ότι υπάρχει κίνηση και χοντρικά πού πηγαίνει, και δεν αρκούν για να διαβάσει το ωφέλιμο φορτίο. Αυτή είναι όλη η διαφορά από τη σειριακή περίπτωση, και κανένας μετρητής αλμάτων δεν τη δείχνει. Αυτό που μπορεί ακόμη να κάνει το A είναι να αρνηθεί να προωθήσει ό,τι δεν μπορεί να διαβάσει, και αυτό είναι πάντα διαθέσιμο στον διαχειριστή αυτής της πύλης.
Η ένθεση χρεώνει αυτή την ιδιότητα. Κάθε στρώμα προσθέτει επιβάρυνση κεφαλίδας, οπότε ο σχεδιασμός MTU και MSS γίνεται υποχρεωτικός και όχι απλώς τακτοποιημένος, και μια διαδρομή που δουλεύει με ένα στρώμα μπορεί να ρίχνει αθόρυβα μεγάλα πακέτα με δύο. Κάθε στρώμα χρειάζεται επίσης δική του συμπεριφορά επανασύνδεσης και keepalive, και μια αποτυχία σε ένα στρώμα μοιάζει με μερική διακοπή μέσα από το άλλο.
Σχεδιάστε τους παρατηρητές, όχι μόνο τις σήραγγες
Οι σήραγγες είναι το εύκολο μέρος του σχεδίου. Οι παρατηρητές είναι το θέμα του σχεδίου, γι' αυτό γράψτε μια γραμμή ανά οπτική γωνία και συμπληρώστε τι μπορεί πραγματικά να διαβάσει ο καθένας.
| Vantage point | Serial chain | Nested chain |
|---|---|---|
| Client's access network | Outer tunnel only | Outer tunnel only |
| Operator of A | Inner IP packet between A and B | Outer addresses of the inner tunnel, not its payload |
| Path between A and B | Second tunnel | Second tunnel |
| Operator of B | Inner packet re-originated by A | Payload after the inner layer is removed |
| Service edge | Traffic from the exit address | Traffic from the exit address |
Δύο γραμμές συγχέονται συνεχώς: ο διαχειριστής του A και ο πάροχος της σήραγγας του πελάτη. Μπορεί να είναι ένας φορέας, και ξεχωριστά ονόματα πυλών δεν τους κάνουν ανεξάρτητους. Η ανεξάρτητη ιδιοκτησία απαιτεί ξεχωριστό διοικητικό έλεγχο, ξεχωριστά διαπιστευτήρια και ξεχωριστή καταγραφή.
Τα μεταδεδομένα επιβιώνουν και στα δύο σχέδια. Ο χρονισμός, τα μεγέθη πακέτων και οι αριθμοί συνδέσεων παραμένουν παρατηρήσιμα σε κάθε άλμα, άρα δύο άλματα ανεβάζουν το κόστος συσχέτισης αντί να αφαιρούν το σήμα. Ένα σχέδιο που υπόσχεται αορατότητα πρέπει να ελεγχθεί απέναντι σε αυτή τη λίστα πριν στηριχθεί κανείς σε αυτό.
Περπατήστε τις διαδρομές αστοχίας πριν επιλέξετε
Σπάστε πράγματα επίτηδες από τον πελάτη, με τη σειρά που θα τα συναντούσε ένας χρήστης. Ξεκινήστε από τη διεπαφή και το MTU της, γιατί η ένθεση αποτυγχάνει στο μέγεθος πακέτου πολύ πριν αποτύχει στην ταυτοποίηση.
ip -4 addr show dev tun0
ip link show dev tun0 | grep mtu
ping -M do -s 1380 -c 2 10.77.1.1
Μετά επιβεβαιώστε τα τελικά σημεία προστασίας αντί να τα υποθέσετε. Ζητήστε από την υπηρεσία το πιστοποιητικό της από μέσα από όποια σήραγγα είναι ενεργή, και συγκρίνετε την αλυσίδα που βλέπει ο πελάτης με την αλυσίδα που παρουσιάζει πραγματικά η υπηρεσία. Μια πύλη που επαναϋπογράφει ή υποκλέπτει αλλάζει αυτό το πιστοποιητικό, και ο έλεγχος γίνεται ορατός με μία μόνο εντολή.
openssl s_client -connect intranet.example.com:443 -brief < /dev/null
Τελειώστε με τον πίνακα επανασύνδεσης: η σήραγγα του πελάτη πέφτει, η σήραγγα του B πέφτει, η διαδρομή μεταξύ A και B αλλάζει. Σημειώστε τι επιστρέφει και τι όχι, και αν μια εσωτερική σύνδεση πέφτει ποτέ σε διαδρομή έξω από τον προορισμένο φορέα της. Καταγράψτε τις διευθύνσεις που χρησιμοποίησε κάθε δοκιμή, γιατί η επανάληψη σε άλλο δίκτυο πρόσβασης απαντά σε άλλο ερώτημα. Επαναλάβετε και τη δοκιμή MTU μετά από κάθε επανασύνδεση, γιατί μια αλλαγμένη διαδρομή μπορεί να χαμηλώσει το χρησιμοποιήσιμο μέγεθος χωρίς να κουνηθεί ούτε μία γραμμή ρυθμίσεων.
Επιλέξτε σειριακό όταν το A πρέπει να εφαρμόσει πολιτική στο εσωτερικό πακέτο, ή όταν ο πελάτης δεν μπορεί να τρέξει δύο στοιβαγμένες σήραγγες. Επιλέξτε ένθεση όταν το εσωτερικό ωφέλιμο φορτίο πρέπει να μείνει μη αναγνώσιμο στο A. Γράψτε την επιλογή με τους παρατηρητές της και τους αριθμούς MTU της, και ο επόμενος δεν θα χρειαστεί να ξανασχεδιάσει όλη την εικόνα για να απαντήσει σε ένα ερώτημα.