Γιατί μια ιδιωτική ζώνη Route 53 επιστρέφει NXDOMAIN για δημόσια ονόματα
Μια ιδιωτική ζώνη Route 53 που ταιριάζει με το γονικό όνομα απαντά NXDOMAIN για δημόσιες εγγραφές: δείτε ποια ζώνη απάντησε και μετά επιλέξτε διαχωρισμένη προβολή ή υποτομέα.
Οι ιδιωτικές ζώνες Route 53 αντικαθιστούν την απάντηση για ένα όνομα αντί να συγχωνεύονται με τη δημόσια εγγραφή, και αυτό αιφνιδιάζει τους ανθρώπους στην χειρότερη στιγμή. Προσθέστε μία εσωτερική εγγραφή για api.example.net σε μια ιδιωτική ζώνη για example.net, συνδέστε την με ένα VPC, και κάθε άλλο όνομα κάτω από αυτό το γονικό στοιχείο πλέον απαντά μόνο από την ιδιωτική ζώνη. Ένας πελάτης που χθες μπορούσε να φτάσει στο www.example.net σήμερα λαμβάνει αρνητική απάντηση. Η παρακάτω περιήγηση ξεκινά από αυτό το αποτυχημένο ερώτημα και προχωρά προς τα έξω, στη ζώνη που το απάντησε.
Ξεκινήστε από το ερώτημα, όχι από την κονσόλα
Αναπαράγετε την αποτυχία στον πελάτη που την ανέφερε και καταγράψτε το ακριβές όνομα και τον τύπο εγγραφής. Ένα όνομα που αποτυγχάνει για A μπορεί παρόλα αυτά να επιλύεται για AAAA, και ένας περιηγητής που επαναλαμβάνει ένα προσωρινά αποθηκευμένο όνομα κρύβει ποιο από τα δύο έχει σπάσει. Εκτελέστε το ερώτημα δύο φορές: μία μέσω του resolver που χρησιμοποιεί πραγματικά ο πελάτης και μία με ιχνηλάτηση που τον παρακάμπτει.
dig +short api.example.net
dig www.example.net +noall +comments +authority
resolvectl query www.example.net
Η δεύτερη εντολή είναι η σημαντική. Η γραμμή κατάστασης και το τμήμα αρχής της ονομάζουν τη ζώνη που παρήγαγε την απάντηση, ώστε να ξεχωρίζετε μια αρνητική απάντηση από την ιδιωτική ζώνη από ένα timeout, μια φραγμένη θύρα ή έναν resolver που δεν έλαβε ποτέ το ερώτημα. resolvectl δείχνει ποιος ανώτερος διακομιστής ρωτήθηκε, και συχνά δεν είναι ο resolver που υποθέσατε ότι έστειλε το VPN.
Αν το ερώτημα με ιχνηλάτηση επιστρέφει τη δημόσια διεύθυνση ενώ το κανονικό όχι, η δημόσια εγγραφή είναι ακέραιη και απαντά η ιδιωτική προβολή. Αυτή η μία σύγκριση καθορίζει ποιο μισό της υπόλοιπης σελίδας σας αφορά.
Διαβάστε ποια ζώνη απάντησε
Μια απάντηση που φέρει NXDOMAIN με το SOA της ιδιωτικής ζώνης στο τμήμα αρχής είναι οριστική απάντηση από εκείνη τη ζώνη, όχι αποτυχημένη αναζήτηση. Ο Route 53 Resolver επέλεξε την ιδιωτική φιλοξενούμενη ζώνη επειδή το όνομα ταίριαζε, έπειτα δεν βρήκε εγγραφή του ζητούμενου τύπου, και η τεκμηριωμένη συμπεριφορά είναι να επιστρέφει την αρνητική απάντηση αντί να προωθεί την ερώτηση στο δημόσιο DNS.
Η επιλογή ακολουθεί την ειδικότητα. Με πολλαπλούς επικαλυπτόμενους ιδιωτικούς χώρους ονομάτων κερδίζει η πιο ειδική ζώνη που ταιριάζει, και ένα ευρύτερο ιδιωτικό γονικό στοιχείο δεν παίρνει δεύτερη ευκαιρία για ένα όνομα που δεν έχει η επιλεγμένη θυγατρική ζώνη. Οι κανόνες προώθησης προσθέτουν άλλο ένα επίπεδο, αφού ένας κανόνας resolver ειδικός για τομέα μπορεί να υπερισχύσει της συσχέτισης της ιδιωτικής φιλοξενούμενης ζώνης. Καταγράψτε τις συσχετίσεις και τους κανόνες πριν συμπεράνετε ότι μια ζώνη είναι κενή.
aws route53 list-hosted-zones-by-name --dns-name example.net.
aws route53 list-resource-record-sets --hosted-zone-id Z0EXAMPLEID --query "ResourceRecordSets[?Type=='A'].[Name,ResourceRecords[0].Value]"
Και οι δύο εντολές χρειάζονται διαπιστευτήρια για τον λογαριασμό που κατέχει τη ζώνη, και η δεύτερη χρειάζεται το αναγνωριστικό ζώνης από την πρώτη. Αντικαταστήστε το με το δικό σας αναγνωριστικό· το σύμβολο θέσης παραπάνω σκόπιμα δεν είναι πραγματικό.
Γιατί κερδίζει η ιδιωτική ζώνη
Η συσχέτιση είναι αυτό που κάνει τη ζώνη ορατή σε ένα VPC, και ο resolver μέσα σε αυτό το VPC την εφαρμόζει. Μια ιδιωτική ζώνη που δεν έχει συσχετιστεί με το VPC από το οποίο φτάνει η κίνηση του πελάτη δεν έχει κανένα αποτέλεσμα, ενώ μια συσχέτιση με λάθος VPC παράγει ιδιωτική απάντηση για λάθος πληθυσμό. Ελέγξτε τη λίστα συσχετίσεων πριν επεξεργαστείτε εγγραφές, γιατί μια ζώνη μπορεί να είναι σωστή και παρόλα αυτά αόρατη.
Οι επικαλυπτόμενοι χώροι ονομάτων είναι η δεύτερη πηγή σύγχυσης. Μια ιδιωτική ζώνη για example.net και μια ιδιωτική ζώνη για api.example.net ταιριάζουν και οι δύο με ένα ερώτημα API, και απαντά η πιο ειδική. Αυτό είναι χρήσιμο όταν θέλετε έναν στενό εσωτερικό χώρο ονομάτων και επικίνδυνο όταν η στενή ζώνη δεν έχει μια εγγραφή που έχει η ευρύτερη. Οι σκέψεις για τις ιδιωτικές φιλοξενούμενες ζώνες στην τεκμηρίωση του Route 53 περιγράφουν και τη συμπεριφορά διάσχισης και την προτεραιότητα των κανόνων, και αξίζει να τις διαβάσετε πριν προσθέσετε δεύτερη επικαλυπτόμενη ζώνη.
Τίποτα από αυτά δεν αλλάζει τη δημόσια ζώνη. Οι δημόσιοι resolver εξακολουθούν να απαντούν σωστά στις δημόσιες εγγραφές, και γι’ αυτό η αποτυχία μοιάζει με πρόβλημα πελάτη σε όλους έξω από το VPC.
Επιλέξτε τον χώρο ονομάτων πριν προσθέσετε εγγραφές
Αν μόνο μια νέα οικογένεια εσωτερικών υπηρεσιών χρειάζεται ιδιωτικά ονόματα, δώστε της έναν αποκλειστικό ιδιωτικό υποτομέα και αφήστε το δημόσιο γονικό στοιχείο ήσυχο. Ένα όνομα όπως internal.example.net δεν μπορεί να επισκιάσει το www.example.net, και η ακτίνα επίπτωσης μιας εγγραφής που λείπει περιορίζεται σε ονόματα που επινοήσατε για τον σκοπό. Το κόστος είναι ότι οι υπάρχουσες διευθύνσεις URL και τα πιστοποιητικά μπορεί να μην ταιριάζουν με το νέο όνομα.
Όταν δημόσιοι και ιδιωτικοί χρήστες πρέπει να κρατήσουν το ίδιο όνομα κεντρικού υπολογιστή, το DNS διαχωρισμένης προβολής είναι η υποστηριζόμενη σχεδίαση και απαιτεί να τηρείτε τις εγγραφές σε κάθε προβολή ρητά. Μια ευρεία ιδιωτική ζώνη με μία εγγραφή μέσα της δεν διατηρεί τις δημόσιες εξαρτήσεις κάτω από αυτή τη ζώνη· τις αντικαθιστά με μια ζώνη που έχει μία εγγραφή.
Καταγράψτε τα ονόματα που καλεί πραγματικά μια εφαρμογή πριν στρέψετε έναν πληθυσμό πελατών στην ιδιωτική προβολή. Οι κεντρικοί υπολογιστές σύνδεσης, οι κεντρικοί υπολογιστές στατικών πόρων, οι στόχοι ανακατεύθυνσης και τα τελικά σημεία API σπάνε πρώτα, και συνήθως είναι διάσπαρτα στις εγγραφές πολλών ομάδων.
Ακολουθήστε τη διαδρομή του resolver, μετά τη διαδρομή δικτύου
Ένας φορητός υπολογιστής βλέπει την ιδιωτική προβολή μόνο αν τα ερωτήματά του φτάνουν στον resolver που έχει τη συσχέτιση. Η επεξεργασία ενός αρχείου hosts στον διακομιστή VPN δεν δημοσιεύει τίποτα στους συνδεδεμένους πελάτες, και ένας πελάτης ρυθμισμένος με δημόσιο resolver θα συνεχίσει να λαμβάνει δημόσιες απαντήσεις όσο η σήραγγα είναι ενεργή. Επιβεβαιώστε τη διεύθυνση του resolver που έλαβε ο πελάτης και μετά επαναλάβετε το ερώτημα από τον πελάτη και όχι από τον διακομιστή.
Μόλις το όνομα επιλυθεί, δοκιμάστε τη διαδρομή προς τη διεύθυνση που επιστράφηκε ως ξεχωριστό βήμα, για παράδειγμα με ip route get προς τη διεύθυνση που επέστρεψε το ερώτημα. Μια σωστή ιδιωτική απάντηση χωρίς διαδρομή προς τη διεύθυνση είναι πρόβλημα δρομολόγησης, και μια απάντηση για εγγραφή που λείπει είναι πρόβλημα προβολής DNS· το να τα αντιμετωπίζετε ως ένα ζήτημα παράγει διορθώσεις που δεν κρατούν. Αφήστε τους ελέγχους του ονόματος κεντρικού υπολογιστή TLS και του πιστοποιητικού αμετάβλητους, γιατί μια ιδιωτική διεύθυνση αλλάζει πού πηγαίνει η σύνδεση και τίποτα σχετικά με το ποιο πιστοποιητικό είναι έγκυρο.
Ολοκληρώστε καταγράφοντας στο σημείωμα αλλαγής τη ζώνη, τη συσχέτιση, τον resolver και τα ονόματα που επαληθεύσατε. Έτσι το επόμενο άτομο που θα προσθέσει εγγραφή θα ξέρει ποιος χώρος ονομάτων είναι αρμόδιος για αυτόν τον πληθυσμό πελατών.