Η καταγραφή δύο επιλυτών σε έναν προσαρμογέα μοιάζει με τρόπο αποστολής ενός τομέα σε έναν διακομιστή και άλλου τομέα στον δεύτερο, και τίποτα στη λίστα επιλυτών δεν λειτουργεί έτσι. Τα Windows επιλύουν με βάση το όνομα, και η απόφαση για το ποιον διακομιστή θα ρωτήσουν προέρχεται από αντικείμενα πολιτικής και όχι από μια διατεταγμένη λίστα διευθύνσεων. Το νοητικό μοντέλο που πρέπει να αντικατασταθεί είναι η ουρά: δεν υπάρχει πρώτος διακομιστής για τον τομέα A και δεύτερος διακομιστής για τον τομέα B. Υπάρχει ένα σύνολο κανόνων ανά χώρο ονομάτων που ονομάζει ρητά τους διακομιστές, και μόλις υπάρξουν αυτοί οι κανόνες, η λίστα του προσαρμογέα παύει να έχει ενδιαφέρον.

Ο μύθος: δύο διευθύνσεις χωρίζουν δύο τομείς

Η πεποίθηση επιβιώνει επειδή λειτουργεί κατά τύχη όταν ένας διακομιστής απαντά σε όλα και ο δεύτερος είναι μόνο εφεδρικός. Ένας πελάτης ρωτά τον πρώτο διακομιστή, εκείνος προωθεί ή κάνει αναδρομή, και η απάντηση φτάνει· κανείς δεν προσέχει ποιος επιλυτής κατείχε στην πραγματικότητα τη ζώνη. Η ψευδαίσθηση σπάει τη στιγμή που οι δύο χώροι ονομάτων ζουν σε ξεχωριστές ιδιωτικές ζώνες χωρίς προώθηση μεταξύ τους, γιατί τότε ο πρώτος διακομιστής απαντά με εξουσία ότι το όνομα δεν υπάρχει. Μια αρνητική απάντηση από τον πρώτο διακομιστή δεν ενεργοποιεί την εφεδρεία, αφού ο πελάτης έλαβε οριστική απάντηση και όχι αποτυχία.

Μια διατεταγμένη λίστα δεν έχει έννοια τομέα, οπότε δεν μπορεί να εκφράσει την πρόθεση. Αυτό που ελέγχει πραγματικά η λίστα είναι ποιος διακομιστής ρωτιέται πρώτος και ποιος δοκιμάζεται δεύτερος, και οι δύο απαντήσεις ισχύουν εξίσου για κάθε όνομα.

Τι χρησιμοποιούν στην πραγματικότητα τα Windows για να επιλέξουν

Ο Πίνακας Πολιτικής Επίλυσης Ονομάτων αντιστοιχίζει ένα όνομα με διαμορφωμένους χώρους ονομάτων και επιλέγει τους διακομιστές και τις επιλογές για αυτή την αντιστοίχιση. Οι κανόνες μπορούν να διαμορφωθούν τοπικά, να παραδοθούν μέσω Πολιτικής Ομάδας ή να παρέχονται από προφίλ VPN, και η ενεργή πολιτική είναι συνδυασμός και όχι μία λίστα. Γι' αυτό η πρώτη διάγνωση είναι πάντα η ενεργή κατάσταση: ένας τοπικά δημιουργημένος κανόνας που χάνει από μια διαχειριζόμενη πολιτική παράγει ένα εργαστήριο που δεν συμπεριφέρεται καθόλου όπως υπονοεί η διαμόρφωσή του. Οι κανόνες αντιστοιχίζονται και κατά ειδικότητα, οπότε μια ευρεία καταχώριση χώρου ονομάτων μπορεί να επισκιάσει μια στενή με τρόπους αόρατους σε μια λίστα διαμορφωμένων στοιχείων. Η ανάγνωση της ενεργής σειράς είναι ο μόνος τρόπος να δει κανείς ποιος κανόνας κερδίζει.

Get-DnsClientNrptRule
Get-DnsClientNrptPolicy -Effective

Η πρώτη εντολή καταγράφει τι είναι διαμορφωμένο στον υπολογιστή· η δεύτερη δείχνει τι θα εφαρμόσει πραγματικά ο πελάτης, συμπεριλαμβανομένων καταχωρίσεων που ήρθαν από αλλού. Αν η ενεργή έξοδος περιέχει διαχειριζόμενους χώρους ονομάτων, ο κάτοχος αυτής της πολιτικής είναι το σωστό σημείο για να ζητηθεί η αλλαγή, όχι η τοπική λίστα κανόνων. Και οι δύο εντολές διαβάζουν μόνο κατάσταση, οπότε η εκτέλεσή τους πριν συμφωνήσει κάποιος για την αλλαγή δεν κοστίζει τίποτα.

Ένας κανόνας ανά χώρο ονομάτων, κρατήστε το αντικείμενο

Αφού γίνει κατανοητή η ενεργή κατάσταση, δημιουργήστε έναν κανόνα ανά χώρο ονομάτων και διατηρήστε το αντικείμενο που επιστρέφει κάθε εντολή. Τα ονόματα εμφάνισης είναι ετικέτες για ανθρώπους, και το μοναδικό αναγνωριστικό στο αντικείμενο που επιστρέφεται είναι ο αξιόπιστος στόχος διαγραφής στη συνέχεια. Γράψτε και τα δύο αναγνωριστικά στην ίδια σημείωση αλλαγής που καταγράφει τους χώρους ονομάτων και τους επιλυτές, γιατί η συνεδρία που τα δημιούργησε δεν θα είναι η συνεδρία που καθαρίζει.

