VPN eftir forriti á Android: að undanskilja forrit er ekki að loka því
Listinn eftir forriti á skjánum tilheyrir einum göngueiganda, og að undanskilja forrit beinir því fram hjá þeim göngum í stað þess að taka það af netinu. Byrjaðu þar.
Tveir einstaklingar spyrja sömu spurningar og fá ósamrýmanleg svör, því þeir standa á mismunandi stöðum. Annar hefur skjá kerfisstillinga VPN opinn og er að breyta lista yfir forrit. Hinn er að skrifa VpnService.Builder.addDisallowedApplication() í ritli. Báðir kalla það VPN-síu eftir forriti. Aðeins annar þeirra á stjórnina sem hann lýsir, og hvorugur er að loka neinu.
Byrjaðu á skjánum sem notandinn sér
Opnaðu Stillingar, finndu VPN-færsluna og skoðaðu tenginguna sem er raunverulega virk. Ef biðlarinn býður lista eftir forriti tilheyrir sá listi eigin göngum biðlarans. Kerfið birtir ekki almennt API sem ótengd forrit geta notað til að lesa eða breyta forritavali annars VPN, svo annað forrit getur ekki lagað þann lista fyrir notandann.
Þetta er fyrsti klofningur leiðarinnar. Ef uppsetta VPN-ið hefur ekki þessa stillingu er ekkert til að kóða í kringum hana: eiginleikinn vantar í vöruna sem á göngin. Ef hún er til er rétta lagfæringin á þeim skjá, gerð af þeim sem getur opnað hann.
Fylgdu pakkanum inn í göng
Þegar þitt eigið forrit byggir göng býr það til TUN-viðmót og tilgreinir hvaða forrit hafa umferð sína inn í það. Aðildarköllin eiga sér stað áður en viðmótið er sett upp, og eftir það er reglusafnið fast fyrir þá lotu:
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 hereÞessi köll gilda um göngin sem forritið þitt bjó einmitt til og ekkert annað. Þau eru ekki stefna fyrir allt tækið, þau vara ekki fyrir aðra biðlara, og þau ná ekki inn í VPN einhvers annars. Þegar kall byggingarinnar kastar undantekningu vegna þess að ekki er hægt að leysa pakkann er viðmótið aldrei sett upp, sem er hrein bilun en ekki hljóðlát.
Hvers vegna undanskilningin leit út eins og lokun
Undanskilið forrit er beint fram hjá göngunum þínum á undirliggjandi netið. Það er andstæða þess að loka því: umferðin fer samt út úr tækinu, bara utan viðmótsins sem þú stjórnar. Forrit í stíl eldveggs gerir hið gagnstæða. Það hleypir umferð forritsins inn í göngin sín og hendir svo pökkunum, eða neitar að senda þá áfram, svo viðmótið er það sama og stefnan snúin við.
Vinnan á bak við þá viðsnúning er ekki stillingarflagga. Þú lest IP-pakka úr lýsingu ganganna, ákveður fyrir hverja strauma og sendir þá annaðhvort í gegnum varið socket eða hendir þeim. Allt sem þú annast ekki stöðvast einfaldlega, og þess vegna lítur hálfklárað göng út eins og bilað net frekar en sía sem virkar. Ef markmiðið er lokun skaltu gera ráð fyrir pakkameðferð, forgrunnsþjónustu og skrifaðri stefnu fyrir umferð sem þú getur ekki flokkað.
Hvað brotnar þegar þú byggir það sjálfur
Android leyfir yfirleitt aðeins eitt virkt VPN í einu, svo síugöngin þín og göng fyrir næði keppa um sama sætið nema vörurnar styðji keðjun. VPN sem er alltaf virkt með lokun tenginga breytir bilanatilfellinu á þann hátt sem skiptir máli hér: umferð sem kemst ekki inn í göngin er hent í stað þess að vera send beint, sem er það sem hönnun gegn leka vill og það sem kembingarlota á sjaldan von á.
Sýnileiki pakka er önnur gildran. Að leysa pakkanafn forrits getur mistekist með NameNotFoundException, og á nýrri Android-útgáfum fer safn pakka sem þú sérð eftir þeim fyrirspurnum sem þú hefur skilgreint. Meðhöndlaðu undantekninguna í stað þess að gera ráð fyrir að hvert nafn leysist, og lestu listann aftur þegar forrit eru sett upp eða fjarlægð í stað þess að geyma hann að eilífu í skyndiminni.
Stýrð tæki bæta við þriðja eiganda. Fyrirtækjastefna um hreyfanleika getur sett VPN eftir forriti eða snið sem er alltaf virkt, og venjulegt forrit getur ekki hnekkt því. Athugaðu hvort tækið er stýrt áður en þú kembir þinn eigin kóða, því í því tilfelli er listinn sem þú ert að reyna að breyta ef til vill ekki breytanlegur af neinum sem heldur á símanum.
Prófaðu með forriti sem þú stjórnar
Ekki prófa með forritinu sem þú ert að reyna að sía. Notaðu annað forrit sem þú getur fylgst með nethegðun þess, og athugaðu hvort umferð þess fer út um göngin þín á meðan umferð marksins gerir það ekki. Ef bæði vera inni virkar stefnan og markinu er sleppt; ef ekkert fer út eru göngin sjálf röng og forritalistinn er ekki vandamálið.
Ákveddu svo hvorja af þremur hlutum þú ert í raun að byggja. Göng eftir forriti eru API byggingarinnar, með listann sem hluta af sniðinu þínu. Eldveggur tækis er pakkameðferð auk lífsferils sem þú getur varið. Að breyta VPN einhvers annars er alls ekki studd leið, og heiðarlegt svar þar er að stillingin tilheyri þeirri vöru.