App-ka Android wuxuu xalliyaa magacyada VPN-ka dibaddiisa: liiska hubinta xidhitaanka
Android waxay magacyo ku xallin kartaa shabakadda caadiga ah iyada oo VPN-ku shaqeynayo. Ku xidh habka shabakadda VPN oo hubi resolver-ka uu app-ku runtii isticmaalay.
App Android ah wuu ku guuldareystaa inuu xalliyo magac gudaha ah halka browser-ka macmiilka VPN-ka laftiisu gaaro, isla build-kaana wuu ka shaqeeyaa telefoon kale. URL-ku maaha doorsoomaha. Doorsoomuhu waa shabakadda habka app-ku loo ogol yahay inuu u isticmaalo xallinta, Android-na ma dammaanad qaadinayo in VPN-ka firfircoon uu yahay shabakadda ay isticmaalaan socket-yadaada. Samee hubinnadan si taxane ah oo jooji marka sawirka resolver-ku uusan la jaanqaadin malahaaga.
Tallaabo 1: caddee shabakadda uu app-ku ku jiro
Akhri aragtida app-ka laftiisa, ma aha bar-ta-steytka. ConnectivityManager ka hel shabakadda firfircoon, LinkProperties-keeda, liiska server-yada DNS iyo dejinta DNS-ka gaarka ah. Haddii liisku uu leeyahay resolver-ka VPN, app-ku wuxuu leeyahay waddo xaggeeda; haddii uu leeyahay resolver-ka Wi-Fi, tunnel-ku maaha shabakadda caadiga ah ee habkaas.
Astaanta VPN waxay kaliya sheegtaa in tunnel-ku jiro. Ma sheegto in habka app-ka lagu xidhay, Android-na had iyo jeer ma marinayo xallinta magacyada shabakadda u muuqata mid firfircoon. App-yada VPN-ka maxalliga ah ee u gudbiya qalab kale, shabakadaha Wi-Fi ee aan internet-ka lahayn iyo build-yada soo-saaraha waxay app-ka uga tagi karaan inuu weydiiyo resolver-ka caadiga ah halkii uu weydiin lahaa server-yada tunnel-ka.
Tallaabo 2: codso gaadiidka VPN oo xidh habka
Marka app-ku qasab ku yahay inuu isticmaalo resolver-ka tunnel-ka, codso shabakad leh gaadiid VPN oo ku xidh habka call-back-ka dhexdiisa, si koodhku uusan u qiyaasin goorta shabakaddu soo baxayso:
val request = NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_VPN)
.build()
connectivityManager.requestNetwork(request, object : NetworkCallback() {
override fun onAvailable(network: Network) {
val bound = connectivityManager.bindProcessToNetwork(network)
Log.i(TAG, "bound to VPN network: " + bound)
}
})
Wicitaanku wuxuu beddelaa shabakadda caadiga ah ee habka oo dhan, sidaas darteed socket kasta oo ka dib la abuuray wuu isticmaalaa. Socket-yada hore u jiray waxay hayaan shabakaddii lagu abuuray, taas ayaa sababta kaydka xidhiidhka ee xidhitaanka ka hor la furay uu ku sii xallin karo waddada hore. Qiimaha la celiyo waa boolean, natiijada false-na waxay ka dhigan tahay in xidhitaanku aanu dhicin; dib ugu dayo dib u dhac gaaban oo qor labada isku day.
Tallaabo 3: ku xaddid xidhitaanka wixii u baahan
Xidhitaanka habka oo dhan waa mid qallafsan. Telemetry, hubinta cusboonaysiinta iyo SDK-yada dhinac saddexaad ayaa iyaguna u guura tunnel-ka, haddii tunnel-ku aanu internet lahaynna way bilaabaan inay guuldareystaan. Hal codsi u isticmaal warshadda socket-ka shabakadda oo wax kasta oo kale ku daawo caadiga qalabka. Si ula kac ah u dooro hal moodel: xidhidh cidhiidhi ah xidhiidh kasta, ama xidhidh hab leh furitaan cad marka VPN-ku lumo.
Laba sifo oo resolver-ka ayaa laga adkaan karaa xidhitaanka iyada oo aan khalad jirin. DNS-ka gaarka ah ee habka adag wuxuu su'aalaha u diraa server DoT magac leh halkii uu u diri lahaa resolver-ka shabakadda, app-ka keenana macmiil DNS-over-HTTPS u gaar ah gebi ahaanba wuu dhaafaa resolver-ka nidaamka. Hubi labadaba ka hor inta aadan go'aansan in xidhitaanku guuldareystay. Su'aal marnaba aan gaarin server-ka DNS ee VPN-ka kama soo muuqan doonto wax log ah oo dhinaca tunnel-ka ah.
Tallaabo 4: ha aaminin xannibaadda CONNECTED
NetworkType.CONNECTED ee WorkManager waxay ka dhigan tahay in shabakad xidhan tahay, gaadiidka VPN-na wuu buuxiyaa xitaa marka xidhiidhka Wi-Fi ama gacanta hoose uu lumo. Shaqadu way socotaa, codsi kastaa wuu guuldareystaa, siyaasadda dib-u-habayntana waxay u beddeshaa duufaan u eg bug-ka jadwalka. Tunnel-ku waa shabakad; xannibaaddu marnaba ma ahayn hubinta internet-ka.
Hubi awoodda shaqadu runtii u baahan tahay, sida gelitaanka internet-ka la xaqiijiyay, oo haysa siyaasad dib-u-dayasho xaddidan oo leh dib-u-noqosho. Haddii shaqadu u baahan tahay magac gaar ah, ku xalli magacaas shabakadda la doortay ka hor inta aadan shaqada qaban, oo si degdeg ah ugu guuldareyso khalad cad halkii aad ku celin lahayd codsi aan marnaba guulaysan karin.
Tallaabo 5: qor caddaynta oo dib u tijaabi baaxadda
Qor noocyada gaadiidka shabakadda la doortay, server-yada DNS ee ka yimid LinkProperties, haddii xidhitaanku soo celiyay true, iyo guuldarada saxda ah ee codsiga kowaad. Kadib orod magac gaar ah iyo magac dadweyne isla xidhitaankaas hoostiisa. Labadaas waxay muujinayaan haddii app-ku isticmaalay resolver-ka tunnel-ka ama si aamusnaan ah ugu soo laabtay caadiga qalabka, taasna waa farqiga uu isticmaaluhu dareemo.
Ku celi nooca Android-ka ugu duugga ah ee aad taageerto iyo hal siideyn oo hadda jirta. Dabeecadda resolver-ka ee waddada caadiga ah u muujisa mid sax ah waa isla goobta qalabka iyo noocyadu ku kala duwan yihiin, build-ka ku guuleysta kaliya qalabka tijaabada ugu cusubna lama xaqiijin baaxadda aad u dirto. adb shell dumpsys connectivity waa hab degdeg ah oo lagu xaqiijiyo shabakadaha iyo awoodaha qalabku soo sheegayo inta aad guuldarada dib u soo saarayso.