$svcRule = Add-DnsClientNrptRule -Namespace ".svc.internal.example" -NameServers "10.60.0.53" -DisplayName "VPN lab services" -PassThru
$resRule = Add-DnsClientNrptRule -Namespace ".research.internal.example" -NameServers "10.61.0.53" -DisplayName "VPN lab research" -PassThru
$svcRule | Select-Object Name, Namespace, NameServers
$resRule | Select-Object Name, Namespace, NameServers

Η αρχική τελεία δηλώνει αντιστοίχιση καταλήγματος, οπότε ο κανόνας καλύπτει το app.svc.internal.example και οτιδήποτε άλλο κάτω από αυτό. Οι δύο διευθύνσεις εδώ ανήκουν στο δικό του σχέδιο δρομολόγησης αυτού του εργαστηρίου· ένας κανόνας δεν δημιουργεί ζώνη, δεν εγκαθιστά διαδρομή και δεν εξουσιοδοτεί την εφαρμογή που τελικά συνδέεται, και η αναφορά του Add-DnsClientNrptRule τεκμηριώνει ακριβώς ποια παράμετρος κάνει τι.

Προσέξτε τι δεν κάνουν αυτές οι εντολές: είναι για ολόκληρο τον υπολογιστή, δεν περιορίζονται σε συνεδρία VPN, και επιβιώνουν μετά το κλείσιμο του παραθύρου. Ένα εργαστήριο που το ξεχνά αφήνει πολιτική πίσω του όταν φύγει η σήραγγα.

Αποδείξτε ότι ο πελάτης επέλεξε τον διακομιστή

Το να ρωτήσεις έναν συγκεκριμένο διακομιστή αν γνωρίζει ένα όνομα αποδεικνύει ότι ο διακομιστής μπορεί να απαντήσει, κάτι που δεν είναι ο ίδιος ισχυρισμός με το ότι ο πελάτης επέλεξε αυτόν τον διακομιστή. Το τεστ που μετράει επιλύει ένα πραγματικό όνομα μέσω της συνηθισμένης διαδρομής του πελάτη και στη συνέχεια επιβεβαιώνει ποιος επιλυτής το χειρίστηκε, ιδανικά όσο η σήραγγα που παρέχει τη διαδρομή είναι ενεργή. Αν η σήραγγα είναι κάτω, ένας σωστά περιορισμένος κανόνας εξακολουθεί να δείχνει σε μη προσβάσιμο διακομιστή, που είναι πρόβλημα δρομολόγησης και όχι πολιτικής. Δοκιμάστε και τις δύο καταστάσεις ώστε να μπορούν να διακριθούν αργότερα.

Resolve-DnsName app.svc.internal.example
Resolve-DnsName build.research.internal.example
Resolve-DnsName app.svc.internal.example -DnsOnly -NoHostsFile

Προσέξτε τις αποθηκευμένες απαντήσεις από την περίοδο πριν υπάρξουν οι κανόνες, και προσέξτε τις εφαρμογές που παρακάμπτουν εντελώς τον επιλυτή του συστήματος με το δικό τους κρυπτογραφημένο DNS. Τα καταλήγματα αναζήτησης είναι άλλο ένα ξεχωριστό χαρακτηριστικό: ένας κανόνας μπορεί να επιλέξει επιλυτή για πλήρες όνομα χωρίς να μάθει στα Windows να επεκτείνουν ένα γυμνό όνομα κεντρικού υπολογιστή σε αυτόν τον χώρο ονομάτων.

Αφαιρέστε ακριβώς ό,τι δημιουργήσατε

Ο καθαρισμός είναι το σημείο όπου ένα εργαστήριο γίνεται ιστορία προειδοποίησης. Η διαγραφή κάθε κανόνα στον υπολογιστή είναι γρήγορη και αφαιρεί πολιτική από την οποία εξαρτάται κάποιος άλλος, γι' αυτό χρησιμοποιήστε τα αναγνωριστικά που καταγράφηκαν όταν δημιουργήθηκαν οι κανόνες, και ξαναδιαβάστε την ενεργή κατάσταση μετά για να επιβεβαιώσετε ότι ο υπολογιστής επέστρεψε εκεί από όπου ξεκίνησε. Αν η συνεδρία που τα δημιούργησε έχει φύγει, η σημείωση αλλαγής είναι το μόνο μέρος όπου υπάρχουν τα αναγνωριστικά. Γι' αυτό γράφονται πριν εκτελεστεί η πρώτη εντολή, όχι μετά.

Remove-DnsClientNrptRule -Name $svcRule.Name -Force
Remove-DnsClientNrptRule -Name $resRule.Name -Force
Get-DnsClientNrptPolicy -Effective

Για μια ανάπτυξη και όχι για εργαστήριο, το ζήτημα της διάρκειας ζωής μετράει όσο και ο κανόνας. Ένα προφίλ VPN μπορεί να μεταφέρει τους κανόνες χώρων ονομάτων και να επιλέξει αν θα παραμείνουν πέρα από τη σύνδεση· ένας κανόνας που παραμένει ενώ ο επιλυτής είναι μη προσβάσιμος αφήνει τους πελάτες να προτιμούν έναν νεκρό διακομιστή, και ένας κανόνας περιορισμένος στη σύνδεση εξαφανίζεται όταν φύγει η σήραγγα. Αποφασίστε ποια από αυτές τις συμπεριφορές χρειάζεται η υπηρεσία, σημειώστε ποιος κατέχει τον κανόνα, και αφήστε τον διαχωρισμό εξουσίας τεκμηριωμένο δίπλα στο προφίλ και όχι στη μνήμη κάποιου για ένα εργαστήριο.

Σχετικά άρθρα