Ein kill switch per app høyrest ut som det forsiktige valet: berre arbeidsklienten mistar nettverket når tunnelen fell, og alt anna held fram med å virke. Så oppdagar nokon at den personlege nettlesaren likevel lasta ei side, at synkroniseringshjelparen frå same pakke heldt fram med å prøve, og at eit hurtiglagra namn framleis vart slått opp til ei adresse som aldri rørte tunnelen. Etiketten på funksjonen og settet med tilkoplingar han faktisk vernar, er to ulike ting. Avgjer det verna settet først, fordi det settet avgjer om handheving per app eller låsing av heile eininga er den ærlege skildringa.

Start med settet, ikkje etiketten

Ein policy per app vernar utvalde applikasjonar. Ei eininglåsing siktar mot ei breiare nettverksgrense, vanlegvis med dokumenterte unntak for lokal utskrift, administrasjonstrafikk eller captive-portalar. Ingen av etikettene er komplette før du kan svare på tre spørsmål: kva som skjer med utelukka appar, kva som skjer med hjelparane desse appane startar, og kva som skjer med tilkoplingar som vert opna medan vernet ikkje er tilgjengeleg.

Skriv ned svara før du rører ei klientinnstilling. Viss kravet er "denne lønsklienten skal aldri snakke med internett utanfor tunnelen, og nettlesaren min kan", er settet lite og handheving per app passar. Viss kravet er "ingenting på denne eininga når internett utan vern, unntatt oppdateringstenesta", vil ingen policy per app produsere det, fordi appane du ikkje namngav, er problemet.

Handheving per app matchar identifikatorar, ikkje programnamn

Android eksponerer VPN per app gjennom pakkar, og VpnService-dokumentasjonen skildrar korleis det samspelar med alltid-på-drift og blokkering. iOS konfigurerer VPN per app gjennom ein administrasjonsprofil og matchar etter app eller etter domene. Windows og Linux har inga rute per prosess i det heile, så den same ideen vert tilnærma med ein brannmurregel avgrensa til eit program eller med ein regel som matchar den eigande brukaren.

Grensa er identifikatoren, og identifikatorar er lette å gå rundt. Eit program som overlèt ein URL til systemnettlesaren, eller opnar eit dokument i ein framvisar, går over i ein prosess som policyen din aldri namngav. Eit alternativ for å avslutte ved brot er heller ikkje eit pakkefilter: det drep appen du konfigurerte, medan ein barneprosess, ein køarbeidar eller ei nettlesarfane kan halde ein eksisterande socket i live.

Låsing dekkjer det ein policy per app ikkje kan sjå

Ei låsing av heile eininga fjernar valet. Kvar utgåande pakke som ikkje høyrer til tunnelen, vert droppa, inkludert trafikk frå prosessar som app-policyen din aldri kjende. På Android er det alltid-på-VPN kombinert med innstillinga som blokkerer tilkoplingar, og handhevinga skjer i systemet, ikkje i klientvindauget. På ein datamaskin er det ein varig brannmurregel eller ei standardrute mot ein utilgjengeleg gateway.

Prisen er at alt anna stoppar, så unntaka vert ein del av designet i staden for ein ettertanke. Lokale skrivarar, tenesteoppdaging, pålogging på captive-portalar, administrasjonsagentar og OS-oppdateringar treng kvar sitt dokumenterte hol, fordi kvar av dei er ein veg som blir verande open når tunnelen er nede. Låsinga er berre så sterk som den kortaste oppføringa på lista.

DNS, IPv6 og bakgrunnshjelparar skjuler lekkasjane

At ein verna app ikkje klarar å slå opp eit namn, provar ikkje at hurtiglagra svar eller direkte IP-trafikk er blokkert. Viss oppløysaren framleis er tilgjengeleg utanfor tunnelen, vert namnet løyst opp og tilkoplinga feilar, noko som ser ut som ein fungerande kill switch og ikkje er det. Verre: ein hurtiglagra post kan peike på ei adresse tunnelen ikkje ber, så tilkoplinga går direkte ut medan appen rapporterer ein VPN-feil.

IPv6 treng sin eigen regel på kvar plattform som køyrer det, fordi ein droppregel for v4 ikkje dekkjer ei v6-rute. På mobil kan ei innstilling for privat DNS flytte oppløysinga inn i ein kryptert kanal som einingapolicyen ikkje inspiserer. Og bakgrunnshjelparar er den vanlege syndebukken på skrivebordet: ein oppdaterings- eller synkroniseringsprosess startar før VPN-klienten og held si eiga tilkopling, så han ser aldri den endra ruta.

Test tre appar og to overgangar

TestWhat it proves
Included app, by name and by direct IPthe policy is applied, not just the resolver
Excluded app, same checksthe exclusion is intentional and documented
Helper or updater processnothing inherited an older route
Tunnel drop, then Wi-Fi to cellularthe block survives the transition

Køyr kvar rad to gonger, éin gong med eit vertsnamn og éin gong med ei bokstavleg adresse, og éin gong til over IPv6 viss nettverket tilbyr det. Bestått betyr at den inkluderte appen stoppa, den utelukka oppførte seg som du skreiv, og hjelparen ikkje smatt ut. Noter den direkte åtferda du bestemte var akseptabel, slik at neste administrator kan skilje eit medvite unntak frå ein feil.

Skildre deretter resultatet i éin setning som namngjev appane og vilkåra, til dømes: lønsklienten har inga rute utanfor tunnelen, nettlesaren er direkte etter design, og alt anna stoppar når tunnelen er nede. Viss den setninga er vanskeleg å skrive, er policyen framleis to policyar som kjempar mot kvarandre.

Relaterte artiklar