Androidi rakendusepohine VPN: rakenduse väljajätmine ei blokeeri seda
Ekraanil olev rakendusepõhine nimekiri kuulub ühele tunnelivaldajale ja rakenduse väljajätmine suunab selle sellest tunnelist mööda, mitte võrgust välja. Alusta sealt.
Kaks inimest esitavad sama küsimuse ja saavad kokkusobimatuid vastuseid, sest nad seisavad erinevates kohtades. Ühel on lahti süsteemi VPN-i seadete ekraan ja ta muudab rakenduste nimekirja. Teine kirjutab redaktoris VpnService.Builder.addDisallowedApplication(). Mõlemad nimetavad seda rakendusepõhiseks VPN-filtriks. Ainult ühel neist on see juhtimisvahend, mida nad kirjeldavad, ja kumbki ei blokeeri midagi.
Alusta ekraanist, mida kasutaja näeb
Ava Seaded, leia VPN-i kirje ja vaata ühendust, mis tegelikult aktiivne on. Kui klient pakub rakendusepõhist nimekirja, kuulub see nimekiri kliendi enda tunnelile. Platvorm ei avalda üldist API-t, mille kaudu võõras rakendus saaks teise VPN-i rakenduste valikut lugeda või muuta, seega teine rakendus ei saa seda nimekirja kasutaja jaoks parandada.
See on tee esimene hargnemine. Kui paigaldatud VPN-il sellist seadet pole, pole midagi ümber programmeerida: funktsioon puudub tootes, millele tunnel kuulub. Kui see on olemas, on õige parandus selles ekraanis ja selle teeb inimene, kes suudab selle avada.
Järgi paketti tunnelisse
Kui sinu enda rakendus ehitab tunnelit, loob see TUN-liidese ja teatab, milliste rakenduste liiklus sellesse siseneb. Liikmelisuse kutsed tehakse enne liidese loomist ja pärast seda on reeglistik selle sessiooni jaoks fikseeritud:
val builder = VpnService.Builder()
builder.addAddress("10.8.0.2", 32)
builder.addRoute("0.0.0.0", 0)
builder.addDisallowedApplication("com.example.bypass")
val tun = builder.establish() // membership decided hereNeed kutsed kehtivad tunnelile, mille sinu rakendus just lõi, ja mitte millelegi muule. Need ei ole kogu seadet hõlmav poliitika, need ei püsi teiste klientide jaoks ja need ei ulatu kellegi teise VPN-i. Kui ehitaja kutse ebaõnnestub, sest paketti ei saa lahendada, ei looda liidest kunagi, mis on puhas ebaõnnestumine, mitte vaikne.
Miks väljajätmine nägi välja nagu blokeerimine
Väljajäetud rakendus suunatakse sinu tunnelist mööda alusvõrku. See on blokeerimise vastand: liiklus väljub ikka seadmest, lihtsalt väljaspool liidest, mida sa kontrollid. Tulemüüri stiilis rakendus teeb vastupidist. See lubab rakenduse liikluse oma tunnelisse ja seejärel viskab paketid ära või keeldub neid edastamast, nii et liides on sama ja poliitika suund on ümber pööratud.
Selle ümberpööramise taga olev töö ei ole konfiguratsioonilipuke. Sa loed tunneli kirjeldajast IP-pakette, otsustad voo kaupa ja kas edastad need kaitstud pistiku kaudu või viskad ära. Kõik, mida sa ei käsitle, lihtsalt peatub, mistõttu poolik tunnel näeb välja nagu katkine võrk, mitte nagu töötav filter. Kui sinu eesmärk on blokeerimine, arvesta pakettide käsitlemise, esiplaaniteenuse ja kirjaliku poliitikaga liikluse jaoks, mida sa ei suuda liigitada.
Mis läheb katki, kui ehitad selle ise
Android lubab üldiselt korraga ühte aktiivset VPN-i, seega sinu filtreeriv tunnel ja privaatsustunnel võistlevad sama koha pärast, kui tooted ei toeta aheldamist. Alati sisse lülitatud VPN koos ühenduste blokeerimisega muudab ebaõnnestumise viisi viisil, mis siin loeb: liiklus, mis ei saa tunnelisse siseneda, visatakse ära, selle asemel et see otse saata, mida lekkimist takistav disain tahab ja mida silumissessioon harva ootab.
Pakettide nähtavus on teine lõks. Rakenduse paketinime lahendamine võib ebaõnnestuda veaga NameNotFoundException ja uuemates Androidi versioonides sõltub nähtavate pakettide hulk deklareeritud päringutest. Käsitle erandit, selle asemel et eeldada, et iga nimi laheneb, ja loe nimekiri uuesti, kui rakendusi paigaldatakse või eemaldatakse, selle asemel et seda igavesti vahemällu hoida.
Hallatavad seadmed lisavad kolmanda omaniku. Ettevõtte mobiilsuspoliitika saab määrata rakendusepõhise VPN-i või alati sisse lülitatud profiili ja tavaline rakendus ei saa seda mööda minna. Kontrolli, kas seade on hallatav, enne kui oma koodi silud, sest sel juhul ei pruugi nimekiri, mida proovid muuta, olla muudetav kellelegi, kes telefonil käes on.
Testi seda rakendusega, mida kontrollid
Ära testi rakendusega, mida proovid filtreerida. Kasuta teist rakendust, mille võrgukäitumist saad jälgida, ja kontrolli, kas selle liiklus väljub sinu tunnelist, samal ajal kui sihtmärgi oma ei välju. Kui mõlemad jäävad sisse, poliitika töötab ja sihtmärk on välja jäetud; kui kumbki ei välju, on tunnel ise vale ja rakenduste nimekiri pole probleem.
Seejärel otsusta, millist kolmest asjast sa tegelikult ehitad. Rakendusepõhine tunnel on ehitaja API, nimekiri on osa sinu profiilist. Seadme tulemüür on pakettide käsitlemine pluss elutsükkel, mida saad kaitsta. Kellegi teise VPN-i muutmine ei ole üldse toetatud tee ja aus vastus on, et see seade kuulub sellele tootele.