Φίλτρο DNS σε VPN: ο αποκλεισμός ονομάτων δεν μπλοκάρει διαφημίσεις
Ένας κανόνας dnsmasq απαντά στα ονόματα με NXDOMAIN και δεν διαβάζει ποτέ τη σελίδα. Συγκρίνετε το με το τι κάνει ένας αποκλεισμός στην πλευρά του πελάτη πριν υποσχεθείτε αφαίρεση διαφημίσεων.
Μία μόνο γραμμή dnsmasq μπορεί να απαντήσει σε ένα όνομα με NXDOMAIN, και αυτός είναι ολόκληρος ο μηχανισμός. Δεν διαβάζει ποτέ HTML, δεν εξετάζει ποτέ τη διαδρομή ενός αιτήματος και δεν βλέπει ποτέ τι κάνει μια εφαρμογή με μια σύνδεση που έχει ήδη ανοίξει. Επομένως, η σύγκρισή του με μια επέκταση προγράμματος περιήγησης είναι σύγκριση δύο διαφορετικών εργασιών. Το ένα αποφασίζει αν ένα όνομα επιλύεται, το άλλο αποφασίζει τι συμβαίνει μετά.
Τι ελέγχει πραγματικά ένα φίλτρο ονομάτων
Η επιλογή address=/metrics.example/, χωρίς τίποτα μετά την τελευταία κάθετο, κάνει τον επιλυτή να επιστρέφει NXDOMAIN για αυτό το όνομα και τα υποτομέα του. Το να αφήνουμε τη διεύθυνση κενή είναι το σημαντικό μέρος: έτσι αποφεύγεται η αποστολή πελατών σε έναν άσχετο διακομιστή αντικατάστασης ή η εμφάνιση μιας διεύθυνσης loopback ως πραγματικού προορισμού. Το εγχειρίδιο του dnsmasq περιγράφει αυτή τη μορφή ως αρνητική απάντηση και όχι ως ανακατεύθυνση.
Όλα όσα μπορεί να κάνει ο κανόνας προκύπτουν από αυτή τη μία απόφαση. Ένας πελάτης που ρωτά αυτόν τον επιλυτή παίρνει αρνητική απάντηση, ενώ ένας πελάτης που ρωτά έναν άλλο επιλυτή παίρνει ό,τι πει εκείνος ο επιλυτής. Το φίλτρο δεν γνωρίζει τίποτα για τη διαδρομή, το αλφαριθμητικό ερωτήματος ή τον λογαριασμό που θα είχε χρησιμοποιήσει η εφαρμογή.
Αυτή η λεπτομέρεια μετράει, γιατί ένα όνομα κεντρικού υπολογιστή εξυπηρετεί συχνά πολλούς σκοπούς. Τα σημεία σύνδεσης, οι εικόνες και η παρακολούθηση μπορούν να μοιράζονται έναν τομέα, και ένας κανόνας που αφαιρεί ολόκληρο το όνομα μπορεί να αφαιρέσει μαζί και μια ροή εργασίας. Μια πολιτική σε επίπεδο ονόματος πρέπει να δεχτεί αυτή την ανταλλαγή ή να επιλέξει στενότερα ονόματα.
Πού διαφέρει ένας αποκλεισμός στην πλευρά του πελάτη
Μια επέκταση προγράμματος περιήγησης βλέπει το αίτημα πριν φύγει, οπότε μπορεί να αντιστοιχίσει μια διαδρομή URL, να ακυρώσει ένα συγκεκριμένο αίτημα και να κρύψει το στοιχείο που θα εμφάνιζε το αποτέλεσμα. Μπορεί να επιτρέψει το example.com/article απορρίπτοντας το example.com/ads/, κάτι που καμία απάντηση DNS δεν μπορεί να εκφράσει. Αυτή η ματιά σε επίπεδο διαδρομής είναι η δυνατότητα που ένας επιλυτής απλώς δεν έχει. Γι’ αυτό και μια λίστα φίλτρων που φτιάχτηκε για ένα εργαλείο σπάνια συμπεριφέρεται το ίδιο στο άλλο.
Το κόστος είναι η εμβέλεια. Αυτή η προστασία ζει μέσα σε ένα πρόγραμμα περιήγησης, σε ένα προφίλ, σε μία συσκευή, και εξαφανίζεται όταν ο χρήστης περάσει σε άλλη εφαρμογή. Ένα φίλτρο DNS που έχει ρυθμιστεί στην πύλη καλύπτει κάθε συσκευή που χρησιμοποιεί τον επιλυτή της πύλης, ακόμη και συσκευές όπου δεν μπορεί να εγκατασταθεί καμία επέκταση.
Καμία από τις δύο διατάξεις δεν είναι πλήρης από μόνη της. Ένα φίλτρο DNS δεν μπορεί να αφαιρέσει ένα αναγνωριστικό που έχει ήδη στείλει μια σελίδα, και μια επέκταση προγράμματος περιήγησης δεν μπορεί να προστατεύσει μια εφαρμογή που δεν τη φορτώνει ποτέ.
Η διαδρομή του επιλυτή καθορίζει αν ισχύει κάτι από αυτά
Ένα VPN μπορεί να διαφημίζει έναν διακομιστή DNS και παρόλα αυτά να μην λαμβάνει κάθε ερώτημα. Ένα πρόγραμμα περιήγησης με ρυθμισμένο κρυπτογραφημένο DNS, μια εφαρμογή με δικό της επιλυτή ή μια συσκευή σε διαδρομή δικτύου που αποκλείει την πύλη θα κοιτάξουν όλα αλλού. Οι πλατφόρμες κινητών προσφέρουν όλο και συχνότερα ρύθμιση ιδιωτικού DNS που παρακάμπτει σιωπηλά ό,τι προτείνει η σήραγγα.
Δοκιμάστε λοιπόν τη διαδρομή και όχι την πολιτική. Ρωτήστε τον επιδιωκόμενο επιλυτή απευθείας από την πύλη, μετά ρωτήστε τον από έναν πελάτη και συγκρίνετε, και μετά παρατηρήστε αν ένα όνομα που θα έπρεπε να αποκλείεται αποτυγχάνει πράγματι στην εφαρμογή που εκτελεί ο χρήστης.
Οι απαντήσεις στην κρυφή μνήμη και οι ανοιχτές υποδοχές κάνουν αυτό θορυβώδες. Μια σελίδα που έχει ήδη φορτώσει τους πόρους της θα συνεχίσει να λειτουργεί μετά την αλλαγή του κανόνα, οπότε μια νέα σύνδεση είναι καλύτερη δοκιμή από το να φορτώσετε ξανά μια παλιά καρτέλα.
Δοκιμάστε και τις δύο κατευθύνσεις πριν δηλώσετε αποτέλεσμα
Χρησιμοποιήστε ένα όνομα τεκμηρίωσης που έχει αποκλειστεί σκόπιμα, ένα επιτρεπόμενο δημόσιο όνομα και ένα ιδιωτικό όνομα που χρειάζεται η υπηρεσία:
$ dig +short metrics.example @10.40.0.53
$ dig +short example.com @10.40.0.53
$ dig +short intranet.corp.internal @10.40.0.53
Μια κενή απάντηση για το αποκλεισμένο όνομα, μια κανονική διεύθυνση για το δημόσιο και μια ιδιωτική διεύθυνση για το εσωτερικό δείχνουν μαζί ότι το φιλτράρισμα, η επίλυση προς τα ανάντη και οι τοπικές εγγραφές λειτουργούν. Αν αποτύχουν και τα τρία, βλέπετε πρόβλημα προς τα ανάντη ή στον ακροατή και όχι στο φίλτρο.
Κρατήστε τον ισχυρισμό στενό σε ό,τι δημοσιεύετε εσωτερικά. Αυτό είναι φιλτράρισμα τομέων σε έναν επιλυτή, όχι επιθεώρηση περιεχομένου, όχι φιλτράρισμα διαδρομών και όχι υπόσχεση ότι κανείς δεν παρακολουθείται. Δηλώστε τον ιδιοκτήτη της πολιτικής, τη διαδρομή εξαίρεσης και τη διάρκεια διατήρησης των ερωτημάτων δίπλα στους κανόνες, γιατί ένα φίλτρο που καταγράφει κάθε αναζήτηση έχει το δικό του κόστος ιδιωτικότητας.