Android VPN යෙදුමකට රථවාහන රැගෙන යාමට, කාන්දු වීම් අවහිර කිරීමට හෝ නැවත ඇරඹීමෙන් පසු රැඳී සිටීමට ඉඩ දෙන්නේ රූට් නොවේ. මිනිසුන් මේ සියල්ල „යෙදුමට VPN අවසරයක් ඇත“ ලෙස සාරාංශ කරන අතර, එය වෙනස් යාන්ත්‍රණ තුනක් සඟවයි: පරිශීලකයා ලබා දෙන අනුමැතිය, පද්ධතිය සාදන පැකට් අතුරුමුහුණත, සහ යෙදුම නිර්වචනය නොකළ යුතු වේදිකා අවහිර කිරීමේ ප්‍රතිපත්තිය. Android VPN නිර්මාණයක් සමාලෝචනය කිරීම යනු යම් ප්‍රකාශයක් ඇත්ත වශයෙන් මේ තුනෙන් කුමක් මත රැඳී ඇත්දැයි ඇසීමයි, මන්ද එක් එකකට වෙනස් හිමිකරුවෙකු සහ වෙනස් අසාර්ථක ආකාරයක් ඇත.

අනුමැතිය පද්ධති ක්‍රියාකාරකමක් හරහා පැමිණේ

VpnService.prepare() කිසිවක් ලබා නොදේ. අනුමැතිය නොමැති විට එය පද්ධති අනුමැති ක්‍රියාකාරකම වෙත intent එකක් ආපසු ලබා දෙන අතර, පරිශීලකයාට සේවාව අනුමත කළ හැකි වන පරිදි යෙදුම එම සංවාදය විවෘත කරයි. යෙදුමේම ක්‍රියාවලිය ආරම්භ කිරීම, මැනිෆෙස්ට් එකට අවසරයක් එකතු කිරීම, හෝ අභිරුචි „VPN සක්‍රීය කරන්න“ තිරයක් පෙන්වීම අනුමැතිය සාදනු නොලැබේ.

අනුමැතියට පරාසයක් ද ඇත. එය පරිශීලක පැතිකඩක ඇති පැකේජයකට අයත් වන බැවින්, පුද්ගලික පිටපත සහ කාර්ය පිටපත වෙනස් තීරණ වන අතර, උපාංග හිමිකරුවෙකුට කළමනාකරණය කරන පැතිකඩක් පුද්ගලික එකකට වඩා වෙනස් ලෙස සූදානම් කළ හැක. සංවාදය කිසිදා නොපෙනී prepare() null ලබා දෙන්නේ නම්, එම පැතිකඩේ එම පැකේජයට අනුමැතිය දැනටමත් ඇත; එය යෙදුම විශ්වාසදායක බවට සාක්ෂියක් නොවේ, අවසරය ඇති බව පමණි.

අතුරුමුහුණත යනු පද්ධතිය ඉටු කරන ඉල්ලීමකි

අනුමැතියෙන් පසු යෙදුම VpnService.Builder භාවිතයෙන් තමාට අවශ්‍ය දේ විස්තර කරයි: ලිපින, මාර්ග, DNS සේවාදායක, MTU සහ ආධාරක වන තැන, ඇතුළත් කළ යුතු හෝ බැහැර කළ යුතු යෙදුම්. establish() පද්ධතියට ටනල් අතුරුමුහුණත සාදා ගැලපෙන රථවාහන එයට යැවීමට ඉල්ලා සිටියි. මාර්ගගත කිරීමේ තීරණය පද්ධතියට හිමිය. යෙදුම ගොනු විස්තරකය ලබා ගෙන පසුව පැකට් සමඟ ප්‍රයෝජනවත් දෙයක් කළ යුතුය.

What you observeWho actually owns it
VPN consent dialogThe system, triggered by prepare()
Routes, DNS and app listsThe app requests them; the system applies them
One active VPN per profileThe platform; a new service replaces the old one
Always-on and block-without-VPNDevice policy enforced by the platform

එම වගුව එකම තැනක ඇති ස්ථාපන විද්‍යාවයි. යෙදුම පැකට් හැසිරවීමට සහභාගී වේ; අතුරුමුහුණත, මාර්ගගත කිරීමේ වගුව හෝ ධාවනය කළ හැකි සේවා ගණන එයට අයත් නොවේ.

ටනල් සොකට් එක එහිම ටනලයෙන් පැන යා යුතුය

සංකේතනය කළ රථවාහන රැගෙන යන සම්බන්ධතාවයම සොකට් එකකි. එය යෙදුම දැන් සාදා ඇති අතුරුමුහුණතට ආපසු මාර්ගගත කරන්නේ නම්, ටනලය ටනලය මත රඳා පවතින අතර නතර වේ. VpnService.protect() එම සොකට් එක පහළ ජාලයට බැඳ ගනී, එවිට එය ග්‍රහණය මග හරියි; ඒ නිසාම නිවැරදි සේවාලාභියා පළමු අතට අත දීමට පෙර ඔහුගේ පිටත සොකට් එක ආරක්ෂා කරයි.

adb shell dumpsys connectivity | grep -i -A5 vpn
adb shell settings get global always_on_vpn_app
adb shell settings get global always_on_vpn_lockdown

