Συνδέετε τη σήραγγα, ανοίγετε έναν ιδιωτικό πίνακα και το όνομα επιλύεται σε μια διεύθυνση που δεν έχετε ξαναδεί. Ή συμβαίνει το αντίθετο: το πρόγραμμα περιήγησης συνεχίζει να λειτουργεί ενώ ένα εργαλείο γραμμής εντολών ξαφνικά δεν επιλύει τίποτα. Και τα δύο αποτελέσματα προέρχονται από την ίδια αλλαγή, και οι άνθρωποι συνήθως το εξηγούν με μία φράση για το VPN που «χρησιμοποιεί το δικό του DNS», η οποία δεν είναι αρκετά ακριβής για αποσφαλμάτωση ή επαλήθευση. Σε αυτή τη φράση κρύβονται δύο ερωτήματα: ποιες αναζητήσεις υποτίθεται ότι αναλαμβάνει αυτό το προφίλ, και έστειλε πράγματι το μηχάνημά σας αυτές τις αναζητήσεις στον resolver που του δόθηκε; Το να τις κρατάτε χωριστές είναι όλη η μέθοδος, γιατί ένα τεστ που τις αναμιγνύει δίνει μια σίγουρη λάθος απάντηση και προς τις δύο κατευθύνσεις.

Γιατί ένα προφίλ παρέχει καθόλου resolver

Μέσα σε μια σήραγγα, τα ονόματα πίσω από το απομακρυσμένο άκρο συνήθως επιλύονται σε διευθύνσεις που υπάρχουν μόνο σε εκείνο το δίκτυο. Μια ιδιωτική ζώνη όπως το corp.internal δεν έχει δημόσια ανάθεση, οπότε ο resolver που την απαντά πρέπει να είναι προσβάσιμος από μέσα στη σήραγγα. Ο ίδιος μηχανισμός εξυπηρετεί και έναν δεύτερο σκοπό: όταν οι αναζητήσεις θα έφευγαν διαφορετικά μέσω του παρόχου σας, ένας resolver στην απομακρυσμένη πλευρά κρατά το ερώτημα μέσα στην κρυπτογραφημένη διαδρομή. Γι’ αυτό η διεύθυνση του διακομιστή DNS φτάνει ως μέρος της πολιτικής της σύνδεσης και όχι ως καθολική ρύθμιση που επιλέξατε μία φορά για το μηχάνημα.

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

Συγκρίνετε τα δύο σχέδια πριν συγκρίνετε απαντήσεις

Η πλήρης σήραγγα και το διαχωρισμένο DNS παράγουν αντίθετες προσδοκίες, και κανένα από τα δύο δεν είναι βλάβη. Σε πλήρη σήραγγα κάθε αναζήτηση μπορεί να μετακινηθεί στον πάροχο ή στον εταιρικό resolver, οπότε το να απαντούν τα δημόσια ονόματα διαφορετικά μετά τη σύνδεση είναι αναμενόμενο. Σε διαχωρισμένο DNS μόνο οι καταγεγραμμένοι τομείς πηγαίνουν στον ιδιωτικό resolver ενώ όλα τα άλλα παραμένουν τοπικά· στα Windows η λίστα τομέων ζει στον Name Resolution Policy Table, στο macOS στους τομείς αντιστοίχισης των ρυθμίσεων DNS, και σε έναν υπολογιστή με systemd-resolved στους τομείς δρομολόγησης ανά σύνδεσμο.

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

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

Καταγράψτε μια γραμμή βάσης με μία μόνο μεταβλητή

