Sababta aysan app-kaaga Android u kordhin karin profile-ka VPN ee nidaamka
VpnService waxay dhistaa tunnel uu app-kaagu leeyahay; ma kordhin karto mana beddeli karto gelitaannada PPTP, L2TP ama IPsec ee telefoonka. Raac xadka oo dooro wadada saxda ah.
Waxaad taabataa safka VPN ee Settings-ka, waxaad aragtaa profile qof kale rakibay, oo waxaad bilaabtaa inaad raadiso wicitaanka ku daraya mid. Wicitaan sidan oo kale ma jiro. App-ku wuxuu furan karaa tunnel u gaar ah isagoo isticmaalaya VpnService, laakiin gelitaannada liiskaas waxay leeyihiin platform-ka iyo macmiilka sameeyay. Ogaanshaha saxda ah halka xadku yaal waxay ku badbaadinaysaa toddobaad aad ku daba-geliso fasallo qarsoon.
Ka bilow waxa shaashadda Settings-ka muujiso
Liiska VPN waa diiwaan profiles ay rakibeen nidaamka ama macmiilka soo-saaraha: PPTP, L2TP/IPsec, IKEv2, iyo safafka ay riixeen app OEM ama MDM. Saf kastaa wuxuu qaataa cinwaanka server-ka, aqoonsiga iyo hirgelinta borotokool ee ka baxsan habkaaga. Marka isticmaalahu taabto Isku xidh halkaas, macmiilka platform-ka ayaa tunnel-ka kor u qaada, ma aha koodkaaga. Taasi waa sababta safku uga badbaado dib-u-dhajis iyo sababta ka-takrifalka app-kaaga uusan waligiis uga saarin.
Dhinaca isticmaalaha liisku wuxuu u eg yahay dusha API, meel ay ku darista VPN ay tahay hal ujeeddo oo keliya. Sidaas ma aha. Meelaha kaliya ee dadweynaha ee taabta waa ujeeddoyinka socodka, iyo wax kasta oo ku qora waxay leeyihiin platform-ka ama qayb xoq leh.
Natiijada wax ku oolka ah: haddii qoraal taageero u sheego isticmaalayaasha inay ku daraan profile-ka Settings-ka, app-kaagu gabi ahaanba qayb ka ma aha socodkaas.
Waxa VpnService dhab ahaan ku siinayo
VpnService iyo VpnService.Builder waxay qeexaan hal tunnel uu app-kaagu leeyahay. Waxaad ku darsataa cinwaanno, waddooyin, server-yada DNS iyo MTU, waxaad ku xaddidaa taraafikada addAllowedApplication() ama addDisallowedApplication(), ka dibna establish() wuxuu soo celiyaa ParcelFileDescriptor interface TUN. Waqtigaas ka dib app-ku wuxuu akhriyaa xirmooyinka IP oo qoraa jawaabaha, taas oo macneheedu yahay borotokoolka adigaa leh inaad hirgeliso ama ku dhex-dhinto: OpenVPN, WireGuard, gaadiid gaar ah.
Waxba ka mid ah taxanahaas kama hadlo PPTP, L2TP/IPsec ama IKEv2. Builder ma laha furaha sheegaya isticmaal macmiilka L2TP ee nidaamka, mana jiro dib-u-wicitaan kuu ogolaanaya inaad maamusho profile uu platform-ku hore u leeyahay. Tani waa xadka dhabta ah, waana xad naqshadeed ee ma aha bannaanida oggolaanshaha.
Sidaas darteed app-ku wuxuu si buuxda u noqon karaa macmiil VPN Android-ka. Kaliya ma noqon karo maamule loogu talagalay macmiillyada la socda telefoonka.
Wada-hadalka oggolaanshaha ma aha qurxin
Maadaama tunnel-kaagu uu qaban karo taraafikada app-yada kale, nidaamku wuxuu ka codsadaa isticmaalaha inuu si cad u oggolaado. prepare() wuxuu soo celiyaa Intent ay tahay inaad bilowdo, oggolaanshaha waxaa ku xiran xirmadaada, iyo inta tunnel-ku shaqaynayo bar-taallada waxay muujinaysaa tilmaame joogto ah. VPN labaad oo soo baxa wuxuu damiyaa kii ugu horreeyay, sababtoo ah Android waxay socodsiisaa hal VPN firfircoon mar keliya.
Qaanuunka hal-firfircoon wuxuu dadka ku turunturoodaa tijaabada. Waxaad kor u qaadaa tunnel-kaaga inta macmiil shirkadeed ku xiran yahay oo waxaad go'aansataa in koodkaagu jaban yahay, halka platform-ku ay kaliya ka soo wareegtay macmiilka kale. Oggolaanshaha dib ayaa loo noqon karaa, prepare() wuxuu soo celin karaa null aaladaha aan lahayn hawlgal oggolaansho, sidaas darteed establish() wali waa inuu maareeyaa guuldarada.
API-yada qarsoon iyo ujeeddoyinka dhejisyada
Jawaabaha hore waxay tilmaamayaan fasallada com.android.internal iyo interface-yada AIDL ee macmiilka dhex-dhisan isticmaalo. Kuwani kuma jiraan SDK, way is beddelaan inta u dhaxaysa sii-deynta iyada oo aan ogeysiis lahayn, iyo dukaamada app-yada waxay u arkaan marin-taas khatar. Root-garaynta aaladda sidoo kale ma ka dhigto mid deggan, sababtoo ah root iyo marin u helista API qarsoon waa laba mushkiladood oo aan xiriir lahayn.
Kaaliyaha socodka la taageeray waa Settings.ACTION_VPN_SETTINGS, oo qiimihiisu yahay android.net.vpn.SETTINGS. Xalli ka hor intaadan bilaabin, sababtoo ah qaar ka mid ah build-yada OEM ma keenaan hawlgalkaas, oo u gudub tallaabooyin qoraal ah marka xallintu guuldareysto. Wuxuu isticmaalaha geeynayaa shaashadda oo waxba ma habeeysto.
Waddooyinka milkiilaha aaladda iyo MDM waa ka reebnaanta dadku inta badan ula jeedaan. DevicePolicyManager wuxuu tilmaami karaa xirmo VPN had iyo jeer shid, qaabaynta la maamulo waxay horay u soo dejisan kartaa dhejisyo macmiil taageera, laakiin tani weli ma aha SDK dadweyne qoraya profile PPTP.
Go'aanka ka eeg dhinaca isticmaalaha
Haddii badeecadaadu u baahan tahay inay qaaddo taraafik, qorshee VpnService iyo stack borotokool dhab ah, oo u qoondee waqti socodka oggolaanshaha iyo qaanuunka hal VPN. Haddii hadafku yahay in lagu xidhmo profile shirkadeed jira, shaqadaadu waa hanuunin: isku-xir qoto dheer shaashadda dhejisyada, diiwaangeli goobaha, oo u daa macmiilka platform-ka inuu sameeyo tunnel-ka. Haddii app-ku kaliya u baahan yahay inuu gaaro barta ugu dambeysa ee gaar ah, wuxuu gabi ahaanba u baahan tahay tunnel u gaar ah.
Qor go'aankaas ka hor intaadan qorin kood, sababtoo ah saddexda waddo waxba kama wadaagaan sprint-ka koowaad ka dib.
Hubin ugu dambeysa ka hor intaadan bilaabin: shuruuddu ma sheegtaa in app-kayagu xidhmo, mise in aaladdu xidhmo? Tan koowaad waa VpnService, tan labaad waa profile aadan abuuri karin. Jumladahaas si sax ah u dhigi waa ka jaban tahay dib-u-habeyn kasta.