AWS Client VPN ή bastion για πρόσβαση σε VPC με peering
Και οι δύο διαδρομές δουλεύουν, αλλά σπάνε σε διαφορετικά σημεία. Συγκρίνετε διαδρομές endpoint, δρομολόγηση επιστροφής και τις τρεις περιπτώσεις όπου το bastion είναι το ειλικρινές όριο.
Ένα endpoint Client VPN μπορεί να φτάσει σε VPC που έχει peering με το συσχετισμένο VPC του, και δεν χρειάζεστε bastion για να το κάνετε νόμιμο. Η επιλογή που αξίζει είναι πού αλλάζει χέρια η κίνηση: ένα itinero endpoint που προσγειώνεται στο υποδίκτυο συσχέτισης και περνά τη σύνδεση peering, ή ένας host στο VPC με peering που τερματίζει τη συνεδρία. Και οι δύο διαδρομές δουλεύουν και αποτυγχάνουν σε διαφορετικά σημεία, οπότε η απόφαση αφορά την ιδιοκτησία και τον έλεγχο, όχι το τι επιτρέπει το AWS. Δείτε πώς επιλέγω μεταξύ τους και τις τέσσερις εγγραφές που κάνουν τη δρομολογημένη διαδρομή να περάσει.
Δύο διαδρομές, ένα endpoint, διαφορετικοί ιδιοκτήτες
Στη δρομολογημένη διαδρομή η κίνηση του πελάτη φτάνει στο endpoint, μεταφράζεται στη διεύθυνση της διεπαφής δικτύου Client VPN στο υποδίκτυο συσχέτισης και φεύγει από αυτό το υποδίκτυο μέσω της σύνδεσης peering από A σε B. Το VPC B δεν τερματίζει καμία συνεδρία VPN· βλέπει συνηθισμένη κίνηση από το VPC A, γι' αυτό η διαδρομή επιστροφής του δείχνει στο VPC A και όχι στο pool πελατών.
Στη διαδρομή με bastion ο πελάτης φτάνει πρώτα σε host. Ένα bastion στο A αφήνει ακόμη το τελευταίο άλμα να περνά τη σύνδεση peering, άρα κρατάτε τη δουλειά peering και προσθέτετε συνεδρία. Ένα bastion στο B χρειάζεται επίσης διαδρομή από τον πελάτη, και όταν αυτή η διαδρομή είναι το ίδιο itinero endpoint, έχετε τον δρομολογημένο σχεδιασμό συν ένα άλμα. Το bastion αφαιρεί δουλειά μόνο όταν υπάρχει ήδη, έχει ήδη έγκριση, και το πράγμα πίσω του χρειάζεται όριο συνεδρίας και όχι όριο δικτύου.
Τέσσερις εγγραφές κάνουν τη δρομολογημένη διαδρομή να δουλέψει
Το AWS τεκμηριώνει αυτό το σενάριο στη σελίδα Client VPN how-it-works, και στην πράξη καταλήγει σε τέσσερις εγγραφές που ανήκουν σε δύο ή τρεις ομάδες. Τα εύρη είναι ενδεικτικά· το εύρος με peering πρέπει να είναι μοναδικό και το εύρος επιστροφής πρέπει να ταιριάζει με το σχέδιό σας.
| Control | What it must say |
|---|---|
| Endpoint route | 10.70.0.0/16 targets the association subnet |
| Authorization rule | The approved group may reach 10.70.0.0/16 |
| VPC A association-subnet table | 10.70.0.0/16 targets the peering connection |
| VPC B resource-subnet table | VPC A's range targets the same peering connection |
Διαδρομή και άδεια είναι ξεχωριστοί έλεγχοι. Σωστό itinero endpoint χωρίς αντίστοιχο κανόνα εξουσιοδότησης δεν δίνει τίποτα στον πελάτη· κανόνας εξουσιοδότησης για προορισμό που το endpoint δεν μπορεί να δρομολογήσει του δίνει μια μαύρη τρύπα. Και τα δύο πρέπει να ονομάζουν το ίδιο εύρος.
Το itinero endpoint δείχνει σε υποδίκτυο του δικού του VPC, ποτέ στη σύνδεση peering. Οι πίνακες δρομολόγησης του VPC δείχνουν στη σύνδεση peering, ποτέ σε instance ή διεπαφή. Η αντιγραφή μιας τιμής μεταξύ των δύο αποθηκεύεται χωρίς παράπονο και δεν δρομολογεί τίποτα.
Επειδή το υποδίκτυο συσχέτισης μεταφράζει την πηγή του πελάτη, το B πρέπει να δρομολογεί πίσω στο VPC A, όχι στο pool πελατών. Η αποστολή του εύρους πελατών μέσω της σύνδεσης peering φαίνεται συμμετρική, περνά την ανασκόπηση και αποτυγχάνει σιωπηλά, γιατί το B δεν βλέπει ποτέ πακέτο με πηγή πελάτη.
Ομάδες ασφαλείας και το τελευταίο μέτρο άδειας
Η δρομολόγηση βάζει πακέτα στο B· το B αποφασίζει ακόμη. Για ενεργή σύνδεση peering στην ίδια περιοχή, μια ομάδα ασφαλείας στο B μπορεί να αναφέρεται στην ομάδα που εφαρμόζεται στη συσχέτιση Client VPN, κρατώντας τον κανόνα στενό και ανθεκτικό σε αλλαγές διευθύνσεων. Όπου η αναφορά ομάδας δεν είναι εφικτή, επιτρέψτε ρητά το εύρος του υποδικτύου συσχέτισης αντί να το διευρύνετε σε 0.0.0.0/0, που μετατρέπει ένα σφάλμα δρομολόγησης σε ανεξήγητο timeout.
Έπειτα ελέγξτε τι δεν αγγίζει ποτέ η δρομολόγηση: τα ACL δικτύου και στα δύο υποδίκτυα, τη λίστα επιτρεπόμενων της εφαρμογής ή το κοινό του token, και το DNS. Το peering δεν αντιγράφει ιδιωτικές hosted ζώνες, οπότε το laptop μπορεί να κρατά λειτουργική διαδρομή σε διεύθυνση που δεν μπορεί να επιλύσει, και μια σύνδεση peering δεν προσθέτει εμπιστοσύνη σε πιστοποιητικό. Στρέψτε το endpoint σε resolver που απαντά για το B και μετά επιβεβαιώστε ότι το ιδιωτικό όνομα και το πιστοποιητικό ταιριάζουν.
Πότε το bastion είναι η ειλικρινής απάντηση
Κρατώ τρεις σκανδάλες για σκόπιμη επιλογή bastion. Το VPC με peering ανήκει σε ομάδα που δεν θα προσθέσει διαδρομή επιστροφής για το εύρος σας ή δεν θα δεχτεί αναφορά ομάδας. Η πρόσβαση πρέπει να εγκρίνεται ή να καταγράφεται ανά συνεδρία και η εφαρμογή δεν μπορεί να το σηκώσει μόνη της. Ή το τελευταίο άλμα πρέπει να μείνει μέσα στο B, γιατί η υπηρεσία επιλύεται μόνο εκεί και η ταυτότητα TLS της είναι καρφωμένη σε εσωτερικό όνομα.
Κανένα από αυτά δεν παρακάμπτει το ότι το peering δεν είναι μεταβατικό. Η μη μεταβατικότητα περιορίζει το τι επιτρέπεται στους πόρους στο B: δεν μπορούν να χρησιμοποιήσουν το A ως transit σε τρίτο VPC με το οποίο το A έχει peering. Ποτέ δεν σήμαινε ότι χρήστης VPN δεν μπορεί να φτάσει απευθείας σε VPC με peering, και ένα bastion χτισμένο για να παρακάμψει αυτή την εσφαλμένη ανάγνωση είναι host για patch χωρίς λόγο.
Το αντίστροφο λάθος κοστίζει περισσότερο με τον χρόνο: περάστε κάθε ομάδα από το ένα bastion που υπάρχει ήδη, και μετά ανακαλύψτε ότι η ομάδα ασφαλείας, ο πίνακας δρομολόγησης και το παράθυρο patch του είναι η εξάρτηση παραγωγής. Γράψτε ποια σκανδάλη εξυπηρετεί ο host και αποσύρετέ τον όταν η σκανδάλη φύγει.
Το Transit Gateway και πολλαπλές συσχετίσεις αλλάζουν την αριθμητική
Αν το endpoint είναι συνδεδεμένο απευθείας σε Transit Gateway αντί σε υποδίκτυο, το μοντέλο αλλάζει: οι πελάτες δεν μεταφράζονται πλέον σε διεύθυνση διεπαφής σε υποδίκτυο συσχέτισης, και οι πίνακες δρομολόγησης της πύλης πρέπει να φέρουν το εύρος πελατών συν τη σύνδεση που οδηγεί στο VPC με peering. Αυτό είναι καθαρότερο σε κλίμακα, αλλά η δουλειά μετακινείται από τέσσερις εγγραφές στους πίνακες δρομολόγησης της πύλης.
Πολλαπλές συσχετίσεις πολλαπλασιάζουν τους ελέγχους. Το itinero endpoint ανήκει στο endpoint, όμως κάθε υποδίκτυο συσχέτισης χρειάζεται πίνακα δρομολόγησης με πραγματικό επόμενο άλμα peering. Μια συνεδρία μπορεί να πετύχει μέσω μιας συσχέτισης ενώ μια άλλη δεν έχει διαδρομή επιστροφής, γι' αυτό δοκιμάστε την καθεμία.
Σειρά επαλήθευσης που βρίσκει γρήγορα το σπάσιμο
Εκτελέστε τις με σειρά· κάθε βήμα μπορεί να περνά ενώ το επόμενο αποτυγχάνει, και ένα timeout πελάτη σχεδόν ποτέ δεν λέει ποιο έσπασε.
- Επιλύστε το όνομα της εφαρμογής από τον πελάτη και ελέγξτε ότι η διεύθυνση είναι μέσα στο εύρος με peering.
- Συνδεθείτε και μετά διαβάστε το αρχείο καταγραφής συνδέσεων του endpoint για τη συσχέτιση που τερμάτισε τη συνεδρία.
- Σε αυτό το υποδίκτυο συσχέτισης, επιβεβαιώστε ότι ο πίνακας δρομολόγησης δείχνει το εύρος με peering σε ενεργή σύνδεση peering.
- Στο υποδίκτυο πόρων στο B, επιβεβαιώστε καταχώριση επιστροφής για το εύρος της διεπαφής και αντίστοιχους κανόνες ομάδας.
- Δοκιμάστε μία επιτρεπόμενη λειτουργία και έναν πόρο που πρέπει να μείνει μη προσβάσιμος· το δεύτερο πιάνει υπολείμματα debugging.
- Επανασυνδεθείτε μετά από οποιαδήποτε αλλαγή διαδρομής split-tunnel, γιατί ένα ενεργό tunnel δεν θα πάρει νέο σύνολο διαδρομών.
Δύο συμπτώματα αξίζει να θυμάστε. Ένα SYN που φτάνει στο B χωρίς απάντηση είναι σχεδόν πάντα η διαδρομή επιστροφής που λείπει. Μια σύνδεση που ολοκληρώνεται και μετά επαναφέρεται είναι συνήθως η ομάδα, το ACL ή η εφαρμογή. Κανένα δεν εμφανίζεται στο αρχείο του endpoint ως αιτία, γι' αυτό κρατήστε τις τέσσερις εγγραφές με ιδιοκτήτη δίπλα στην καθεμία.
Αν καμία από τις τρεις σκανδάλες δεν ισχύει, ολοκληρώστε τη δρομολογημένη διαδρομή και καταγράψτε αυτές τις τέσσερις εγγραφές. Αν ισχύει μία, κρατήστε το bastion μόνο για εκείνο το όριο και αφήστε το itinero endpoint για υπηρεσίες που δεν χρειάζονται συνεδρία μπροστά τους.