Το VPN προς το VPC λειτουργεί, αλλά η διαχειριζόμενη υπηρεσία λήγει χρονικά
Το τούνελ τελειώνει στην άκρη σας, όχι στην μπροστινή πόρτα του παρόχου. Χαρακτηρίστε τον στόχο ως φιλοξενούμενο σε VM, συνδεδεμένο με VPC ή μόνο δημόσιο πριν αλλάξετε διαδρομή.
Η πρόσβαση σε μια διαχειριζόμενη βάση δεδομένων μέσω VPN συνήθως αποτυγχάνει για έναν λόγο που κανείς δεν έγραψε στο εγχειρίδιο: το τούνελ τελειώνει στην άκρη του δικτύου σας, ενώ η υπηρεσία δεν βρισκόταν ποτέ στη δική σας πλευρά. Ο πίνακας διαδρομών φαίνεται σωστός, το τούνελ αναφέρει ότι είναι ενεργό και η σύνδεση λήγει χρονικά παρόλα αυτά. Εκτελέστε τους τέσσερις ελέγχους παρακάτω με τη σειρά και σταματήστε στον πρώτο του οποίου η συνθήκη επιτυχίας δεν ισχύει, γιατί κάθε επόμενος έλεγχος προϋποθέτει ότι οι προηγούμενοι πέρασαν.
Έλεγχος πρώτος: πού ζει πραγματικά το τελικό σημείο;
Μια πύλη VPN ενώνει δύο δίκτυα των οποίων τη διευθυνσιοδότηση ελέγχετε εσείς. Μια διαχειριζόμενη υπηρεσία λειτουργεί πίσω από την δική της μπροστινή πόρτα του παρόχου, και αυτή η πόρτα παίρνει μία από τρεις μορφές ανάλογα με το προϊόν. Αν δεν ξέρετε με ποια μορφή έχετε να κάνετε, καμία ποσότητα εργασίας στα δρομολόγια δεν θα βοηθήσει, γιατί η βλάβη μπορεί να μην είναι καθόλου βλάβη δρομολόγησης.
| Shape | What it means | Pass condition |
|---|---|---|
| Software on your VM | Ordinary subnet addressing | Route and security group permit the client |
| Attached to your VPC | Private, but only inside that VPC | Endpoint associated, source allowed, route present |
| Provider-hosted, public endpoint | Optional private link, not private by default | A private endpoint exists and DNS points at it |
Τα περισσότερα χαμένα απογεύματα προέρχονται από το να παρακάμπτεται αυτή η ταξινόμηση και να πηγαίνει κανείς κατευθείαν στον πίνακα διαδρομών. Μια υπηρεσία φιλοξενούμενη από τον πάροχο με δημόσιο τελικό σημείο δεν βρίσκεται πίσω από το τούνελ σας ό,τι κι αν λέει το διάγραμμα, και μια συνδεδεμένη με VPC δεν θα εμφανιστεί ποτέ σε δημόσια απάντηση DNS.
Έλεγχος δεύτερος: μια υπηρεσία συνδεδεμένη με VPC όπως το ElastiCache
Οι κρυφές μνήμες αυτού του τύπου διευθυνσιοδοτούνται μέσα στο δικό σας VPC και δεν έχουν καθόλου ακροατή στραμμένο στο διαδίκτυο. Ένα VPN πελάτη που τερματίζει στο ίδιο VPC μπορεί να τις φτάσει, αλλά μόνο όταν συνυπάρχουν τρεις συνθήκες. Το τελικό σημείο της κρυφής μνήμης πρέπει να είναι συσχετισμένο με υποδίκτυα που βλέπει το τούνελ σας, η ομάδα ασφαλείας του πρέπει να επιτρέπει τη διεύθυνση από την οποία έρχονται οι πελάτες σας, και η πλευρά του πελάτη χρειάζεται διαδρομή που καλύπτει τα υποδίκτυα της κρυφής μνήμης.
Το συνηθισμένο λάθος είναι να θεωρείται ότι μια σύνδεση κάπου κοντά μετράει. Η σύνδεση του VPN σε άλλο VPC ή η στήριξη μόνο στο peering δεν επεκτείνει την ομάδα ασφαλείας της κρυφής μνήμης ούτε τον πίνακα διαδρομών του υποδικτύου της στους πελάτες σας. Όταν το υπάρχον τούνελ τερματίζει αλλού, ο ενδιάμεσος κεντρικός υπολογιστής ή ένας διακομιστής VPN τοποθετημένος μέσα σε εκείνο το VPC είναι η συνήθης εφεδρική λύση. Αυτή η εφεδρική λύση είναι παράκαμψη και όχι σχεδίαση, και πρέπει να επισημαίνεται ως τέτοια στο εγχειρίδιο.
Έλεγχος τρίτος: ένα τελικό σημείο PaaS με δημόσιο όνομα
Το Azure Database for PostgreSQL παρουσιάζει ένα δημόσιο όνομα διακομιστή. Δεν σας δίνει μια ιδιωτική διεύθυνση που μπορείτε να καρφιτσώσετε σε ένα αρχείο hosts και να δρομολογήσετε μέσα από πύλη. Τα τελικά σημεία υπηρεσίας εικονικού δικτύου περιορίζουν ποια υποδίκτυα μπορούν να φτάσουν έναν πόρο· δεν εξουσιοδοτούν έναν τοπικό πελάτη που φτάνει μέσω VPN.
Η απόκτηση ιδιωτικής πρόσβασης σημαίνει εισαγωγή ιδιωτικού τελικού σημείου ή σχεδίασης private link και στη συνέχεια προσθήκη ιδιωτικής ζώνης DNS ώστε το δημόσιο όνομα να απαντά με αυτό το τελικό σημείο αντί για το διαδίκτυο. Ένα VPN σε συνδυασμό με κανόνα τελικού σημείου υπηρεσίας είναι διαφορετική αρχιτεκτονική που μοιάζει ίδια μόνο σε ένα διάγραμμα. Το App Service ακολουθεί την ίδια λογική από την αντίθετη κατεύθυνση: η ενσωμάτωση VNet επιτρέπει στην εφαρμογή να κάνει εξερχόμενες κλήσεις σε ένα VNet και δεν δημιουργεί εισερχόμενη ιδιωτική διαδρομή από το τούνελ σας. Η εισερχόμενη ιδιωτική πρόσβαση απαιτεί επομένως ιδιωτικό τελικό σημείο, App Service Environment ή πύλη μπροστά από την εφαρμογή, και ποιο από αυτά μπορείτε να χρησιμοποιήσετε εξαρτάται από το πρόγραμμα.
Έλεγχος τέταρτος: προϊόντα με δική τους μπροστινή πόρτα
Το Firebase Hosting δεν μπορεί να συνδεθεί σε Cloud VPN, γιατί το επίπεδο φιλοξενίας είναι παγκόσμιο frontend και όχι κάτι μέσα στο VPC ενός έργου. Η τεκμηριωμένη εναλλακτική είναι να χτίσετε μόνοι σας το ελεγχόμενο σημείο εισόδου, με ένα instance διαμεσολαβητή ή έναν εξισορροπητή φόρτου που υποστηρίζεται από ένα bucket. Όπως και να έχει, ο ιστότοπος παύει να είναι καθαρό προϊόν φιλοξενίας και γίνεται υποδομή που πλέον λειτουργείτε εσείς. Αυτή η ανταλλαγή αξίζει να ονομαστεί πριν κάποιος υποσχεθεί ότι το τούνελ θα την καλύψει.
Το Private API Gateway βρίσκεται πιο κοντά στην πλευρά των υπηρεσιών VPC: ένα τελικό σημείο VPC τύπου interface δημοσιεύει ένα όνομα κεντρικού υπολογιστή του οποίου οι απαντήσεις είναι ιδιωτικές διευθύνσεις, και η κίνηση από τις εγκαταστάσεις σας φτάνει μέσω του τούνελ ή μιας αποκλειστικής διασύνδεσης. Το τελικό σημείο πρέπει να είναι συσχετισμένο με το API, και το πιστοποιητικό μαζί με το όνομα κεντρικού υπολογιστή πρέπει να ταιριάζουν με τον προσαρμοσμένο τομέα που χρησιμοποιούν οι καλούντες.
Τα τούνελ του Google Cloud VPN δεσμεύονται σε διευθύνσεις IP ομοτίμων, όχι σε ονόματα. Η προώθηση DNS ρυθμίζεται χωριστά, γι' αυτό ένα τούνελ μπορεί να είναι απολύτως υγιές ενώ οι αναζητήσεις στην απομακρυσμένη ιδιωτική ζώνη εξακολουθούν να αποτυγχάνουν.
Στη συνέχεια εντοπίστε τα όρια
Εκτελέστε την ίδια σύνδεση από ένα VM μέσα στο VPC. Όταν εκεί πετυχαίνει και από τον πελάτη VPN αποτυγχάνει, το κενό βρίσκεται ανάμεσα στη διαδρομή του πελάτη και στο τελικό σημείο της υπηρεσίας: μια διαδρομή, μια ομάδα ασφαλείας, μια πολιτική τελικού σημείου ή ένα όνομα. Όταν αποτυγχάνουν και οι δύο προσπάθειες, τίποτα σε εκείνο το δίκτυο δεν μπορεί να φτάσει την υπηρεσία, και το VPN δεν ήταν ποτέ το εμπόδιο.
getent hosts db.internal.example
nc -vz db.internal.example 5432
Κάντε την αναζήτηση ονόματος και τον έλεγχο θύρας χωριστά, γιατί αποτυγχάνουν για διαφορετικούς λόγους και το ζεύγος σας λέει ποιο μισό της διαδρομής είναι σπασμένο. Ένα όνομα που επιλύεται σε δημόσια διεύθυνση σας λέει ότι η ιδιωτική ζώνη DNS δεν είναι σε ισχύ.