Dy persona bëjnë të njëjtën pyetje dhe marrin përgjigje të papajtueshme, sepse qëndrojnë në vende të ndryshme. Njëri ka të hapur ekranin e cilësimeve të VPN-së të sistemit dhe po redakton një listë aplikacionesh. Tjetri shkruan VpnService.Builder.addDisallowedApplication() në një redaktor. Të dy e quajnë filtër VPN për çdo aplikacion. Vetëm njëri prej tyre zotëron kontrollin që përshkruan, dhe asnjëri nuk po bllokon asgjë.

Fillo nga ekrani që sheh përdoruesi

Hap Cilësimet, gjej zërin VPN dhe shiko lidhjen që është vërtet aktive. Nëse klienti ofron një listë për çdo aplikacion, ajo listë i takon tunelit të vetë klientit. Platforma nuk publikon një API të përgjithshme përmes së cilës një aplikacion i palidhur mund të lexojë ose ndryshojë zgjedhjen e aplikacioneve të një VPN tjetër, prandaj një aplikacion i dytë nuk mund ta rregullojë atë listë për përdoruesin.

Kjo është pirja e parë e rrugës. Nëse VPN-ja e instaluar nuk e ka këtë cilësim, nuk ka çfarë të anashkalohet me kod: funksioni mungon në produktin që zotëron tunelin. Nëse e ka, rregullimi i duhur është në atë ekran dhe e bën personi që mund ta hapë.

Ndiq paketën në një tunel

Kur aplikacioni yt ndërton një tunel, ai krijon një ndërfaqe TUN dhe deklaron se cilat aplikacione e kanë trafikun që hyn në të. Thirrjet e anëtarësisë ndodhin përpara se ndërfaqja të vendoset, dhe pas kësaj grupi i rregullave është i fiksuar për atë sesion:

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

Këto thirrje vlejnë vetëm për tunelin që aplikacioni yt sapo krijoi dhe për asgjë tjetër. Ato nuk janë politikë e të gjithë pajisjes, nuk vazhdojnë për klientë të tjerë dhe nuk mund të arrijnë në VPN-në e dikujt tjetër. Kur një thirrje e ndërtuesit hedh një përjashtim sepse paketa nuk mund të zgjidhet, ndërfaqja nuk vendoset kurrë, çka është një dështim i pastër dhe jo i heshtur.

Pse përjashtimi dukej si bllokim

Një aplikacion i përjashtuar drejtohet rreth tunelit tënd në rrjetin poshtë tij. Kjo është e kundërta e bllokimit të tij: trafiku ende largohet nga pajisja, vetëm jashtë ndërfaqes që ti kontrollon. Një aplikacion në stil muri zjarri bën të kundërtën. Ai e pranon trafikun e aplikacionit në tunelin e vet dhe më pas i hedh paketat, ose refuzon t'i përçojë, kështu që ndërfaqja është e njëjta dhe drejtimi i politikës është përmbysur.

Puna pas atij përmbysjeje nuk është një flamur konfigurimi. Ti lexon paketa IP nga përshkruesi i tunelit, vendos për çdo rrjedhë dhe më pas i përçon përmes një soketi të mbrojtur ose i hedh. Çdo gjë që nuk trajton thjesht ndalon, dhe për këtë arsye një tunel gjysmë i përfunduar duket si rrjet i prishur dhe jo si filtër që punon. Nëse qëllimi është bllokimi, parashiko trajtimin e paketave, një shërbim në plan të parë dhe një politikë të shkruar për trafikun që nuk mund ta klasifikosh.

Çfarë thyhet kur e ndërton vetë

Android në përgjithësi lejon vetëm një VPN aktive në një kohë, prandaj tuneli yt i filtrimit dhe një tunel privatësie konkurrojnë për të njëjtin vend, përveç nëse produktet mbështesin zinxhirim. VPN gjithmonë i ndezur me bllokim lidhjesh e ndryshon mënyrën e dështimit në një mënyrë që ka rëndësi këtu: trafiku që nuk mund të hyjë në tunel hidhet në vend që të dërgohet drejtpërdrejt, gjë që do një dizajn kundër rrjedhjeve dhe që një sesion korrigjimi rrallë e pret.

Dukshmëria e paketave është kurthi i dytë. Zgjidhja e emrit të paketës të një aplikacioni mund të dështojë me NameNotFoundException, dhe në versione më të reja të Android grupi i paketave që mund të shohësh varet nga pyetjet që ke deklaruar. Trajto përjashtimin në vend që të supozosh se çdo emër zgjidhet, dhe rilexo listën kur aplikacionet instalohen ose hiqen, në vend që ta mbash përgjithmonë në cache.

Pajisjet e menaxhuara shtojnë një pronar të tretë. Një politikë e lëvizshmërisë së ndërmarrjes mund të vendosë VPN për çdo aplikacion ose një profil gjithmonë i ndezur, dhe një aplikacion i zakonshëm nuk mund ta anashkalojë. Kontrollo nëse pajisja menaxhohet përpara se të korrigjosh kodin tënd, sepse në atë rast lista që po përpiqesh të ndryshosh mund të mos redaktohet nga askush që mban telefonin.

Provoje me një aplikacion që ti kontrollon

Mos provo me aplikacionin që po përpiqesh të filtrosh. Përdor një aplikacion të dytë, sjelljen rrjetësore të të cilit mund ta vëzhgosh, dhe kontrollo nëse trafiku i tij del përmes tunelit tënd, ndërsa ai i objektivit nuk del. Nëse të dy mbeten brenda, politika punon dhe objektivi është përjashtuar; nëse asnjëri nuk del, vetë tuneli është i gabuar dhe lista e aplikacioneve nuk është problemi.

Pastaj vendos cilën nga tri gjërat po ndërton vërtet. Një tunel për çdo aplikacion është API i ndërtuesit, me listën si pjesë të profilit tënd. Një mur zjarri pajisjeje është trajtim paketash plus një cikël jete që mund ta mbrosh. Ndryshimi i VPN-së së dikujt tjetër nuk është fare rrugë e mbështetur, dhe përgjigjja e ndershme atje është se cilësimi i takon atij produkti.

Artikuj të ngjashëm