Ένα kill switch σε μια λίστα χαρακτηριστικών δεν σας λέει σχεδόν τίποτα για το τι συμβαίνει όταν πέσει το tunnel. Μια υλοποίηση κλείνει επιλεγμένες διεργασίες, μια άλλη εγκαθιστά φίλτρα πακέτων στα όρια του λειτουργικού συστήματος και μια τρίτη απλώς προσπαθεί να επανασυνδεθεί. Η διαφορά φαίνεται στα δευτερόλεπτα μετά από μια αποτυχία, όχι στην οθόνη ρυθμίσεων. Περάστε αυτούς τους ελέγχους με σειρά και σταματήστε στον πρώτο που δεν μπορείτε να απαντήσετε ειλικρινά, γιατί εκεί τελειώνει η πραγματική σας κάλυψη.

Ονομάστε πρώτα τον μηχανισμό επιβολής

Ο τερματισμός διεργασιών είναι χαρακτηριστικό του κύκλου ζωής μιας εφαρμογής. Βρίσκει επιλεγμένα προγράμματα μετά από ανιχνευμένη αποτυχία του tunnel και τα κλείνει. Ό,τι δεν είναι η κύρια διεργασία επιβιώνει: βοηθητικές υπηρεσίες, συγχρονισμός στο παρασκήνιο και κάθε εφαρμογή που ξεκινά ένα δευτερόλεπτο αργότερα έχουν τον δικό τους κύκλο ζωής και τη δική τους χρονική στιγμή.

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

Το μπλοκάρισμα επιβιώνει του client;

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

Κλείστε τον client στη μέση μιας μεγάλης λήψης και δείτε αν η μεταφορά σταματά ή συνεχίζεται.

Ψάξτε τις συνήθεις τρύπες

Το IPv6 είναι η πρώτη. Ένας κανόνας γραμμένος για διευθύνσεις IPv4 αφήνει την κίνηση IPv6 ανεπηρέαστη και πολλοί clients γράφουν μόνο το μισό v4. Η δεύτερη είναι η διεπαφή: το USB tethering, ένας δεύτερος προσαρμογέας Wi-Fi και ένα modem κινητής τηλεφωνίας μπορεί να μην περιλαμβάνονται σε κανόνα που περιορίζεται στην κύρια σύνδεση. Εξαιρούμενες εφαρμογές και οι εξαιρέσεις τοπικού δικτύου είναι η τρίτη.

Στα Windows μπορείτε να διαβάσετε τους εγκατεστημένους κανόνες αντί να εμπιστεύεστε τον διακόπτη: Get-NetFirewallRule -DisplayName '*VPN*' και netsh wfp show filters δείχνουν και τα δύο τι υπάρχει. Στο Linux, iptables -S, ip6tables -S και nft list ruleset καλύπτουν τις συνήθεις περιπτώσεις και το νόημα είναι να συγκρίνετε και τα τρία.

Το DNS είναι η συνήθης διαρροή

Το μπλοκάρισμα του TCP ενώ το UDP 53 μένει ανοιχτό σας δίνει ένα πολύ πειστικό kill switch που ακόμη απαντά σε κάθε ερώτημα ονόματος κεντρικού υπολογιστή. Το ίδιο ισχύει όταν το DNS παραδίδεται σε resolver σε άλλη διεπαφή, ή όταν ο client μπλοκάρει μόνο το v4 και ο resolver είναι προσβάσιμος μέσω v6.

Με το tunnel κάτω, επιλύστε ένα γνωστό όνομα και δείτε αν επιστρέφει απάντηση. Αν επιστρέφει, η κίνηση δεν είναι πλήρως μπλοκαρισμένη, ό,τι κι αν λέει το εικονίδιο κατάστασης.

Δοκιμάστε τη μετάβαση, όχι τον διακόπτη

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

Ένα αποτέλεσμα από ένα φορητό δεν μεταφέρεται σε τηλέφωνο ή router. Διαφορετικά API πλατφορμών, διαφορετικές προεπιλογές, και στο Android η διαφορά είναι εντυπωσιακή: το always-on με μπλοκάρισμα το επιβάλλει το σύστημα και όχι ο client, οπότε συνεχίζει να λειτουργεί όταν ο client δεν το κάνει. Ο οδηγός VPN του Android περιγράφει αυτόν τον διαχωρισμό.

Κρατήστε έναν δρόμο επιστροφής

Το μπλοκάρισμα σε επίπεδο συστήματος έχει την αντίθετη λειτουργία αποτυχίας. Φίλτρα που επιβιώνουν του client μπορούν να αφήσουν ένα μηχάνημα εντελώς χωρίς δίκτυο μετά από απεγκατάσταση, που είναι κλήση υποστήριξης χωρίς προφανή αιτία. Πριν ενεργοποιήσετε οποιοδήποτε kill switch που γράφει κανόνες πλατφόρμας, σημειώστε πώς αφαιρείται και κρατήστε τη διαδρομή επισκευής του κατασκευαστή εκεί που μπορείτε να τη βρείτε.

Αν δεν μπορείτε να απαντήσετε στους ελέγχους κατάρρευσης, IPv6, DNS και μετάβασης για τον client σας, αντιμετωπίστε τον ως διακόπτη επιπέδου εφαρμογής με γνωστά κενά και σχεδιάστε ανάλογα.

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