Το Always-on και το kill switch βρίσκονται δύο γραμμές πιο κάτω στην ίδια οθόνη ρυθμίσεων, γι’ αυτό πολλοί τα διαβάζουν ως δύο ονόματα μιας λειτουργίας. Δεν είναι. Το Always-on είναι πολιτική επανασύνδεσης: ξεκινά το τούνελ στην εκκίνηση, το επαναφέρει μετά από κατάρρευση ή αλλαγή δικτύου και συνεχίζει να προσπαθεί όσο αποτυγχάνει. Το kill switch είναι πολιτική κίνησης: ονομάζει τα πακέτα που επιτρέπεται να φύγουν από το μηχάνημα όσο το τούνελ είναι κάτω. Μπορείτε να ενεργοποιήσετε το πρώτο χωρίς το δεύτερο, και στις περισσότερες πλατφόρμες το προεπιλεγμένο αποτέλεσμα αφήνει ακόμη κίνηση να βγει στο κενό.

Έλεγχος 1: είναι το μπλοκ δικός του διακόπτης;

Στο Android 10 και μετά, ένα αποθηκευμένο προφίλ VPN ανοίγει πίσω από το εικονίδιο γραναζιού δύο ανεξάρτητους διακόπτες: Always-on VPN και Αποκλεισμός συνδέσεων χωρίς VPN. Μόνο ο δεύτερος είναι το kill switch. Με σκέτο always-on το τούνελ επιστρέφει μετά από πτώση, αλλά κάθε εφαρμογή στη μέση ενός αιτήματος φτάνει στο δίκτυο μέσω Wi-Fi ή δεδομένων κινητής μέχρι να συμβεί αυτό.

Οι διαχειριζόμενες συσκευές κρατούν την ίδια διαίρεση στο API πολιτικών. Το setAlwaysOnVpnPackage() παίρνει το όνομα του πακέτου και μια σημαία lockdownEnabled· όποιος ορίσει το πακέτο και αφήσει τη σημαία ψευδή έχει χτίσει μόνιμο τούνελ, όχι κλειστή συσκευή. Η διατύπωση στην κονσόλα σπάνια κάνει τη διαφορά ορατή.

Διαβάστε την κατάσταση από τη συσκευή και όχι από την κονσόλα: adb shell settings get global always_on_vpn_app και adb shell settings get global always_on_vpn_lockdown. Αν το πρώτο επιστρέψει null, δεν επιβάλλεται πακέτο σε επίπεδο πλατφόρμας· αν το δεύτερο επιστρέψει 0, η πλατφόρμα δεν μπλοκάρει τίποτα. Ο οδηγός VPN του Android τα περιγράφει ως ξεχωριστές δυνατότητες και όχι ως μία λειτουργία.

Έλεγχος 2: ποιο επίπεδο κατέχει το μπλοκ;

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

Where you see the labelWhat the label promisesWhat actually blocks
Android VPN profileAlways-on VPNBlock connections without VPN
Android device policyAlways-on packagelockdownEnabled flag
Windows built-in VPNAlways On tunnelOutbound firewall rules
WireGuard for WindowsTunnel serviceBlock untunneled traffic option
wg-quick on LinuxRoute via AllowedIPsYour own nftables or iptables rules

Τα Windows είναι το πιο καθαρό παράδειγμα ετικέτας που δεν μπλοκάρει. Always On εκεί περιγράφει τη διάρκεια του τούνελ: τούνελ συσκευής για έλεγχο ταυτότητας μηχανής, τούνελ χρήστη για τον συνδεδεμένο λογαριασμό, ρυθμισμένα μέσω XML προφίλ ή Add-VpnConnection. Τίποτα σε αυτό το προφίλ δεν σταματά ένα εξερχόμενο πακέτο όταν λείπει το τούνελ, και το φιλτράρισμα εξόδου δεν είναι ενεργό από προεπιλογή, οπότε ένα φορητό σε Wi-Fi συνεχίζει να δουλεύει όσο το VPN είναι κάτω.

Το WireGuard χωρίζεται το ίδιο, αλλά ανά πελάτη. Το WireGuard για Windows έχει επιλογή ανά τούνελ, Αποκλεισμός κίνησης εκτός τούνελ, που εγκαθιστά κανόνες φίλτρου· τα εργαλεία Linux δεν έχουν αντίστοιχο διακόπτη. Το wg-quick προσθέτει διαδρομή για κάθε καταχώριση AllowedIPs συν κανόνα fwmark, και το wg-quick down αφαιρεί και τα δύο, ώστε η φυσική προεπιλεγμένη διαδρομή να αναλάβει ξανά χωρίς χαμένο πακέτο στο μεταξύ.

