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

Έλεγχος πρώτος: πώς ξεκινά η σύνδεση

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

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

Σημειώστε τον ιδιοκτήτη πριν συνεχίσετε. Κάθε επόμενος έλεγχος εξαρτάται από αυτόν.

Έλεγχος δεύτερος: τι κρατά στην πραγματικότητα ο σύνδεσμος του resolver

Σε έναν κεντρικό υπολογιστή με systemd-resolved, το resolvectl status απαριθμεί κάθε σύνδεσμο με τους διακομιστές DNS και τους τομείς του. Βρείτε τον σύνδεσμο του τούνελ και διαβάστε τις καταχωρίσεις του, και μην υποθέσετε ότι η διεπαφή ονομάζεται tun0, γιατί η αρίθμηση ακολουθεί τη σειρά δημιουργίας. Αν η διεύθυνση που στάλθηκε λείπει από τον σύνδεσμο, απέτυχε η παράδοση και όχι το ερώτημα.

Αν η διεύθυνση υπάρχει, το επόμενο ερώτημα είναι ποιους τομείς διεκδικεί αυτός ο σύνδεσμος. Ένας σύνδεσμος χωρίς λίστα τομέων απαντά μόνο σε ονόματα για τα οποία ρωτιέται άμεσα, και αυτό σπάνια είναι αυτό που θέλει μια εγκατάσταση split-DNS. Η διεύθυνση μόνη της είναι απαραίτητη αλλά όχι αρκετή.

Συγκρίνετε το όνομα του συνδέσμου στην έξοδο του resolver με το όνομα της διεπαφής στο αρχείο καταγραφής του VPN πριν βγάλετε οποιοδήποτε συμπέρασμα. Μια αναντιστοιχία εκεί συνήθως σημαίνει ότι η γραμμή του αρχείου προήλθε από άλλη διεργασία.

Έλεγχος τρίτος: αν ο χώρος ονομάτων επιλέγει αυτόν τον σύνδεσμο

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

Ελέγξτε την ανάθεση τομέα, όχι μόνο τη διεύθυνση του διακομιστή. Ένας τομέας γραμμένος ως ~corp.example είναι τομέας δρομολόγησης, και το σύμβολο tilde αλλάζει τον τρόπο αντιστοίχισης του ονόματος.

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

Έλεγχος τέταρτος: ένας ιδιοκτήτης, όχι δύο

Αν το NetworkManager διαχειρίζεται ήδη το VPN και την κατάσταση του resolver, η προσθήκη ενός άσχετου σεναρίου hook δημιουργεί ανταγωνιστικούς εγγραφείς. Το hook που παρέχει το πακέτο για το systemd-resolved είναι υποστηριζόμενη ενσωμάτωση και περιμένει συγκεκριμένο κύκλο ζωής: script-security 2, μια διαδρομή up, up-restart, μια διαδρομή down και down-pre. Αυτές οι επιλογές κάνουν την εγγραφή και την αφαίρεση να συμβαίνουν τις σωστές στιγμές και όχι μόνο στην πρώτη σύνδεση.

Χρησιμοποιήστε την εγκατεστημένη διαδρομή από το πακέτο και όχι μια ενδεικτική που αντιγράφηκε από οδηγό. Τα δικαιώματα μετράνε επίσης, γιατί το hook εκτελείται αφού πέσουν τα προνόμια.

Η επεξεργασία ενός σεναρίου resolver της διανομής για να αλλάξει ο στόχος εξόδου του καταγράφει μια παράκαμψη για έναν μόνο κεντρικό υπολογιστή. Δεν είναι γενική επισκευή.

Έλεγχος πέμπτος: το ίδιο αποτέλεσμα μετά από επανασύνδεση

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

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

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