මෙම විධාන ස්ථාපිත VPN ජාලය, සැමවිටම සක්‍රීය පැකේජය සහ ලොක් අගුළු සකසා ඇත්දැයි පෙන්වයි. ඒවා කියවීමට පමණක් වන නිරීක්ෂණ වේ: අගයන් නිර්මාණයේ ප්‍රකාශයට නොගැලපේ නම්, ප්‍රකාශය පද්ධතියේ තත්ත්වය ගැන නොව යෙදුමේ අතුරුමුහුණත ගැනය.

අවහිර කිරීම වේදිකාවට අයත් විය හැක

Android VPN භාවිත නොකරන සම්බන්ධතා අවහිර කරන ප්‍රතිපත්තියක් ලේඛනගත කරයි. එම බලාත්මක කිරීම වේදිකා ගිවිසුමකි, යෙදුමක් ලූපයක සම්බන්ධතා නැවත උත්සාහ කිරීම නොවේ. ස්විචය උපාංගයේ VPN සැකසීම්වල „VPN නොමැතිව සම්බන්ධතා අවහිර කරන්න“ ලෙස පිහිටා ඇති අතර, කළමනාකරණය කරන උපාංගයක හිමිකරුට එය මුළු පැතිකඩටම සක්‍රීය කළ හැක. අලෙවිකරණ ප්‍රකාශයක් ඇගයීමේදී මෙම වෙනස වැදගත් වේ: සේවාලාභියාට අගුළු නිරූපකයක් පෙන්වා ආක්‍රමණශීලීව නැවත සම්බන්ධ විය හැකි අතර, සෘජු රථවාහන තවමත් හැකි ය; නැතිනම් ආවරණය වූ යෙදුම් පද්ධතිය ලොක් අගුළු බලාත්මක කරන නිසා නොබැඳිව රැඳී සිටිය හැක.

අගුළු නිරූපකය යෙදුම විසින් අඳිනු ලැබේ, එබැවින් එය යෙදුම තමා සම්බන්ධිත යැයි විශ්වාස කරන බව පමණක් ඔප්පු කරයි. වෙනත් යෙදුමකට එහි ජාල ප්‍රවේශය අහිමි වේදැයි තීරණය කරන්නේ වේදිකාවයි, එබැවින් ප්‍රයෝජනවත් පරීක්ෂාව වන්නේ ටනලය සක්‍රීයව ඇති විට එම යෙදුම අසාර්ථක වන ආකාරය දැකීමයි.

යෙදුම් වෙළඳසැලේ „සැමවිටම සක්‍රීය“ ලේබලයද එම ගිවිසුම ප්‍රතිස්ථාපනය නොකරයි. සැමවිටම සක්‍රීය සහ ලොක් අගුළු උපාංග සැකසීම් වන අතර, බොහෝ විට උපාංග හිමිකරුවෙකු විසින් යොදනු ලැබේ, සහ බැහැර කළ යෙදුම් සඳහා ඒවායේ හැසිරීම වේදිකාව විසින් නිර්වචනය කරයි. සැකසීම කියවන්න, ලාංඡනය නොවේ.

නිර්මාණ සමාලෝචනය සඳහා ප්‍රශ්න හතරක්

පළමුව, කවුද අනුමැතිය දුන්නේ: කුමන පැකේජය, කුමන පැතිකඩ, සහ එය පරිශීලකයාද නැතිනම් කළමනාකරණය කරන උපාංග ප්‍රතිපත්තියද? දෙවනුව, යෙදුම ඉල්ලා සිටියේ කුමක්ද: කුමන මාර්ග, කුමන ලිපින පවුල්, කුමන යෙදුම් ඇතුළත් හෝ බැහැර කළාද? තෙවනුව, ටනලය නොමැති විට කුමක් සිදුවේද: පද්ධතිය අවහිර කරයිද නැතිනම් රථවාහන පහළ ජාලයට ආපසු වැටේද? සිව්වනුව, යෙදුම ලබා ගන්නා පැකට් සමඟ කුමක් කරයිද?

සිව්වන ප්‍රශ්නය අවසර ආකෘතියට පිළිතුරු දිය නොහැකි ප්‍රශ්නයයි. අනුමැතිය සහ TUN අතුරුමුහුණත ඔප්පු කරන්නේ යෙදුමට රථවාහන ලැබිය හැකි බවය, එය සංකේතනය කරන, සහකරු සත්‍යාපනය කරන හෝ පිරිසිදුව ප්‍රකෘති වන බව නොවේ. ඒවා ක්‍රියාත්මක කිරීමේ ගුණාංග වන අතර, අවංක සමාලෝචනය එහි කාලය ගත කරයි.

අනවශ්‍ය රූට් ඉල්ලීමක් ප්‍රතිඵලය kill switch ලෙස හැඳින්වීමෙන් නීත්‍යනුකූල නොවේ, සහ අනුමැති සංවාදයක් ආරක්ෂක විගණනයක් නොවේ. අවසර තුන වෙන් වෙන්ව තබන්න, සෑම ප්‍රකාශයක්ම පරීක්ෂා කළ හැකි වේ.

අදාළ ලිපි