Η τοποθέτηση μιας διεύθυνσης Pi-hole σε ένα προφίλ OpenVPN δεν δημιουργεί διαδρομή προς αυτήν, δεν παρέχει άδεια για ερωτήματα προς αυτήν και δεν εγγυάται ότι ο πελάτης θα τη χρησιμοποιήσει. Όταν το Pi-hole βρίσκεται σε ξεχωριστό μηχάνημα του LAN, τέσσερα πράγματα πρέπει να ευθυγραμμιστούν: η διαδρομή από τον πελάτη, η προώθηση από την πύλη, η διαδρομή επιστροφής προς το pool και η πολιτική υποδοχής στο ίδιο το Pi-hole. Κάθε αποτυχία φαίνεται διαφορετική σε ένα αρχείο καταγραφής. Το πέρασμα από αυτές με αυτή τη σειρά είναι ταχύτερο από το να διορθώσεις πρώτα την τελευταία. Η συνήθης συντόμευση, το άνοιγμα της αναδρομής σε κάθε προέλευση, ανταλλάσσει ένα μικρό πρόβλημα με ένα μόνιμο.

Τι κάνει και τι δεν κάνει η προωθημένη επιλογή DNS

Ο διακομιστής διαφημίζει έναν resolver με την παρακάτω οδηγία, υποθέτοντας ότι το 192.168.50.53 είναι ο host του Pi-hole. Ο πελάτης λαμβάνει την επιλογή και, ανάλογα με την πλατφόρμα και την ενσωμάτωση του resolver , την εφαρμόζει στη διεπαφή του tunnel ή την αγνοεί υπέρ ενός τοπικού stub. Η γραμμή διαδρομής έχει την ίδια σημασία με τη γραμμή DNS, γιατί ένας resolver στον οποίο ο πελάτης δεν φτάνει δεν είναι καθόλου resolver. Τίποτα από αυτά δεν είναι ορατό από την πλευρά του διακομιστή.

server 10.90.0.0 255.255.255.0
push "dhcp-option DNS 192.168.50.53"
push "route 192.168.50.0 255.255.255.0"

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

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

Η διαδρομή επιστροφής από το Pi-hole προς το pool

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

Δώσε στον δρομολογητή του LAN μια στατική διαδρομή για το pool με την πύλη OpenVPN ως επόμενο άλμα, ή μετάφρασε την προέλευση στην πύλη πριν την προώθηση προς το Pi-hole. Η πρώτη κρατά τις διευθύνσεις κάθε πελάτη ορατές στο αρχείο καταγραφής ερωτημάτων του Pi-hole. Η δεύτερη αφαιρεί την απαίτηση διαδρομής επιστροφής αλλά κάνει κάθε ερώτημα να φαίνεται σαν να προέρχεται από την πύλη. Καμία δεν είναι λάθος· απαντούν σε διαφορετικά ερωτήματα.

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

Η λειτουργία ακρόασης του Pi-hole για δρομολογημένους πελάτες

Το αναπτυσσόμενο μενού της συμπεριφοράς ακρόασης των διεπαφών, στη σελίδα ρυθμίσεων στην ενότητα DNS, αποφασίζει σε ποιες προελεύσεις απαντά το Pi-hole. Η αυστηρότερη επιλογή δέχεται μόνο πελάτες σε άμεσα συνδεδεμένα δίκτυα· η επιλογή που επιτρέπει συσκευές το πολύ ένα άλμα μακριά το επεκτείνει σε υποδίκτυα πίσω από γειτονικό δρομολογητή, και έτσι ακριβώς μοιάζει ένας δρομολογημένος πελάτης VPN. Το πακέτο φτάνει πράγματι στη διεπαφή LAN, αλλά η διεύθυνση προέλευσής του ανήκει σε άλλο υποδίκτυο. Αυτή είναι άρνηση πολιτικής και όχι αποτυχία δρομολόγησης, και η διαφορά μετρά όταν διαβάζεις αρχεία καταγραφής.

Ο οδηγός του Pi-hole για την ακρόαση διαχωρίζει τις τοπικά συνδεδεμένες προελεύσεις από τις δρομολογημένες και η διεπαφή άφιξης δεν είναι το κριτήριο. Διάλεξε μια λειτουργία που επιτρέπει το pool VPN χωρίς να επιτρέπει όλο το διαδίκτυο και συνδύασέ την με έναν κανόνα τείχους προστασίας που δέχεται DNS μόνο από το pool.

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

Ταίριαξε την απάντηση με το αρχείο καταγραφής ερωτημάτων

Ρώτησε τον πελάτη, μετά έλεγξε τον διακομιστή και σύγκρινε τα δύο. Σε πελάτη systemd-resolved οι παρακάτω εντολές αναφέρουν ποιος resolver παρήγαγε μια απάντηση και ποιοι διακομιστές έχουν ρυθμιστεί ανά σύνδεσμο. Χρησιμοποίησε ένα όνομα που γνωρίζει μόνο το Pi-hole, γιατί ένα άμεσο ερώτημα στη διεύθυνση του Pi-hole αποδεικνύει προσβασιμότητα και όχι ρύθμιση.

resolvectl query intranet.example.lan
resolvectl dns

Η αναμενόμενη απάντηση ονομάζει το 192.168.50.53 ως διακομιστή και επιστρέφει μια διεύθυνση που μόνο αυτός ο resolver θα γνώριζε. Μετά κοίταξε την προβολή του ίδιου του Pi-hole: pihole -t παρακολουθεί το αρχείο καταγραφής ερωτημάτων ζωντανά και κάθε γραμμή φέρει τη διεύθυνση προέλευσης. Αν η προέλευση είναι η διεύθυνση tunnel του πελάτη, η διαδρομή του pool είναι άθικτη. Αν είναι η διεύθυνση LAN της πύλης, υπάρχει μετάφραση προέλευσης και η διεύθυνση του ίδιου του πελάτη δεν θα εμφανιστεί ποτέ.

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

Έλεγξε τον κανόνα προώθησης της πύλης

Η πύλη πρέπει να προωθεί τα πακέτα DNS του πελάτη προς το Pi-hole, και ο κανόνας που το κάνει αξίζει να διαβαστεί αντί να υποτεθεί. Οι παρακάτω εντολές απαριθμούν τους κανόνες που αγγίζουν τη θύρα 53 με μετρητές, σε host nftables και σε host iptables. Ένας κανόνας που υπάρχει αλλά δείχνει μηδέν αντιστοιχίσεις είναι το σήμα ότι η κίνηση απορρίπτεται πριν μεταφραστεί.

sudo nft list ruleset | grep -A3 'dport 53'
sudo iptables -t nat -L POSTROUTING -n -v | grep 53

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

Όποιο εργαλείο κι αν χρησιμοποιεί ο host, κράτα τον έλεγχο στενό: το pool ως προέλευση, τη θύρα 53 ως προορισμό και το Pi-hole ως τον μόνο επιτρεπόμενο στόχο. Ένας ευρύς κανόνας προώθησης που επιτρέπει και τη θύρα 80 είναι ένα άλλο πρόβλημα που περιμένει να συμβεί.

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