Always-on VPN vai kill switch: ko jūs patiesībā ieslēdzāt?
Always-on VPN atkal savieno tuneli; kill switch nosaka, kas drīkst iziet bez tā. Piecas pārbaudes pirms uzticēties apzīmējumam.
Always-on un kill switch atrodas divu rindu attālumā tajā pašā iestatījumu ekrānā, tāpēc cilvēki tos lasa kā divus vienas funkcijas nosaukumus. Tie tādi nav. Always-on ir atkārtotas savienošanas politika: palaist tuneli startēšanas laikā, atgriezt to pēc avārijas vai tīkla maiņas un turpināt mēģināt, kamēr tas neizdodas. Kill switch ir datplūsmas politika: tas nosauc, kuras paketes vēl drīkst pamest mašīnu, kamēr tuneļa nav. Pirmo var ieslēgt bez otrā, un lielākajā daļā platformu noklusējuma rezultāts joprojām izlaiž datplūsmu ārā šajā starplaikā.
1. pārbaude: vai bloķēšana ir atsevišķs slēdzis?
Android 10 un jaunākās versijās saglabātais VPN profils aiz zobrata ikonas atver divus neatkarīgus slēdžus: Always-on VPN un Block connections without VPN. Tikai otrais ir kill switch. Ar vienu always-on tunelis tiešām atgriežas pēc pārrāvuma, un jebkura lietotne, kuras pieprasījums ir pusceļā, var sasniegt tīklu pa Wi-Fi vai mobilajiem datiem, līdz tas notiek.
Pārvaldītās ierīces politikas API saglabā to pašu dalījumu: setAlwaysOnVpnPackage() saņem pakotnes nosaukumu un lockdownEnabled karodziņu; administrators, kurš iestata pakotni un atstāj karodziņu false, ir uzbūvējis pastāvīgu tuneli, nevis slēgtu ierīci. Konsoles formulējums šo atšķirību reti padara redzamu.
Stāvokli lasiet no ierīces, nevis konsoles: adb shell settings get global always_on_vpn_app un adb shell settings get global always_on_vpn_lockdown. Ja pirmais atgriež null, platformas līmenī nav piespiesta neviena pakotne; ja otrais atgriež 0, platforma neko nebloķē. Android VPN rokasgrāmata to apraksta kā atsevišķas iespējas, nevis vienu režīmu.
2. pārbaude: kuram slānim pieder bloķēšana?
Apzīmējumi dzīvo klientā, bet bloķēšana parasti ugunsmūrī, tāpēc viens un tas pats vārds katrā platformā nozīmē ko citu. Zemāk esošās rindas ir tās, ko ir vērts apstiprināt pirms uzticēties jebkurai no tām.
| Where you see the label | What the label promises | What actually blocks |
|---|---|---|
| Android VPN profile | Always-on VPN | Block connections without VPN |
| Android device policy | Always-on package | lockdownEnabled flag |
| Windows built-in VPN | Always On tunnel | Outbound firewall rules |
| WireGuard for Windows | Tunnel service | Block untunneled traffic option |
| wg-quick on Linux | Route via AllowedIPs | Your own nftables or iptables rules |
Windows ir visskaidrākais nebloķējoša apzīmējuma piemērs. Tur Always On apraksta tuneļa noturību: ierīces tuneli mašīnas autentifikācijai un lietotāja tuneli pieteiktajam kontam, kas konfigurēts ar profila XML vai Add-VpnConnection. Nekas tajā profilā neaptur izejošo paketi, kad tuneļa nav, un izejošā filtrēšana pēc noklusējuma nav ieslēgta, tāpēc klēpjdators ar Wi-Fi turpina strādāt, kamēr VPN ir izslēgts.
WireGuard sadalās tāpat, bet pēc klienta. WireGuard for Windows ir opcija Block untunneled traffic katram tunelim, kas instalē filtra noteikumus; Linux rīkiem šāda slēdža nav. wg-quick pievieno maršrutu katram AllowedIPs ierakstam un fwmark noteikumu, bet wg-quick down noņem abus, tāpēc fiziskais noklusējuma maršruts atkal pārņem darbu, nezaudējot nevienu paketi.
Apple platformās always-on nāk kā pārvaldības profila funkcija uzraudzītām ierīcēm un izpaužas kā on-demand noteikumi, nevis izvēles rūtiņa. Jautājums, uz kuru jāatbild no lietderīgās kravas, ir: vai neizdevies tunelis liedz datplūsmu vai tikai pieprasa citu savienojumu. Izvēlnes nosaukums to nepateiks.
3. pārbaude: mēriet starplaiku, nevis ikonu
Četras pārejas ir svarīgas, un tās neizdodas dažādi: startēšana pirms kāds piesakās, miegs un pamošanās, pāreja no Wi-Fi uz mobilajiem datiem un klienta avārija, kas atstāj tuneļa saskarni daļēji konfigurētu. Tīra atkārtota savienošana vienā no tām neko nepierāda par pārējām trim.
Lētākais tests apzināti aptur tuneli un tad mēģina iziet. Kad tunelis ir izslēgts, curl -m 5 -sS -o /dev/null -w '%{http_code}' https://example.com, kas atgriež 200, nozīmē, ka politika ir fail-open; taimauts vai atteikts savienojums nozīmē, ka kaut kas vēl bloķē. ip route get 1.1.1.1 nosauc saskarni, kas nestu paketi, un tas parasti ir informatīvāk par teknes ikonu, bet systemctl status wg-quick@wg0 parāda, vai saskarne tika tīri noņemta.
Palaidiet to pašu pārbaudi otrā logā, kamēr tīkls mainās, nevis tikai pēc tam, kad tas ir nostabilizējies. Intervāls starp pārrāvumu un atkārtoto mēģinājumu ir tas, kas svarīgs, un vārdu izšķiršana ir ātrākais veids, kā pamanīt, ka datplūsma ir izslīdējusi: ja vietējais atrisinātājs atbild, kamēr tunelis ir izslēgts, bloķēšana nav pilnīga.
4. pārbaude: izlemiet izņēmumus pirms aizslēgšanas
Divi izņēmumi ir strukturāli. Klientam jāsasniedz pats VPN serveris, tāpēc noteikumu kopa, kas nomet visu, kavē arī atkārtotu savienošanu, kas atjaunotu aizsardzību. Arī captive portal nav sasniedzams caur tuneli, kas nav pacelts, tāpēc aizslēgtai ierīcei viesnīcas Wi-Fi ir vajadzīgs dokumentēts veids, kā atvērt portālu, nevis improvizēts.
Minimāla forma: galapunkts atļauts, viss pārējais nomests:
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
}
}
Uzskatiet galapunkta rindu par mainīgo, nevis konstanti. Pakalpojumu sniedzēji maina adreses, un novecojis izņēmums ir parastais iemesls, kāpēc strādājošs kill switch pārvēršas ierīcē, kas nevar atkārtoti savienoties. Vietējie printeri, NAS koplietojumi un izstrādes pakalpojumi pieder tam pašam rakstītajam sarakstam, citādi tie tiek atklāti pa vienam atbalsta pieteikumam.
5. pārbaude: pierakstiet, ko patiesībā pierādījāt
Turiet tabulu ar četrām kolonnām un piepildiet to ar testiem: stāvoklis, gaidītā uzvedība, novērotā uzvedība, pierādījums. Rindas ir 3. pārbaudes pārejas plus viena apzināta kļūme. Rinda, ko nevarat piepildīt ar komandas izvadi, ir rinda, ko neesat pārbaudījis, un ierīce, kas iztur atkārtotas savienošanas rindu un neiztur startēšanas rindu, ir pietiekami bieža, lai attaisnotu papildu desmit minūtes.
Pirms saucat to par pabeigtu:
- Apstipriniet, ka bloķēšanas iestatījums ir atsevišķs no atkārtotas savienošanas iestatījuma, un nolasiet tā vērtību ierīcē.
- Ziniet, kurš slānis īsteno bloķēšanu - klienta opcija, ierīces politika vai ugunsmūris - un kur tas slānis tiek konfigurēts.
- Paturiet vienu pārbaudes komandu, kas pierāda bloķēšanu, un izpildiet to pārejas laikā, nevis pēc tam.
- Pierakstiet izņēmumu sarakstu, ieskaitot galapunktu, un atzīmējiet, kas to atjauno.
- Pārvaldītā aparatūrā atstājiet piespiesto politiku mierā; bloķēšanas noņemšana maina prasību, nevis labo tuneli.