Αλλάξτε τη σήραγγα. Μην αλλάξετε ταυτόχρονα το όνομα, το εργαλείο ή το επίθημα αναζήτησης στο ίδιο βήμα. Διαλέξτε ένα όνομα που επιτρέπεται να ρωτήσετε, σημειώστε ποια εφαρμογή χρησιμοποιήσατε και γράψτε είτε τη διεύθυνση που επέστρεψε είτε το ακριβές σφάλμα. Στα Windows το Get-DnsClientServerAddress -AddressFamily IPv4 εκτυπώνει τους διακομιστές ανά προσαρμογέα και το Get-DnsClientNrptPolicy εκτυπώνει τις καταχωρίσεις πολιτικής· σε Linux με systemd-resolved το resolvectl status δείχνει διακομιστές DNS και τομείς δρομολόγησης ανά σύνδεσμο· στο macOS το scutil --dns εκτυπώνει τη σειρά resolver που θα ακολουθήσει πραγματικά το σύστημα.

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

Ένα ρητό ερώτημα και μια αναζήτηση εφαρμογής είναι διαφορετικά τεστ

Το να ρωτήσετε έναν συγκεκριμένο διακομιστή, με το nslookup name 10.20.0.1 ή το dig @10.20.0.1 name, αποδεικνύει ένα πράγμα: ότι ο διακομιστής που ονομάσατε απαντά όταν μπορείτε να τον φτάσετε. Παρακάμπτει εντελώς τη λογική επιλογής, οπότε δεν μπορεί να σας πει αν το σύστημα θα είχε επιλέξει αυτόν τον διακομιστή για αυτό το όνομα. Χρησιμοποιήστε το για να ελέγξετε αν ο εκχωρημένος resolver είναι προσβάσιμος, και μη το χρησιμοποιείτε για να ελέγξετε την πολιτική.

Μια αναζήτηση μέσα από τον τοπικό resolver ασκεί όντως επιλογή. Το resolvectl query name διατρέχει τους ίδιους κανόνες τομέων δρομολόγησης και αναφέρει ποιο πρωτόκολλο απάντησε, το Resolve-DnsName στα Windows περνά από τον πίνακα πολιτικής και την κρυφή μνήμη του πελάτη, και το scutil --dns δείχνει τη σειρά που θα ακολουθούσε μια αναζήτηση. Εκτελέστε και τους δύο τύπους και κρατήστε τους σε ξεχωριστές στήλες των σημειώσεών σας. Ένα επιτυχές ρητό ερώτημα δίπλα σε μια αποτυχημένη αναζήτηση εφαρμογής είναι πρόβλημα δρομολόγησης ή επιλογής, όχι resolver που αρνείται να δουλέψει.

Η κρυφή μνήμη στέκεται ανάμεσα σε εσάς και την απάντηση. Το λειτουργικό σύστημα, ο τοπικός stub resolver, το πρόγραμμα περιήγησης και η αρνητική κρυφή μνήμη κρατούν όλα αποτελέσματα, οπότε μια αναζήτηση μπορεί να πετύχει χωρίς να φύγει ούτε ένα πακέτο από το μηχάνημα. Καταγράψτε το αποτέλεσμα πριν αδειάσετε οτιδήποτε: ipconfig /flushdns, resolvectl flush-caches ή sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder στο macOS. Παραλείψτε την ευρεία επαναφορά δικτύου σε αυτό το στάδιο, γιατί καταστρέφει τα στοιχεία που ακόμη συλλέγετε.

Τι σημαίνει η διαφορά

Συγκρίνετε τις δύο γραμμές που καταγράψατε και ταξινομήστε την αλλαγή πριν αγγίξετε έστω και μία ρύθμιση.

Observation after connectMost likely causeNext step
Answer moves to a private address rangeExpected under split DNS or a private zoneConfirm the suffix is in the effective policy, then test the service
Lookup times out while connected, works after disconnectThe assigned resolver has no route from this machineProbe it with an explicit query, then re-read the policy
Internal name fails, public names workWrong namespace or a suffix missing from the policyQuery the fully qualified name and check the domain list per platform
Internal name returns a public addressSplit DNS not applied; a public resolver answeredCheck browser secure DNS first, then the per-link domain list

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

Επαναφέρετε τη γραμμή βάσης και επαληθεύστε την

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

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

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