DNS τελικού σημείου AWS Client VPN: γιατί αποτυγχάνει το καρφίτσωμα της διευθύνσεως IP
Αντικαταστήστε το όνομα του τελικού σημείου AWS Client VPN με τη διεύθυνση που επιλύσατε και η σήραγγα θα σταματήσει να λειτουργεί αργότερα. Κρατήστε το εξαγόμενο όνομα και το τυχαίο πρόθεμά του.
Την περασμένη εβδομάδα το dig +short σας έδωσε μία διεύθυνση για το όνομα του τελικού σημείου στο προφίλ σας AWS Client VPN, και η σήραγγα συνδέθηκε. Αυτή την εβδομάδα το ίδιο προφίλ μένει στο 'Connecting' στον φορητό σας, ενώ το άθικτο αντίγραφο ενός συναδέλφου εξακολουθεί να λειτουργεί. Τίποτα δεν αποκλείστηκε και το πιστοποιητικό δεν έληξε. Κάποιος αντικατέστησε το όνομα κεντρικού υπολογιστή του τελικού σημείου με εκείνη τη διεύθυνση που επιλύθηκε, και η υπηρεσία δεν απαντά πια εκεί. Το εξαγόμενο όνομα είναι το κομμάτι που είναι φτιαγμένο να επιβιώσει αυτής της αλλαγής.
Το όνομα στο προφίλ σας μπορεί να μην είναι το όνομα που ερωτάται
Τα προφίλ που εξάγονται από το Client VPN συνήθως περιέχουν το remote-random-hostname. Με αυτή την επιλογή ενεργή, ο πελάτης δημιουργεί μια εφήμερη ετικέτα, τη συνδέει με το όνομα του τελικού σημείου με μια τελεία και επιλύει το σύνθετο όνομα. Μια εγγραφή μπαλαντέρ στη ζώνη του τελικού σημείου απαντά σε οποιαδήποτε ετικέτα, γι' αυτό ένα επινοημένο πρόθεμα εξακολουθεί να επιλύεται και γι' αυτό το κόλπο μένει αόρατο όταν προσπαθείτε να αναπαράγετε το ερώτημα με το χέρι.
Έτσι, όταν επικολλάτε το όνομα του τελικού σημείου σε ένα τερματικό και παίρνετε απάντηση, έχετε επιλύσει διαφορετικό όνομα από αυτό που χρησιμοποιεί ο πελάτης κατά τη σύνδεση. Αυτή η αναντιστοιχία δεν είναι ελάττωμα που πρέπει να διορθωθεί στο προφίλ. Η ετικέτα αναδημιουργείται σκόπιμα: η επιλογή εμποδίζει τις κρυφές μνήμες να κρατούν παλιά απάντηση και δεν ταυτοποιεί ποτέ το μηχάνημά σας ή τη συνεδρία σας.
Έχω συναντήσει την περίπτωση συμβατότητας όπου ένας πελάτης αγνοεί εντελώς την επιλογή. Η AWS τεκμηριώνει τη λύση: κρατήστε το πραγματικό όνομα του τελικού σημείου και προσθέστε μπροστά μια τυχαία συμβολοσειρά και μια τελεία, αντιμετωπίζοντάς το ως μοτίβο ονομασίας και όχι ως τιμή για επικόλληση. Η εφαρμογή του σε παλιό πελάτη είναι λογική· η σκληρή κωδικοποίηση της συμβολοσειράς με πρόθεμα ως τελικό σημείο δεν είναι.
Γιατί μια αποθηκευμένη απάντηση δεν μπορεί να μείνει σωστή
Οι διευθύνσεις του τελικού σημείου του Client VPN διαχειρίζονται από την AWS και αλλάζουν με τον χρόνο, κάτι που η τεκμηρίωση βέλτιστων πρακτικών λέει ευθέως. Μια καταγεγραμμένη απάντηση είναι ένα στιγμιότυπο μιας επίλυσης. Ένα προφίλ που την κωδικοποιεί σκληρά γίνεται προφίλ στοχευμένο σε παροπλισμένο κεντρικό υπολογιστή μόλις μετακινηθεί η υπηρεσία, και η αποτυχία σπάνια μοιάζει με DNS: παίρνετε λήξη χρόνου σύνδεσης ή κολλημένη χειραψία, οπότε οι άνθρωποι κυνηγούν δρομολόγηση και πιστοποιητικά.
Η ίδια απάντηση στο /etc/hosts κληρονομεί την ίδια λήξη με ένα επιπλέον πρόβλημα. Μια εγγραφή hosts επιβιώνει από επανεκκινήσεις, επανεξαγωγές και διορθώσεις 'επανεγκατάσταση του πελάτη', οπότε η αποτυχία επιστρέφει κάθε φορά που μετακινείται η διεύθυνση. Έχω δει μία να κάθεται ακίνδυνη για εβδομάδες και μετά να βγάζει εκτός κάθε μηχάνημα που την έφερε, ενώ νέες εγκαταστάσεις συνδέονταν κανονικά. Αυτός ο διαχωρισμός, μια ομάδα να αποτυγχάνει και μια άλλη να είναι εντάξει στον ίδιο λογαριασμό, είναι το φθηνότερο στοιχείο που θα πάρετε.
Οριοθετήστε σωστά και την τυχαιοποίηση. Συμβαίνει ανά απόπειρα σύνδεσης. Μια εγκατεστημένη σήραγγα δεν επιλύει ξανά το τελικό σημείο της, δεν αλλάζει διακομιστές στα μισά της συνεδρίας και τα επιμέρους αιτήματα εφαρμογών δεν διαλέγουν το καθένα νέο κεντρικό υπολογιστή VPN. Μόνο η επόμενη απόπειρα επιλύει ξανά, γι' αυτό μια συνεδρία που δουλεύει όλο το απόγευμα δεν λέει τίποτα για το αυριανό πρωί.
Τι ελέγχει η υπηρεσία όταν ανεβαίνει η σήραγγα
Το Client VPN απαιτεί η διεύθυνση στην οποία είστε συνδεδεμένοι να ταιριάζει με διεύθυνση που επιλύθηκε για το όνομα DNS του τελικού σημείου. Αυτή η μία απαίτηση εξηγεί αρκετές αποτυχίες που φαίνονται άσχετες: μια προσαρμοσμένη εγγραφή DNS που δείχνει αλλού, ένα προσαρμοσμένο frontend που προωθεί στην πραγματική διεύθυνση του τελικού σημείου και ένα προφίλ ξαναγραμμένο σε ωμή διεύθυνση. Η AWS τεκμηριώνει τον συνδυασμό προσαρμοσμένης εγγραφής και προώθησης ως αποτυχία με πρόσφατους πελάτες της AWS. Ο έλεγχος είναι στενός· δεν είναι απόφαση ότι κάθε ψευδώνυμο απαγορεύεται.
Δεν είναι ούτε γενικός κανόνας για τα πρωτόκολλα VPN. Ένα αριθμητικό remote είναι απολύτως έγκυρο σε μια συνηθισμένη εγκατάσταση OpenVPN, και πολλές λειτουργούν έτσι. Ο περιορισμός προέρχεται από τη διαχειριζόμενη διάταξη, όχι από το πρωτόκολλο από κάτω.
Που κάνει τη χαλάρωση της επαλήθευσης πιστοποιητικών λάθος αντανακλαστικό. Αν ένα προφίλ αποτυγχάνει μετά από αλλαγή διεύθυνσης, η απενεργοποίηση της επαλήθευσης διακομιστή μετακινεί το σφάλμα αντί να διορθώνει την επίλυση ή την απαίτηση αντιστοίχισης διεύθυνσης, και αφήνει πελάτη που θα εμπιστεύεται τα πάντα. Κρατήστε το εξαγόμενο CA, την επαλήθευση διακομιστή και τις ρυθμίσεις αμοιβαίας ταυτοποίησης ακριβώς όπως ήρθαν.
Λίστες επιτρεπομένων, έξοδος και ιδιωτικό DNS είναι τρία ξεχωριστά προβλήματα
Ένας κανόνας τείχους προστασίας που πρέπει να επιτρέπει έναν προορισμό πριν συνδεθεί ο φορητός αφορά τον εξωτερικό ακροατή. Δώστε στον ιδιοκτήτη του δικτύου το όνομα του τελικού σημείου, τη μεταφορά και τη ρυθμισμένη θύρα, και μετά ρωτήστε αν ο έλεγχός τους μπορεί να ακολουθήσει τη συμπεριφορά DNS της υπηρεσίας. Ένας κανόνας που κρατά μία καταγεγραμμένη διεύθυνση είναι στιγμιότυπο με άγραφη λήξη. Αν ο έλεγχος δέχεται μόνο αμετάβλητους προορισμούς, λύστε αυτό το κενό πριν την κυκλοφορία αντί να κωδικοποιείτε ήσυχα μια απάντηση.
Ένας συνεργάτης που χρειάζεται σταθερή διεύθυνση πηγής για αιτήματα μετά την ανύψωση της σήραγγας έχει διαφορετική απαίτηση: έξοδο. Το τι βλέπει ένας ιστότοπος εξαρτάται από τη διαδρομή της εφαρμογής και την πολιτική διαχωρισμένης σήραγγας, όχι από τη διεύθυνση στην οποία συνδέθηκε ο πελάτης. Η κίνηση διαχωρισμένης σήραγγας μπορεί να μην αγγίξει ποτέ την AWS.
Το ιδιωτικό DNS μέσα στη σήραγγα είναι τρίτο επίπεδο. Ο επιλυτής που δίνεται στους πελάτες απαντά σε εσωτερικά ονόματα μετά τη σύνδεση· δεν μπορεί να επιλύσει το δημόσιο τελικό σημείο πριν υπάρξει η σήραγγα. Η αποτυχία επίλυσης του τελικού σημείου και η αποτυχία επίλυσης εσωτερικής εφαρμογής συμβαίνουν σε διαφορετικά στάδια, και η ανάμειξή τους σας στέλνει στο λάθος αρχείο καταγραφής.
Η οικογένεια διευθύνσεων ανήκει στην ίδια λίστα. Μια απάντηση IPv4 δεν λέει τίποτα για την επιτρεπόμενη διαδρομή τελικού σημείου IPv6 ή διπλής στοίβας, οπότε ένα στιγμιότυπο σε μια οικογένεια δεν είναι απόδειξη για την άλλη.
Ελέγξτε μια σύνδεση χωρίς να καρφιτσώσετε τίποτα
Ξεκινήστε από το προφίλ όπως εξήχθη και διαβάστε τι ζητά στην πραγματικότητα:
grep -nE '^remote|remote-random-hostname' profile.ovpn
dig +short cvpn-endpoint-ID.prod.clientvpn.REGION.amazonaws.com
ss -tnp | grep -E ':(443|1194)'Στη συνέχεια συγκρίνετε τρία πράγματα: το όνομα του τελικού σημείου που κρατά το προφίλ, τη διεύθυνση που αναφέρει ο πελάτης για νέα απόπειρα και το τι επιλύεται τώρα το όνομα. Ένα όνομα που επιλύεται αποδεικνύει μόνο ότι η εγγραφή απαντά· η μεταφορά και η ταυτοποίηση είναι ξεχωριστές, και το τελικό σημείο δεν χρειάζεται να απαντήσει σε ping. Το ίδιο το αρχείο καταγραφής του πελάτη είναι η μόνη πηγή για το μεσαίο στοιχείο, οπότε καταγράψτε το κατά την απόπειρα και όχι μετά.
| What you see | Usual cause | Next check |
|---|---|---|
| One machine fails, others connect | Pinned address or stale hosts entry on that machine | Diff its profile and hosts file against a working copy |
| Everyone fails at once, no config change | The endpoint address rotated | Confirm the current endpoint configuration with the account owner |
| Tunnel up, internal names fail | Client DNS policy, not endpoint resolution | Inspect the resolver pushed after connection |
Μια διεύθυνση που απαντά σήμερα είναι απόδειξη για σήμερα· το όνομα είναι αυτό που η υπηρεσία κρατά έγκυρο. Καταγράψτε την παρατήρηση, στείλτε την σε όποιον κατέχει το τελικό σημείο και αφήστε το προφίλ να δείχνει στο όνομα.
Δύο συνήθειες να εγκαταλείψετε: την απενεργοποίηση ελέγχων πιστοποιητικών για να περάσετε μια κολλημένη χειραψία και τη στοίβαξη ετικετών μπροστά από το όνομα του τελικού σημείου ελπίζοντας ότι μία θα κολλήσει. Μια ετικέτα επιλύεται μέσω της εγγραφής μπαλαντέρ ή το πρόβλημα είναι αλλού. Αν ένα σωστά ρυθμισμένο προφίλ εξακολουθεί να αποτυγχάνει, στείλτε το ακριβές ερώτημα και το συμβάν σύνδεσης, όχι μεγαλύτερο όνομα κεντρικού υπολογιστή.
Πριν το κλείσετε: το προφίλ κρατά ακόμη το εξαγόμενο όνομα του τελικού σημείου, κανένα αρχείο hosts δεν καρφιτσώνει τη διεύθυνση, το remote στο αρχείο καταγραφής του πελάτη ταιριάζει με τρέχουσα επίλυση και ο κανόνας του τείχους προστασίας ονομάζει το τελικό σημείο αντί για διεύθυνση. Αυτή είναι και η κατάσταση που παραδίδετε στον επόμενο.