Ο φορητός σας υπολογιστής επιλύει το intranet.corp μέσω της σήραγγας, ενώ το gitlab.com συνεχίζει να πηγαίνει στον επιλυτή του παρόχου, και αυτή είναι η διάταξη που λειτουργεί όπως σχεδιάστηκε. Δύο ξεχωριστές αποφάσεις το δημιούργησαν: ένας κανόνας αντιστοίχισης ονόματος διάλεξε τον επιλυτή και μια διαδρομή έφερε πίσω την απάντηση. Σπάστε οποιοδήποτε από τα δύο και το πρόγραμμα περιήγησης δείχνει αποτυχία που από έξω φαίνεται ίδια. Οι περισσότερες αναφορές για διαιρεμένο DNS περιγράφουν τη δεύτερη αποτυχία, ενώ παραθέτουν στοιχεία για την πρώτη.

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

Δύο αποφάσεις κρυμμένες σε ένα αίτημα

Το μισό του ονόματος είναι αντικείμενο πολιτικής, όχι διαδρομή. Στα Windows είναι πολιτική επίλυσης ονομάτων στο προφίλ VPN· στις πλατφόρμες Apple ένα σύνολο τομέων αντιστοίχισης σε αντικείμενο ρυθμίσεων DNS· στο Linux ένας τομέας δρομολόγησης, μια γραμμή διαιρεμένου επιλυτή ή η σειρά εναλλαγής της υπηρεσίας ονομάτων. Το μισό της διαδρομής είναι συνηθισμένη δρομολόγηση, εγκατεστημένη από τη σήραγγα ή με το χέρι, και δεν έχει ιδέα τι είναι όνομα κεντρικού υπολογιστή. Ένα προφίλ που δέχεται κατάληξη αποφασίζει μόνο ποιος απαντά· δεν κάνει ποτέ την απάντηση προσβάσιμη.

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

Πώς κάθε πλατφόρμα εκφράζει τον ίδιο κανόνα ονόματος

Η πρόθεση είναι ίδια και τα ονόματα πεδίων δεν είναι. Ένα παράδειγμα αντιγραμμένο από έναν πελάτη σε άλλον αναλύεται καθαρά και δεν ταιριάζει ποτέ. Οι τρεις μορφές μοιάζουν έτσι:

PlatformWhere the rule livesWhat usually breaks
Windowsname-resolution policy on the VPN profileprecedence against the interface suffix list
Apple platformsmatch domains on the DNS settings objectdomains attached to the wrong extension
Linuxrouting domain, split resolver, nsswitch orderthe suffix written the wrong way round

Ένας τομέας αντιστοίχισης ή δρομολόγησης είναι τεστ καταλήξεως, άρα το intranet.corp καλύπτει το git.intranet.corp και δεν καλύπτει το corp.intranet, και η αντιστροφή του είναι το συνηθέστερο λάθος σε όλη τη ρύθμιση. Τα Windows μεταφέρουν την αντιστοίχιση ως πολιτική επίλυσης ονομάτων συνδεδεμένη με το προφίλ, με δική της σειρά προτεραιότητας έναντι οποιασδήποτε λίστας καταλήξεων είχε ήδη η διεπαφή. Οι πλατφόρμες Apple συνδέουν τους τομείς αντιστοίχισης με το αντικείμενο ρυθμίσεων DNS της επέκτασης δικτύου, και το σύστημα τους εφαρμόζει ανά περιορισμένο επιλυτή. Καμία από αυτές τις μορφές δεν είναι διαδρομή και καμία δεν μπορεί να κάνει μια μη προσβάσιμη διεύθυνση προσβάσιμη. Η αναφορά πολιτική επίλυσης ονομάτων των Windows απαριθμεί τα ονόματα πεδίων και τους κανόνες προτεραιότητας για αυτή την πλατφόρμα, και δεν είναι αυτοί που χρησιμοποιούν τα έγγραφα της Apple ή του systemd.

Μια σωστή απάντηση χρειάζεται ακόμη διαδρομή

Η απάντηση ενός επιλυτή είναι μόνο μια διεύθυνση, και η εφαρμογή πρέπει ακόμη να φτάσει εκεί. Ένας σχεδιασμός διαιρεμένης σήραγγας συχνά σπρώχνει το 10.20.0.0/16 και κρατά την προεπιλεγμένη διαδρομή, οπότε το εσωτερικό όνομα επιλύεται και η σύνδεση μετά κολλάει. Η αντίθετη περίπτωση είναι εξίσου συνηθισμένη: η διαδρομή υπάρχει, ένας δημόσιος επιλυτής απαντά στο ιδιωτικό όνομα με NXDOMAIN και η αποτυχία καταχωρείται ως πρόβλημα δρομολόγησης. Το να δοκιμάσεις πρώτα τη διαδρομή σε αφήνει να κοιτάς διαδρομές για ένα όνομα που ποτέ δεν επρόκειτο να επιλυθεί.

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

Δοκιμή ονομάτων και διαδρομών με σταθερή σειρά

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

resolvectl query intranet.corp
resolvectl domain
ip route get 10.20.5.10

Ένας πελάτης Windows κάνει τις ίδιες δύο ερωτήσεις με διαφορετικά cmdlet. Το δεύτερο αναφέρει τη διεπαφή που θα χρησιμοποιούσε πραγματικά το σύστημα:

Resolve-DnsName intranet.corp -Type A
Find-NetRoute -RemoteIPAddress 10.20.5.10

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

Πού συνήθως πάει στραβά η σύγκριση

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

Ένα πρόγραμμα περιήγησης με δικό του ασφαλές DNS μπορεί επίσης να παρακάμψει τον κανόνα του συστήματος, γι' αυτό το ότι ένα πρόγραμμα αποτυγχάνει ενώ ένα άλλο πετυχαίνει δεν είναι αντίφαση. Συγκρίνετε τον επιλυτή που απάντησε, όχι το πρόγραμμα που παραπονέθηκε.

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

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