Στις πλατφόρμες Apple το always-on έρχεται ως δυνατότητα προφίλ διαχείρισης για εποπτευόμενες συσκευές και εκφράζεται ως κανόνες κατά απαίτηση, όχι ως πλαίσιο ελέγχου. Το ερώτημα από το φορτίο είναι αν ένα αποτυχημένο τούνελ αρνείται κίνηση ή απλώς ζητά άλλη σύνδεση. Ο τίτλος του μενού δεν θα το πει.

Έλεγχος 3: μετρήστε το κενό, όχι το εικονίδιο

Τέσσερις μεταβάσεις μετρούν και αποτυγχάνουν διαφορετικά: εκκίνηση πριν συνδεθεί κανείς, αναστολή και αφύπνιση, αλλαγή από Wi-Fi σε δεδομένα κινητής και κατάρρευση πελάτη που αφήνει τη διεπαφή του τούνελ μισο-ρυθμισμένη. Καθαρή επανασύνδεση σε μία από αυτές δεν αποδεικνύει τίποτα για τις άλλες τρεις.

Το φθηνότερο τεστ σταματά το τούνελ επίτηδες και μετά προσπαθεί να βγει. Με το τούνελ κάτω, το curl -m 5 -sS -o /dev/null -w '%{http_code}' https://example.com που επιστρέφει 200 σημαίνει ότι η πολιτική είναι fail-open· λήξη χρόνου ή απορριφθείσα σύνδεση σημαίνει ότι κάτι ακόμη μπλοκάρει. Το ip route get 1.1.1.1 ονομάζει τη διεπαφή που θα μετέφερε το πακέτο, κάτι που συνήθως λέει περισσότερα από το εικονίδιο της δίσκου, και το systemctl status wg-quick@wg0 δείχνει αν η διεπαφή αφαιρέθηκε καθαρά.

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

Έλεγχος 4: αποφασίστε τις εξαιρέσεις πριν κλειδώσετε

Δύο εξαιρέσεις είναι δομικές. Ο πελάτης πρέπει να φτάσει τον ίδιο τον διακομιστή VPN, άρα ένα σύνολο κανόνων που πετάει τα πάντα εμποδίζει και την επανασύνδεση που θα αποκαθιστούσε την προστασία. Η πύλη captive δεν είναι προσβάσιμη μέσα από τούνελ που δεν στέκει, άρα μια κλειδωμένη συσκευή σε Wi-Fi ξενοδοχείου χρειάζεται τεκμηριωμένο τρόπο να ανοίξει την πύλη, όχι αυτοσχέδιο.

Ελάχιστη μορφή, το τελικό σημείο επιτρεπτό και όλα τα άλλα πεταμένα:

table inet vpnlock {
  chain output {
    type filter hook output priority 0; policy drop;
    oifname "lo" accept
    ip daddr 203.0.113.10 udp dport 51820 accept
    oifname "wg0" accept
  }
}

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

Έλεγχος 5: καταγράψτε τι πραγματικά αποδείξατε

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

Πριν το πείτε έτοιμο:

  • Επιβεβαιώστε ότι η ρύθμιση αποκλεισμού είναι ξεχωριστή από τη ρύθμιση επανασύνδεσης, και διαβάστε την τιμή της στη συσκευή.
  • Μάθετε ποιο επίπεδο επιβάλλει το μπλοκ - επιλογή πελάτη, πολιτική συσκευής ή τείχος προστασίας - και πού ρυθμίζεται αυτό το επίπεδο.
  • Κρατήστε μία εντολή δοκιμής που αποδεικνύει το μπλοκ, και τρέξτε την κατά τη μετάβαση, όχι μετά.
  • Γράψτε τη λίστα εξαιρέσεων, με το τελικό σημείο μέσα, και σημειώστε ποιος την ανανεώνει.
  • Σε διαχειριζόμενο υλικό αφήστε την επιβαλλόμενη πολιτική· η αφαίρεση του μπλοκ αλλάζει την απαίτηση αντί να διορθώνει το τούνελ.

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