Sovelluskohtainen kill switch kuulostaa varovaiselta valinnalta: kun tunneli kaatuu, vain työasiakas menettää verkkonsa ja kaikki muu jatkaa toimintaansa. Sitten joku huomaa, että henkilökohtainen selain latasi silti sivun, saman paketin mukana tullut synkronointiavustaja yritti edelleen ja välimuistiin tallennettu nimi ratkesi yhä osoitteeseen, joka ei koskaan koskenut tunnelia. Ominaisuuden leima ja se yhteyksien joukko, jota se tosiasiassa suojaa, ovat kaksi eri asiaa. Selvitä ensin suojattu joukko, sillä se ratkaisee, onko sovelluskohtainen toteutus vai koko laitteen lukitus rehellinen kuvaus.

Aloita joukosta, älä leimasta

Sovelluskohtainen käytäntö suojaa valittuja sovelluksia. Laite lukitus tähtää laajempaan verkkorajaan, yleensä dokumentoiduilla poikkeuksilla paikallista tulostusta, hallintaliikennettä tai captive-portaaleja varten. Kumpikaan leima ei ole täydellinen ennen kuin pystyt vastaamaan kolmeen kysymykseen: mitä poissuljetuille sovelluksille tapahtuu, mitä avustajille tapahtuu, kun ne sovellukset käynnistävät niitä, ja mitä yhteyksille tapahtuu, kun ne avataan suojauksen ollessa poissa käytöstä.

Kirjoita vastaukset ylös ennen kuin kosket asiakasohjelman asetusta. Jos vaatimus on "tämä palkka-asiakas ei saa koskaan puhua internetille tunnelin ulkopuolella ja selaimeni saa", joukko on pieni ja sovelluskohtainen toteutus sopii. Jos vaatimus on "mikään tällä laitteella ei saavuta internetiä ilman suojausta paitsi päivityspalvelu", mikään sovelluskohtainen käytäntö ei tuota sitä, koska ongelmana ovat sovellukset, joita et nimennyt.

Sovelluskohtainen toteutus täsmää tunnisteisiin, ei ohjelmien nimiin

Android tarjoaa sovelluskohtaisen VPN:n pakettien kautta, ja sen VpnService-dokumentaatio kuvaa, miten se toimii yhdessä aina päällä -tilan ja eston kanssa. iOS määrittää sovelluskohtaisen VPN:n hallintaprofiilin kautta ja täsmää sovelluksen tai verkkotunnuksen mukaan. Windowsilla ja Linuxilla ei ole lainkaan prosessikohtaista reittiä, joten sama ajatus toteutetaan likimääräisesti ohjelmaan rajattuun palomuurisääntöön tai sääntöön, joka täsmää omistavaan käyttäjään.

Raja on tunniste, ja tunnisteet on helppo kiertää. Sovellus, joka luovuttaa URL:n järjestelmän selaimelle tai avaa asiakirjan katselimessa, siirtyy prosessiin, jota käytäntösi ei koskaan nimennyt. Katkeamisen yhteydessä lopettava vaihtoehto ei sekään ole pakettisuodatin: se tappaa määrittämäsi sovelluksen, kun taas lapsiprosessi, jonotyöläinen tai selaimen välilehti voi pitää olemassa olevan pistokkeen elossa.

Lukitus kattaa sen, mitä sovelluskohtainen käytäntö ei näe

Koko laitteen lukitus poistaa valinnan. Jokainen lähtevä paketti, joka ei kuulu tunneliin, pudotetaan, mukaan lukien liikenne prosesseista, joista sovelluskäytäntösi ei koskaan tiennyt. Androidilla se on aina päällä oleva VPN yhdessä yhteyksien estämisasetuksen kanssa, ja toteutus tapahtuu järjestelmässä, ei asiakasohjelman ikkunassa. Pöytäkoneella se on pysyvä palomuurisääntö tai oletusreitti saavuttamattomaan yhdyskäytävään.

Hinta on, että kaikki muu pysähtyy, joten poikkeuksista tulee osa suunnittelua eikä jälkijättöinen ajatus. Paikalliset tulostimet, palvelujen löytäminen, captive-portaaleihin kirjautuminen, hallinta-agentit ja käyttöjärjestelmän päivitykset tarvitsevat kukin dokumentoidun reiän, koska jokainen on polku, joka pysyy avoinna, kun tunneli on alhaalla. Lukitus on vain niin vahva kuin kyseisen listan lyhin merkintä.

DNS, IPv6 ja tausta-avustajat piilottavat vuodot

Se, ettei suojattu sovellus pysty ratkaisemaan nimeä, ei todista, että välimuistivastaukset tai suora IP-liikenne on estetty. Jos ratkaisija on yhä tavoitettavissa tunnelin ulkopuolella, nimi ratkeaa ja yhteys epäonnistuu, mikä näyttää toimivalta kill switchiltä eikä sitä ole. Pahempaa: välimuistimerkintä voi osoittaa osoitteeseen, jota tunneli ei kanna, joten yhteys menee suoraan ulos samalla kun sovellus ilmoittaa VPN-virheestä.

IPv6 tarvitsee oman sääntönsä jokaisella alustalla, joka sitä ajaa, koska v4:n pudotussääntö ei kata v6-reittiä. Mobiilissa yksityisen DNS:n asetus voi siirtää ratkaisun salattuun kanavaan, jota laitekäytäntö ei tarkasta. Ja tausta-avustajat ovat pöytäkoneen tavallinen syyllinen: päivitys- tai synkronointiprosessi käynnistyy ennen VPN-asiakasta ja pitää oman yhteytensä, joten se ei koskaan näe muuttunutta reittiä.

Testaa kolmea sovellusta ja kahta siirtymää

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

Aja jokainen rivi kahdesti, kerran isäntänimellä ja kerran kirjaimellisella osoitteella, ja vielä kerran IPv6:n yli jos verkko tarjoaa sen. Läpäisy tarkoittaa, että mukana oleva sovellus pysähtyi, poissuljettu käyttäytyi kuten kirjoitit eikä avustaja livahtanut ulos. Kirjaa suora käyttäytyminen, jonka päätit hyväksyttäväksi, jotta seuraava ylläpitäjä erottaa tahallisen poikkeuksen viasta.

Kuvaile sitten tulos yhdellä lauseella, joka nimeää sovellukset ja ehdot, esimerkiksi: palkka-asiakkaalla ei ole reittiä tunnelin ulkopuolelle, selain on suora suunnittelun mukaan ja kaikki muu pysähtyy, kun tunneli on alhaalla. Jos tuo lause on vaikea kirjoittaa, käytäntö on yhä kaksi käytäntöä, jotka taistelevat keskenään.

Aiheeseen liittyvät artikkelit