Αρχείο hosts εναντίον φίλτρου δρομολογητή: μπλοκάρισμα τοποθεσίας μέσω VPN
Μια εγγραφή hosts απαντά τοπικά και επιβιώνει από οποιοδήποτε τούνελ. Ένα φίλτρο δρομολογητή βλέπει μόνο ό,τι περνά από τον δρομολογητή, άρα ένα VPN που τελειώνει στο φορητό κρύβει το όνομα.
Μια εγγραφή στο αρχείο hosts και ένα φίλτρο δρομολογητή μπλοκάρουν την ίδια τοποθεσία για εντελώς διαφορετικούς λόγους, γι' αυτό το ένα συνεχίζει να λειτουργεί κάτω από VPN και το άλλο σταματά ήσυχα. Το αρχείο hosts απαντά σε ένα όνομα πριν φύγει οποιοδήποτε πακέτο από το μηχάνημα. Το φίλτρο δρομολογητή εξετάζει την κίνηση που το διασχίζει. Βάλτε ένα τούνελ ανάμεσα σε αυτά τα δύο σημεία και το δεύτερο χάνει την οπτική του, ενώ το πρώτο δεν αντιλαμβάνεται τίποτα.
Το πού επιλύεται το όνομα τα καθορίζει όλα
Κάθε μπλοκάρισμα ξεκινά με μια ερώτηση: ποιος μετατρέπει το όνομα σε διεύθυνση. Σε ένα συνηθισμένο επιτραπέζιο την απάντηση δίνει ο resolver του συστήματος, που ακολουθεί τη ρυθμισμένη σειρά του και συνήθως διαβάζει το αρχείο hosts πριν ρωτήσει το DNS. Σε φιλτραρισμένο δίκτυο η απάντηση μπορεί να είναι ο δρομολογητής, που βλέπει το ερώτημα μόνο αν ο πελάτης το στείλει μέσα από αυτόν χωρίς προστασία. Αλλάξτε τη διαδρομή και αλλάζετε ποιος επιτρέπεται να απαντήσει.
Ένα VPN κάνει εδώ δύο πράγματα ταυτόχρονα: μετακινεί την προεπιλεγμένη διαδρομή και μπορεί να επιβάλει τον δικό του διακομιστή DNS. Οποιαδήποτε από τις δύο αλλαγές αρκεί για να απομακρύνει την επίλυση ονομάτων από τη συσκευή που επέβαλλε το μπλοκάρισμα.
Αυτός είναι ο μηχανισμός πίσω από το γνωστό παράπονο ότι το φίλτρο δουλεύει μέχρι να συνδεθεί το VPN.
Μια εγγραφή hosts απαντά πριν υπάρξει το τούνελ
Μια γραμμή όπως 127.0.0.1 www.example.com τη διαβάζει ο τοπικός resolver, άρα η απάντηση παράγεται στο μηχάνημα χωρίς δίκτυο. Συνδέστε τούνελ, αλλάξτε διακομιστή DNS, αλλάξτε δίκτυα: η εγγραφή εξακολουθεί να επιστρέφει loopback. Γι' αυτό το μπλοκάρισμα με hosts είναι το μόνο από τα δύο που δεν επηρεάζεται από το πού τελειώνει το VPN.
Τα τυφλά του σημεία είναι εξίσου τοπικά. Μια εφαρμογή που φέρνει τον δικό της resolver, μιλά DNS over HTTPS ή συνδέεται σε κυριολεκτική διεύθυνση δεν ρωτά ποτέ το σύστημα, άρα η εγγραφή δεν εξετάζεται. Μια κρυφή διεύθυνση μέσα σε μια διεργασία που τρέχει έχει το ίδιο αποτέλεσμα μέχρι να επανεκκινήσει αυτή η διεργασία.
Επιβεβαιώστε την απάντηση με getent ahosts σε Linux ή Resolve-DnsName σε Windows αντί να εμπιστεύεστε μια καρτέλα του προγράμματος περιήγησης.
Ένα φίλτρο δρομολογητή βλέπει μόνο ό,τι το διασχίζει
Ένα φίλτρο περιεχομένου ή URL σε οικιακό δρομολογητή ταιριάζει ονόματα και αιτήματα που το περνούν σε αναγνώσιμη μορφή. Όταν ο πελάτης στήνει κρυπτογραφημένο τούνελ προς διακομιστή αλλού, ο δρομολογητής βλέπει μία ροή προς αυτόν τον διακομιστή και τίποτα μέσα της. Το φίλτρο δεν έχει όνομα για ταίριασμα, οπότε επιτρέπει την κίνηση, και αυτό μοιάζει με αποτυχία του φίλτρου, όχι με παράκαμψη.
Η τοπολογία που λειτουργεί είναι η άλλη: ο δρομολογητής κρατά το τούνελ ο ίδιος, αποκρυπτογραφεί στο άκρο και εφαρμόζει εκεί το φίλτρο. Σε αυτό το σχέδιο το φίλτρο κάθεται εκεί όπου εμφανίζεται το απλό κείμενο.
Αν το τούνελ τελειώνει στο φορητό, ο δρομολογητής είναι εξ ορισμού έξω από την προστατευμένη διαδρομή, ό,τι κι αν γράφει ο κανόνας.
Τέσσερα σημεία επιβολής και τι χάνει το καθένα
Τέσσερα σημεία μπορούν να επιβάλουν μπλοκάρισμα και το καθένα αποτυγχάνει διαφορετικά. Διαβάστε τη λίστα ως χάρτη κάλυψης, όχι ως κατάταξη.
- Αρχείο hosts ή τοπικός resolver: δουλεύει εκτός σύνδεσης και κάτω από οποιοδήποτε τούνελ, αλλά το παρακάμπτει ένας ενσωματωμένος resolver ή μια σταθερή διεύθυνση.
- Φιλτράρισμα DNS στην πύλη VPN: καλύπτει πελάτες που χρησιμοποιούν τον επιβαλλόμενο resolver και χάνει πελάτες που παρακάμπτουν το DNS.
- Κανόνες εξόδου στην πύλη κατά διεύθυνση ή SNI: ανεξάρτητοι από το DNS του πελάτη, αλλά τυφλοί σε ονόματα που δεν μπορούν να διαβάσουν και σε διευθύνσεις που δεν έχουν μάθει.
- Διαχειριζόμενη πολιτική προγράμματος περιήγησης ή συσκευής: ισχυρή σε διαχειριζόμενο υλικό, απούσα σε προσωπικές συσκευές.
Κανένα από αυτά δεν είναι όριο ασφαλείας απέναντι σε αποφασισμένο χρήστη σε μη διαχειριζόμενη συσκευή. Είναι έλεγχοι πολιτικής, και μια ειλικρινής περιγραφή λέει ποια κίνηση καλύπτει πραγματικά το καθένα.
Επιλέξτε το επίπεδο που ταιριάζει με την πρόθεση: η οικιακή ευκολία ανήκει στη συσκευή και ο οργανωτικός κανόνας στην πύλη.
Δοκιμάστε και τις δύο καταστάσεις πριν το θεωρήσετε έτοιμο
Τρέξτε τις ίδιες τρεις εντολές με το VPN συνδεδεμένο και αποσυνδεδεμένο: getent ahosts για την απάντηση του resolver, nslookup για το τι επιστρέφει το ερώτημα και curl -I προς την τοποθεσία για το αν ολοκληρώνεται ακόμη μια σύνδεση. Αν το πρώτο επιστρέφει loopback ενώ το τρίτο συνδέεται στην πραγματική διεύθυνση, κάτι παρέκαμψε τον resolver και η εγγραφή hosts δεν είναι ο έλεγχος που νομίζετε.
Στον δρομολογητή, διαβάστε τους μετρητές του φίλτρου πριν και μετά από ένα αίτημα. Ένας μετρητής που δεν κουνιέται ποτέ σημαίνει ότι η κίνηση δεν έφτασε ποτέ στο φίλτρο, και αυτό είναι απάντηση δρομολόγησης, όχι κανόνα.
Γράψτε το αποτέλεσμα μαζί με την τοπολογία, γιατί η επόμενη αλλαγή VPN θα μετακινήσει ξανά τη διαδρομή.