DNS στο AWS Client VPN: χρησιμοποιήστε τον resolver του VPC, όχι το subnet
Ο resolver για ένα endpoint AWS Client VPN είναι το κύριο εύρος του VPC συν δύο, όχι κάθε subnet συν δύο. Ρυθμίστε τον, δρομολογήστε τον και μετά ελέγξτε τον client.
Το endpoint βρίσκεται στο 10.0.8.0/24, άρα ο resolver πρέπει να είναι 10.0.8.2. Αυτό είναι το σκεπτικό που ακούω συχνότερα και είναι λάθος δύο φορές. Το Route 53 Resolver απαντά στο κύριο εύρος IPv4 του VPC συν δύο, που για VPC 10.0.0.0/16 είναι 10.0.0.2, ανεξάρτητα από το subnet που χρησιμοποιεί το endpoint. Το δεύτερο λάθος είναι πιο ήσυχο: η σωστή διεύθυνση στο endpoint δεν σημαίνει ότι το λειτουργικό σύστημα του client τη ρωτά ποτέ για τίποτα. Και τα δύο λάθη δίνουν το ίδιο σύμπτωμα: η επίλυση ονομάτων δουλεύει σε μερικούς clients και αποτυγχάνει σε άλλους.
Ο μύθος ξεκινά από τη συσχέτιση του υποδικτύου
Η συσχέτιση αφορά το πού ζουν οι ελαστικές διεπαφές δικτύου για τις συνδέσεις των clients, όχι ποια διεύθυνση resolver υπάρχει. Τα subnets του endpoint δίνουν στους clients διεύθυνση μέσα στο VPC και κανένα τους δεν φέρει δικό του resolver.
Μόλις διαχωρίσετε τις δύο ιδέες, η αριθμητική παύει να είναι μυστήρια και η αντιμετώπιση προβλημάτων μεταφέρεται στον client, όπου καταλήγουν πραγματικά οι περισσότερες από αυτές τις περιπτώσεις.
Υπολογίστε τη διεύθυνση από το κύριο εύρος του VPC
Πάρτε το κύριο CIDR IPv4 του VPC και προσθέστε δύο στη διεύθυνση δικτύου. Το 10.0.0.0/16 δίνει 10.0.0.2, το 172.31.0.0/16 δίνει 172.31.0.2, και ένα VPC με δευτερεύον εύρος κρατά τον resolver στο κύριο. Ένα subnet 10.0.8.0/24 μέσα σε αυτό το VPC δεν τον μετακινεί. Γράψτε τη διεύθυνση δίπλα στο ID του VPC πριν αγγίξετε το endpoint, γιατί ο αριθμός είναι ιδιότητα του VPC και όχι της σύνδεσης.
Το VPC απαντά επίσης στη link-local διεύθυνση 169.254.169.253. Αυτή η διεύθυνση είναι προσβάσιμη από μέσα στο VPC, αλλά δεν είναι γενικός δρομολογημένος προορισμός για φορητό υπολογιστή στην άλλη άκρη μιας σήραγγας.
Άρα υπάρχουν δύο έγκυρες διευθύνσεις resolver και καμία τους δεν είναι το subnet συν δύο.
Τι κάνει και τι δεν κάνει η ρύθμιση του endpoint
Το endpoint Client VPN έχει πεδία διακομιστή DNS, και όπου η κονσόλα προσφέρει επιλογή resolver VPC συμπληρώνει την ίδια ιδέα. Η ρύθμισή τους αλλάζει τι παραδίδει η υπηρεσία στους clients κατά την εγκατάσταση της σύνδεσης. Δεν αλλάζει τι κάνει ένας μη διαχειριζόμενος client OpenVPN με αυτή την τιμή, γιατί ο client πρέπει ακόμη να την εφαρμόσει στο λειτουργικό σύστημα. Από αυτό το κενό προέρχεται το «δουλεύει στο Mac μου αλλά όχι στο μηχάνημα Linux».
Στο Linux η ενσωμάτωση του resolver ανήκει στον διαχειριστή συνδέσεων και όχι στον χρήστη. Η χειροκίνητη επεξεργασία του /etc/resolv.conf αποδεικνύει ότι η διεύθυνση δουλεύει για μία συνεδρία και μετά εξαφανίζεται στην επανασύνδεση — γι’ αυτό τόσες διορθωμένες περιπτώσεις επιστρέφουν το επόμενο πρωί.
Ελέγξτε τον ενεργό resolver στον client μετά τη σύνδεση, όχι τη σελίδα ρυθμίσεων του endpoint.
Το split tunneling μπορεί να ακυρώσει σωστό resolver
Με split tunneling χρησιμοποιούνται μόνο οι διαδρομές που σπρώχνονται στη σήραγγα. Αν η διεύθυνση του resolver δεν καλύπτεται από διαδρομή, το ερώτημα φεύγει από την τοπική διεπαφή και απαντά ο οικιακός δρομολογητής. Η διεύθυνση στο endpoint παραμένει σωστή και η αναζήτηση αποτυγχάνει. Προσθέστε τη διαδρομή για τον resolver και δοκιμάστε ξανά.
Επικαλυπτόμενα τοπικά εύρη δίνουν το ίδιο αποτέλεσμα με πιο δυσάρεστο τρόπο: το ερώτημα απαντιέται, απλώς από λάθος διακομιστή.
Μην ανοίγετε security groups για τη διεύθυνση Amazon DNS
Το ένστικτο όταν οι αναζητήσεις λήγουν είναι να προσθέσετε κανόνα που επιτρέπει UDP 53 προς τη διεύθυνση του resolver. Η AWS τεκμηριώνει ότι τα security groups και τα network ACL δεν φιλτράρουν την κίνηση Amazon DNS όπως φιλτράρουν την κίνηση προς δική σας παρουσία DNS. Το άνοιγμα αυτών των κανόνων δεν αλλάζει τίποτα για τον resolver του VPC και διευρύνει το όριο χωρίς λόγο. Ένας resolver που τρέχετε μόνοι σας είναι άλλη περίπτωση και χρειάζεται πράγματι δικούς του κανόνες.
Αν εμφανίζονται και τα δύο στον σχεδιασμό σας, ελέγξτε σε ποιο δείχνει πραγματικά ο client πριν επεξεργαστείτε οποιονδήποτε κανόνα.
Επαληθεύστε τη διαδρομή και μετά μετρήστε κάτι άλλο
Επιλύστε ένα δημόσιο όνομα, επιλύστε ένα ιδιωτικό όνομα καταχωρισμένο σε ιδιωτική φιλοξενούμενη ζώνη συσχετισμένη με το VPC και διαβάστε τον ενεργό resolver του client ανάμεσά τους. Αυτή η σειρά χωρίζει το «η διεύθυνση του resolver είναι λάθος» από το «η ζώνη δεν είναι συσχετισμένη» και από το «ο client αγνόησε τη ρύθμιση». Καθένα έχει διαφορετική διόρθωση και κανένα δεν είναι πρόβλημα ρυθμαπόδοσης.
Μια επιτυχημένη αναζήτηση δεν λέει τίποτα για σταθερή ταχύτητα μεταφοράς, οπότε κρατήστε τις δύο συζητήσεις χωριστά όταν αναφέρετε.