Το OpenVPN στέλνει DNS, αλλά ο resolver μπορεί να μη το δει ποτέ
Μια τιμή DNS στο log του πελάτη δεν αποδεικνύει ότι ο resolver του λειτουργικού συστήματος τη χρησιμοποιεί. Ελέγξτε τον ιδιοκτήτη και μετά δοκιμάστε ένα εσωτερικό όνομα.
Το log του πελάτη δείχνει τον DNS διακομιστή που στάλθηκε, η σήραγγα είναι συνδεδεμένη, και ένα εσωτερικό όνομα εξακολουθεί να μη λύνεται. Τίποτα δεν είναι χαλασμένο στην ίδια την αποστολή. Η επιλογή έφτασε και ο resolver του λειτουργικού συστήματος δεν τη χρησιμοποίησε ποτέ, γιατί στους περισσότερους Unix πελάτες το OpenVPN παραδίδει την τιμή και αφήνει την εφαρμογή στην πλατφόρμα.
Το σύμπτωμα: το log δείχνει DNS και τα ονόματα ακόμη αποτυγχάνουν
OpenVPN dhcp-option μεταφέρει πληροφορίες DNS και τομέα, και ο πελάτης καταγράφει τι έλαβε. Σε ορισμένες υλοποιήσεις ο πελάτης εφαρμόζει αυτές τις ρυθμίσεις εσωτερικά· σε άλλες τις εξάγει για ένα script ενσωμάτωσης ή μια υπηρεσία δικτύου. Η γραμμή του log περιγράφει μόνο το πρώτο μισό της ιστορίας. Το δεύτερο μισό συμβαίνει κάπου που ο πελάτης δεν ελέγχει. Εκεί ζει συνήθως η αποτυχία.
Γι’ αυτό μια συνδεδεμένη σήραγγα και ένα αποτυχημένο εσωτερικό όνομα συνυπάρχουν τόσο συχνά. Η τιμή υπάρχει, ο καταναλωτής λείπει ή είναι λανθασμένα ρυθμισμένος, και ο resolver συνεχίζει ήσυχα να χρησιμοποιεί τον δημόσιο διακομιστή που χρησιμοποιούσε πριν τη σύνδεση.
Το να ληφθεί δεν σημαίνει ότι εφαρμόστηκε
Ένας πελάτης μπορεί να καταγράψει μια τιμή DNS που στάλθηκε ενώ ο resolver του συστήματος παραμένει ιδιοκτησία άλλης υπηρεσίας. Ένας φυλλομετρητής μπορεί επίσης να έχει τη δική του πολιτική κρυπτογραφημένου DNS που παρακάμπτει εντελώς τον resolver του συστήματος, κάτι που δημιουργεί την αξιομνημόνευτη κατάσταση όπου μια εφαρμογή λύνει εσωτερικά ονόματα και μια άλλη όχι.
Ελέγξτε την υποστηριζόμενη ενσωμάτωση της υλοποίησης αντί να υποθέτετε ότι κάθε Unix πελάτης ξαναγράφει το ίδιο αρχείο. Αυτή η υπόθεση είναι ο λόγος που άνθρωποι επεξεργάζονται μια διαμόρφωση resolver που τίποτα δεν διαβάζει.
Βρείτε τον ιδιοκτήτη του resolver ανά πλατφόρμα
Στα Windows ο πίνακας πολιτικής επίλυσης ονομάτων μπορεί να κατευθύνει συγκεκριμένα επιθήματα σε συγκεκριμένους διακομιστές, και ο πελάτης VPN μπορεί να εγκαθιστά κανόνες εκεί. Ελέγξτε την πολιτική, όχι μόνο τη λίστα DNS του προσαρμογέα. Στο Linux τη διαμόρφωση μπορεί να κατέχει το NetworkManager ή το systemd-resolved, και το ποιο από τα δύο την κατέχει καθορίζει τι θα διατηρήσει μια επανασύνδεση.
Διαβάστε την πραγματική κατάσταση με το εργαλείο που απαντά πραγματικά σε ερωτήματα: resolvectl query internal.example.net σε έναν host με systemd-resolved, ή το αντίστοιχο της πλατφόρμας. Στη συνέχεια συγκρίνετε αυτή την απάντηση με τον DNS διακομιστή που το log του πελάτη ισχυρίζεται ότι έστειλε.
Αποφύγετε να τρέχετε πολλές υπηρεσίες που αντικαθιστούν τις ρυθμίσεις του resolver χωρίς συντονισμό. Δύο ιδιοκτήτες παράγουν ένα αποτέλεσμα που μοιάζει διακοπτόμενο, και κάθε επανασύνδεση φαίνεται να το διορθώνει ή να το χαλάει τυχαία.
Scripts και foreign_option
Το OpenVPN εξάγει τις επιλογές που στάλθηκαν σε scripts μέσω μεταβλητών με όνομα foreign_option_N, και ένα script μπορεί να τις μετατρέψει σε εντολές resolver. Αυτή η διάταξη είναι υποστηριζόμενη ενσωμάτωση, όχι αυτόματη συμπεριφορά, και πρέπει να εγκατασταθεί και να κληθεί στον πελάτη.
Αν βασίζεστε σε ένα script, καταγράφετε την εκτέλεση και την κατάσταση εξόδου του. Ένα script που τρέχει αλλά αποτυγχάνει σιωπηλά αφήνει το ίδιο σύμπτωμα με την απουσία script, και είναι δυσκολότερο να το προσέξετε επειδή η διαμόρφωση φαίνεται πλήρης. Ελέγξτε την έξοδο του script, όχι το αρχείο του script. Ένα αρχείο που υπάρχει δεν είναι script που έτρεξε.
Δοκιμάστε το όνομα, όχι το log
Ρωτήστε από τον πελάτη ένα hostname μόνο για εσωτερική χρήση μετά τη σύνδεση, μετά ρωτήστε ένα δημόσιο όνομα, μετά ελέγξτε ποιος διακομιστής απάντησε. Σε μια λειτουργική εγκατάσταση οι δύο απαντήσεις έρχονται από διαφορετικά σημεία, και οι δύο πρέπει να ταιριάζουν με τον σχεδιασμό.
Αν το όνομα λύνεται αλλά η υπηρεσία αποτυγχάνει, προχωρήστε στην δρομολόγηση και την πρόσβαση εφαρμογών αντί να αλλάξετε ξανά το DNS. Το εγχειρίδιο του OpenVPN τεκμηριώνει το dhcp-option και το περιβάλλον script· χρησιμοποιήστε το για να επιβεβαιώσετε τι αναμένεται να εφαρμόσει ο πελάτης σας πριν επεξεργαστείτε άλλο αρχείο resolver.