Android VPN pro App: eng App auszeschléissen ass net se blockéieren
Déi Lëscht pro App um Bildschierm gehéiert engem eenzegen Tunnelbesëtzer, an eng App auszeschléissen leet se ëm deen Tunnel erëm amplaz se aus dem Netz ze huelen. Fänk do un.
Zwou Persounen stellen déi selwecht Fro an kréien onveräinbar Äntwerten, well se op verschiddene Plaze stinn. Déi eng huet d System-VPN-Astellungen op an ännert eng Lëscht vun Applikatiounen. Déi aner schreift VpnService.Builder.addDisallowedApplication() an engem Editor. Béid nennen et en VPN-Filter pro App. Nëmmen eng vun hinnen huet d Kontroll, déi se beschreift, a keng vun hinnen blockéiert eppes.
Fänk um Bildschierm un, deen de Benotzer gesäit
Maach d Astellungen op, fann den VPN-Agang a kuck op d Verbindung, déi wierklech aktiv ass. Wann de Client eng Lëscht pro App ubitt, gehéiert déi Lëscht zum eegene Tunnel vum Client. D Plattform verëffentlecht keng allgemeng API, iwwer déi eng onsäiteg App d App-Wiel vun engem aneren VPN liesen oder änneren kéint, dofir kann eng zweet App déi Lëscht net fir de Benotzer reparéieren.
Dëst ass déi éischt Gafel um Wee. Wann de installéierte VPN sou eng Astellung net huet, gëtt et näischt ronderëm ze codéieren: d Funktioun feelt am Produkt, deem den Tunnel gehéiert. Wann en se huet, ass déi richteg Korrektur an deem Bildschierm, gemaach vun deem, deen en opmaache kann.
Folg dem Paket an en Tunnel
Wann deng eege App en Tunnel baut, erstellt se eng TUN-Schnittstell a deklaréiert, wéi eng Applikatiounen hire Verkéier era kënnt. D Memberschaftsopruff geschéien ier d Schnittstell opgeriicht gëtt, an duerno ass de Reegelsatz fir déi Sëtzung fest:
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 hereDéi Opruff gëllen nëmme fir den Tunnel, deen deng App just erstallt huet, an fir näischt anescht. Si sinn keng Politik fir dat ganzt Gerät, si bleiwen net fir aner Clienten, a si kënnen net an den VPN vun engem aneren erakommen. Wann en Opruff vum Builder eng Ausnam geheit, well de Paket net opgeléist ka ginn, gëtt d Schnittstell ni opgeriicht, wat en proppere Feeler ass an net en stille.
Firwat den Ausschloss aus wéi eng Block ausgesinn huet
Eng ausgeschloss App gëtt ëm däin Tunnel op dat ënnerläit Netz ëmgeleet. Dat ass d Géigendeel vum Blockéieren: de Verkéier verléisst nach ëmmer d Gerät, just baussent der Schnittstell, déi s du kontrolléiers. Eng App am Firewall-Stil mécht dat Ëmgedreint. Si léisst de Verkéier vun der App an hire Tunnel an da werft se d Paketen ewech, oder refuséiert se virun ze schécken, sou datt d Schnittstell déiselwecht ass an d Richtung vun der Politik ëmgedréint.
D Aarbecht hannert deem Ëmdréie ass keng Konfiguratiounsflagg. Du lies IP-Paketen aus dem Tunnel-Deskriptor, entscheede pro Floss an iwwerdréis se duerch eng geschützt Socket oder werfs se ewech. Alles, wat s de net behandelst, hält einfach un, an dofir gesäit en hallef fäerdegen Tunnel aus wéi en gebrochene Netz an net wéi e Filter, deen funktionéiert. Wann däin Zil eng Block ass, reche mat Paketbehandlung, engem Virgrondservice an enger schrëftlecher Politik fir Verkéier, deen s de net klassifizéiere kanns.
Wat geet futti, wann s et selwer baus
Android erlaabt allgemeng nëmmen ee aktiven VPN gläichzäiteg, dofir konkurréieren däin Filter-Tunnel an en Dateschutz-Tunnel ëm déiselwecht Plaz, ausser d Produkter ënnerstëtzen d Verkettegung. Ëmmer-aktiv VPN mat Verbindungsblock ännert de Modus vum Feeler op eng Manéier, déi hei zielt: Verkéier, deen net an den Tunnel kënnt, gëtt ewechgeworf amplaz direkt geschéckt, wat en Design géint Leeche wëll an wat eng Debug-Sëtzung seelen erwaart.
Paketsiichtbarkeet ass déi zweet Fal. D Opléisung vum Paketsnumm vun enger App kann mat NameNotFoundException feelen, an op méi neien Android-Versiounen hänkt de Set vu Paketen, déi s de gesäis, vun de Queryen of, déi s de deklaréiert hues. Behandel d Ausnam, amplaz unzehuelen, datt all Numm sech opléist, a lies d Lëscht nei, wann Applikatiounen installéiert oder ewechgeholl ginn, amplaz se fir ëmmer ze cacheschen.
Verwalt Geräter bäi en drëtte Besëtzer derbäi. Eng Politik fir Betribsmobilitéit kann en VPN pro App oder en ëmmer-aktiv Profil setzen, an eng gewéinlech App kann dat net iwwerschreiwen. Kontrolléier, ob d Gerät verwalt gëtt, ier s de däin eegene Code debuggst, well an deem Fall ass d Lëscht, déi s de wëlls änneren, vläicht net vun engem ze editéieren, deen den Telefon hält.
Test et mat enger App, déi s de kontrolléiers
Test net mat der App, déi s de wëlls filteren. Benotz eng zweet Applikatioun, där hire Netzverhalen s de ka beobachten, a kontrolléier, ob hire Verkéier duerch däin Tunnel erausgeet, während dee vum Zil et net mécht. Wann béid dobannen bleiwen, funktionéiert d Politik an d Zil ass ausgeschloss; wann keng erausgeet, ass den Tunnel selwer falsch an d App-Lëscht ass net de Problem.
Du entscheed, wéi eng vun dräi Saachen s de wierklech baus. En Tunnel pro App ass d Builder-API, mat der Lëscht als Deel vun däin Profil. Eng Gerätefirewall ass Paketbehandlung plus e Liewenszyklus, deen s de verdeedegen kanns. Den VPN vun engem aneren änneren ass iwwerhaapt kee gestäipte Wee, an d éierlech Äntwert do ass, datt d Astellung zu deem Produkt gehéiert.