Telefoonku dib ayuu u bilaabmaa, always-on waa shaqeynayaa, «xannib isku xirka VPN la'aanteed» waa shaqeynayaa, tunnel-kuna weligiis ma soo baxo. Waxba si khaldan looma habeyn: xannibaaddu shaqadeeda qabanaysaa, iyo isku dayga macmiilka laftiisa ee ah inuu gaaro barta ugu dambeysa ayaa sidoo kale hoos yimaada. Magaca barta ugu dambeysa waa in la xalliyaa ka hor inta tunnel-ku aanu jirin, macmiil loo ogol yahay inuu la hadlo shabakadda halka dhammaan abka kale aan loo ogoleyn. Fahamka qaybta sameysa tan, iyo nidaamka ay ku sameyso, ayaa sirtaas u beddela su'aal habeyn.

Waxa dhisaha VPN uu dhab ahaan codsado

Abka VPN ee Android ma siiyo madal cinwaanka server. Wuxuu dhisaa interface maxalli ah: cinwaanno iyo waddooyin tunnel-ka, xalliyayaasha ay abka ku isticmaalaan gudihiisa, ka dibna establish() wuxuu soo celiyaa file descriptor oo abku u akhriyo oo u qoro sida baakadaha IP ee ceyriin. Barta ugu dambeysa ee fog kama muuqato dhisahaas gudihiisa.

Taasi waa xaqiiqda qaabdhismeedka muhiimka ah. Madalku wuxuu abuuraa interface tun oo ku fuliyaa siyaasad; abku wuxuu ku fuliyaa gaadiidka meelaha isticmaalaha, taas oo macneheedu yahay in abku laftiisu xalliyo magaca barta ugu dambeysa oo uu furo isku xirka sirta ah. Sidaas darteed barta ugu dambeysa oo qaab magac martigeliyaha ah waa suurtogal — ma aha inuu madalku taageero magacyada, laakiin waa inuu madalku waligiis arkin barta ugu dambeysa.

Hal goob oo dhisaha ah ayaa haddana qaata cinwaanno: server-yada DNS. Waa inay ahaadaan cinwaanno tiro ah oo xalliyayaal, sida caadiga ah kuwa u hawlwadeenku rabo in laga weydiiyo tunnel-ka. Goobtaas waxay qeexaysaa halka abku u diraan weydiimaha marka tunnel-ku soo baxo. Waxba kama sheegto sida macmiilku u helo barta ugu dambeysa, iyo in labadaas loo arko hal dejis ayaa ah meesha jahwareerku ka bilaabmo.

Laba su'aalood oo DNS, ma aha mid

Su'aasha koowaad waa: halka abku u diraan weydiimaha marka tunnel-ku soo baxo? Jawaabtu waa cinwaan xalliyaha gudaha tunnel-ka, laga gaari karo interface tun, oo qaab dhismeed ahaan tiro ah.

Su'aasha labaad waa: sidee macmiilku u helaa barta ugu dambeysa ee u gaar ah ka hor inta tunnel-kaas aanu jirin? Raadintaas waxay dhacdaa tunnel-ka dibaddiisa, shabakadda hoose, habka macmiilka. Waxay isticmaali kartaa magac, waana inay isticmaashaa xalliye laga gaari karo qalabka VPN la'aanteed.

StageWho resolvesPathFailure looks like
Endpoint lookupThe VPN appUnderlying network, protected socketNever connects; no tunnel interface traffic
Peer authenticationClient and serverTunnel transportConnects then drops; certificate or key error
Private name lookupApps via the tunnelResolver inside the tunTunnel up, internal sites do not resolve

Saddex marxaladood, saddex calaamadood oo kala duwan. Hal fariin khalad ah oo leh «lama xiri karo» ayaa isku daraysa, taasina waa sababta dadku u bilaabaan inay wax ka beddelaan goobta server-ka DNS si ay u hagaajiyaan dhibaato dhacda ka hor inta goobtaas la akhrin.

Sababta bootstrap u xanniban karo

Always-on oo xannibaaddu shaqeyso waxay ka dhigan tahay in taraafikada aan VPN-ka gudihiisa ku jirin la tuuro, oo ay ku jirto taraafikada abka leh VPN-ka. Bixitaanku waa cad: abku wuxuu ku wacaa protect() socket, taas oo ku xirta shabakadda hoose si uu uga gudbo tunnel-ka oo loo ogolaado inuu baxo. Macmiil kasta oo VPN waa inuu tan u sameeyaa gaadiidkiisa, haddii kale waligiis ma gaaro server.

Hadda tixgeli baahin halka xalliyaha kaliya ee yaqaan magaca barta ugu dambeysa uu isagu gudaha tunnel-ka ku jiro. Macmiilku wuxuu u baahan yahay tunnel-ka si uu u xalliyo magaca, iyo magaca si uu u dhiso tunnel-ka. Taasi waa ku tiirsanaan wareeg ah oo dhab ah, oo wax habeyn macmiil ah ma xalliso. Waa khalad naqshadeed, ma aha bug.

Waqtigu wuxuu muujiyaa isla ku tiirsanaantaas qaabab fudud. Bilowga, ka hor furitaanka koowaad, qalabku waxaa laga yaabaa inuusan weli lahayn shabakad la isticmaali karo; captive portal, shabakaddu way jirtaa laakiin waxay xannibtaa wax kasta oo aan ahayn portal-ka; marka Wi-Fi loo guuro shabakadda mobilka, shabakadda hoose ee socket-ka la ilaaliyay way is beddelaysaa oo macmiilku waa inuu ogaado oo mar kale xalliyo. Mid kasta oo kuwan waa dhacdo bootstrap, oo mid kasta waa in si ula kac ah loo tijaabiyo halkii laga heli lahaa 3 subaxnimo.

Sababta xajinta jawaabtu aanay ahayn xal

Jidka ugu kacsan ee la tijaabin karo waa in magaca hal mar la xalliyo oo cinwaanka soo baxa lagu dhejiyo goob tiro ah, ama si adag loogu qoro dhis gaar ah. Waxay u muuqataa inay shaqeyso, oo waxay magac u beddeshaa sawir. Marka hawlwadeenku barta ugu dambeysa raro — guurin, isbeddel anycast, cinwaan gobol cusub — macmiilku wuu sii wadaa wicitaanka kii hore oo waxba UI-ga kuma sharaxo sababta.

Diiwaannada DNS waxay leeyihiin waqti nololeed si jawaabtu u beddelmi karto; keydintu waxay ku qeexan tahay waqtigaas, ma aha weligeed. Xajinta jawaabtu waxay tuurtaa habka magaca ka dhigaya mid ka wanaagsan cinwaanka, iyadoo haysata kharashka hawlgalka ee isticmaalka magaca.

Xajintu waxay inta badan la socotaa caado xun oo labaad: dabacsanaanta hubinta aqoonsiga sababtoo ah isku xirku hadda si kale ayuu u guuldareystaa. Xaqiijinta aqoonsiga server-ka qayb kama aha dhibaatada bootstrap, oo daciifinteedu waxay DNS dhibaato ku beddeshaa khatarta dhexgalka.

Naqshado ka badbaada dib u bilaabid

Habaynta waarta ma aha mid soo jiidasho leh. Isticmaal macmiil si sax ah u fuliya socket-yada la ilaaliyay oo xalliya barta ugu dambeysa ee shabakadda hoose, oo sii magac barta ugu dambeysa oo si dadban loo xalliyo, ama xalliye laga gaari karo tunnel-ka ka hor. Xannibaadda ha shaqeyso; gebi ahaan daminta si DNS u shaqeeyo waxay meesha ka saaraysaa hantida baahintu u jirto.

Meesha barta ugu dambeysa ay tahay inay si gaar ah u sii socoto, bixi jid bootstrap cad oo madalku isticmaali karo — xalliye laga gaari karo tunnel la'aan, ama isku xir maarayn oo hawlwadeenku hayo — oo jidkaas ka dhig mid cidhiidhi ah oo leh siyaasad, ma aha badhan isticmaale. Dukumeentiga Android VpnService waa tixraaca waxa madalku dammaanad qaado ee ku saabsan ilaalinta iyo meertada nolosha, oo tixraaca VpnService.Builder wuxuu xaqiijinayaa in goobta DNS ay qaadato cinwaanno tiro ah.

Ka dib hubi saddexda marxaladood, si kala horraysan, isku xir cusub ka dib dib u bilaabid: magaca barta ugu dambeysa waa la xalliyaa, tunnel-ku waa la aasaasaa oo lammaanaha waa la xaqiijiyaa, oo magac gaar ah waxaa lagu xalliyaa xalliyaha tunnel-ka. Haddii marxaladda koowaad guuldareysato, wax dambe ma shaqeyn karo, oo hagaajintu waxay leedahay jidka bootstrap — waligeed ma aha goobta xalliyaha.

  • Xallinta barta ugu dambeysa waxay dhacdaa abka gudihiisa, tunnel-ka dibaddiisa, socket la ilaaliyay.
  • Goobta DNS ee dhisaha waa abka tunnel-ka gudihiisa, ma aha barta ugu dambeysa ee macmiilka.
  • Xalliye laga gaari karo oo kaliya tunnel-ka waa xannibaad, ma aha bilow gaabis ah.
  • Tijaabi barta ugu dambeysa, xaqiijinta iyo raadinta gaarka ah si gooni ah dib u bilaabid ka dib.

Maqaallo la xiriira