ഒഴിവാക്കിയ ആപ്പ് ഇപ്പോഴും ഓൺലൈനോ? ആപ്പ്, റൂട്ട് നിയമങ്ങൾ വ്യത്യസ്തമാണ്
Android ആപ്പ് VPN-ൽ നിന്ന് ഒഴിവാക്കുന്നത് അതിനെ ബ്ലോക്ക് ചെയ്യുന്നില്ല. അനുവാദ പട്ടികകൾ, UID നിയമങ്ങൾ, അയച്ച റൂട്ടുകൾ എന്നിവ പാതയുടെ വ്യത്യസ്ത ഭാഗങ്ങൾ നിർണ്ണയിക്കുന്നു.
പാക്കേജ് ഒഴിവാക്കുന്നത് ബ്ലോക്കല്ല, റൂട്ടിംഗ് നിർദ്ദേശമാണ്, അതിനാൽ VPN ബന്ധിപ്പിച്ചതിന് ശേഷം ലോഡ് ചെയ്യുന്ന പേജുകൾ പ്രതീക്ഷിതമാണ്, പരാജയത്തിന്റെ തെളിവല്ല. ഒഴിവാക്കൽ ആപ്പിനെ ബ്ലോക്ക് ചെയ്യുന്നതിന് പകരം ടണലിൽ നിന്ന് നീക്കുന്നു, സാധാരണ നെറ്റ്വർക്ക് അതിന്റെ ട്രാഫിക് വഹിക്കുന്നു. ഇവിടെ രണ്ട് വേറിട്ട നയങ്ങൾ കൂടിച്ചേരുന്നു: ഒന്ന് പ്രക്രിയകളെ തിരഞ്ഞെടുക്കുന്നു, മറ്റൊന്ന് ലക്ഷ്യങ്ങളെ. ആ ക്രമത്തിൽ വായിക്കുന്നത് ബന്ധിപ്പിച്ച ഐക്കണും പ്രവർത്തിക്കുന്ന ആപ്പും വൈരുദ്ധ്യമല്ലാത്തത് എന്തുകൊണ്ടെന്ന് വിശദീകരിക്കുന്നു.
ഒഴിവാക്കൽ നെറ്റ്വർക്ക് തുറന്ന് വെക്കുന്നത് എന്തുകൊണ്ട്
VpnService.Builder അനുവാദ പട്ടികയോ നിരോധന പട്ടികയോ സ്വീകരിക്കുന്നു, രണ്ടും ഒരിക്കലുമല്ല. അനുവാദ പട്ടികയിലുള്ള പാക്കേജുകൾ മാത്രമാണ് ടണലിലൂടെ പോകുന്നത്. നിരോധന പട്ടിക അത് തലകീഴാക്കുന്നു: പട്ടികയിലുള്ളവ ഒഴികെ ഓരോ പാക്കേജും ടണൽ ഉപയോഗിക്കുന്നു, പട്ടികയിലുള്ളവ ഭൗതിക പാത നിലനിർത്തുന്നു. അനുവാദ പട്ടികയിൽ ഇല്ലാത്ത പാക്കേജും ടണലിന് പുറത്താണ്, അതിനാൽ ആ മോഡിൽ മിക്ക ആപ്പുകൾക്കും ഒഴിവാക്കൽ സാധാരണ അവസ്ഥയാണ്.
ഇത് പ്രാദേശിക നിരോധന എൻട്രിയെ ഫയർവാൾ നിയമമല്ലാതെ റൂട്ടിംഗ് തീരുമാനമാക്കുന്നു. ഒരു ആപ്പിനെ ഹോസ്റ്റിൽ എത്തുന്നതിൽ നിന്ന് തടയുകയാണ് ആവശ്യമെങ്കിൽ, ടണൽ അതിനെ മൂടണം, സെർവറോ പ്രാദേശിക നയമോ ട്രാഫിക് നിരസിക്കണം. ആപ്പിനെ ടണലിൽ നിന്ന് നീക്കുന്നത് അതിന്റെ പാക്കറ്റുകൾ ഏത് ഇന്റർഫേസ് വഹിക്കുന്നു എന്ന് മാത്രം മാറ്റുന്നു.
Play Store സംഭവം സാധാരണ ബോധപൂർവമുള്ള ഉദാഹരണമാണ്. സ്റ്റോർ പാക്കേജ് ഒഴിവാക്കുന്നത്, VPN എക്സിറ്റ് കൈമാറ്റത്തെ തടസ്സപ്പെടുത്തുമ്പോൾ ഡൗൺലോഡുകൾക്ക് അടിസ്ഥാന കണക്ഷൻ ഉപയോഗിക്കാൻ അനുവദിക്കുന്നു, ഒഴിവാക്കൽ അർത്ഥം ബ്ലോക്കല്ല, വഴിമാറ്റമാണ് എന്ന് കാണിക്കുന്നു.
ഒരു പ്രൊഫൈൽ, ഒരു പട്ടിക
രണ്ട് കോളുകളും ഉപയോഗിച്ചാൽ ബിൽഡർ എക്സെപ്ഷൻ എറിയുന്നു, അതിനാൽ നിങ്ങളുടെ മുന്നിലുള്ള പ്രൊഫൈൽ അനുവാദ പട്ടികയോ നിരോധന പട്ടികയോ ആണ്. ആ ഒരു വസ്തുത പിന്നീടുള്ള ഓരോ നിരീക്ഷണവും എങ്ങനെ വായിക്കണം എന്ന് നിർണ്ണയിക്കുന്നു. റൂട്ടിംഗ് പട്ടികയ്ക്ക് മുൻപ് കോഡോ മാനേജ്ഡ് കോൺഫിഗറേഷനോ പരിശോധിക്കുക, കാരണം പട്ടികയാണ് ബാക്കി ഔട്ട്പുട്ടിന്റെ അർത്ഥം തീരുമാനിക്കുന്നത്. ഹൈബ്രിഡ് പ്രൊഫൈൽ നിരീക്ഷിക്കാവുന്ന അവസ്ഥയല്ല.
ഈ വ്യത്യാസം പുതുതായി ഇൻസ്റ്റാൾ ചെയ്ത ആപ്പ് എന്ത് ചെയ്യും എന്നും പ്രവചിക്കുന്നു. അനുവാദ പട്ടികയിൽ ആരെങ്കിലും ചേർക്കുന്നത് വരെ അത് പുറത്ത് നിൽക്കുന്നു, നിരോധന പട്ടികയിൽ സ്ഥിരസ്ഥിതിയായി ടണലിൽ ചേരുന്നു.
മാനേജ്ഡ് കോൺഫിഗറേഷനുകൾ അതേ തിരഞ്ഞെടുപ്പ് വ്യത്യസ്ത കീ നാമങ്ങളിൽ കാണിക്കുന്നു, ചില കൺസോളുകൾ അതിനെ പട്ടികയല്ലാതെ ഓരോ ആപ്പിനുമുള്ള VPN മോഡ് എന്ന് വിശേഷിപ്പിക്കുന്നു. പെരുമാറ്റം എന്നിട്ടും ആ രണ്ട് കോളുകളിലേക്ക് ചുരുങ്ങുന്നു, അതിനാൽ ലേബൽ വിശ്വസിക്കുന്നതിന് പകരം സെറ്റിംഗ് പാക്കേജ് പട്ടിക വരെ പിന്തുടരുക. ലേബലും പട്ടികയും യോജിക്കുന്നില്ലെങ്കിൽ പട്ടിക ജയിക്കുന്നു.
UID നിയമം പിന്തുടർന്ന് ടണൽ പട്ടികയിലേക്ക് പോകുക
Android ഓരോ ആപ്പിനും അതിന്റേതായ Linux ഉപയോക്തൃ ID നൽകുന്നു, VPN സേവനം UID ശ്രേണികളുമായി യോജിക്കുന്ന നയ നിയമങ്ങൾ ഇൻസ്റ്റാൾ ചെയ്യുന്നു. യോജിക്കുന്ന ട്രാഫിക് സ്ഥിരസ്ഥിതി റൂട്ട് tun ഉപകരണത്തിലേക്ക് ചൂണ്ടുന്ന റൂട്ടിംഗ് പട്ടികയിലേക്ക് അയക്കുന്നു. പട്ടിക നമ്പർ ഓരോ VPN ഇൻസ്റ്റൻസിനും അനുവദിക്കുന്നു, അതിനാൽ വീണ്ടും ബന്ധിപ്പിച്ചതിനോ രണ്ടാമത്തെ VPN പ്രൊഫൈൽ സൃഷ്ടിച്ചതിനോ ശേഷം അത് മാറുന്നു.
നിയമങ്ങളുടെ ഔട്ട്പുട്ടാണ് ഭൂപടം. ഓരോ വരിയും ഒരു തിരയൽ പട്ടികയെ പേരിടുന്നു, ആ പട്ടിക യോജിക്കുന്ന പാക്കറ്റുകൾ ടണലിൽ പ്രവേശിക്കുന്നുണ്ടോ എന്ന് തീരുമാനിക്കുന്ന സ്ഥിരസ്ഥിതി റൂട്ട് സൂക്ഷിക്കുന്നു.
adb shell ip rule show
adb shell ip route show table all
adb shell cmd package list packages -U | grep <package>
UID ലഭിക്കാൻ ആദ്യം മൂന്നാം കമാൻഡ് പ്രവർത്തിപ്പിക്കുക, തുടർന്ന് അത് ഉൾക്കൊള്ളുന്ന ശ്രേണിയുള്ള നിയമം കണ്ടെത്തുക. ആ നിയമം ഒരു പട്ടിക നമ്പറിലേക്ക് ചൂണ്ടുന്നു, ip route show table <n> ആ നമ്പർ ഉപയോഗിച്ച് tun ഉപകരണത്തിലൂടെ സ്ഥിരസ്ഥിതി റൂട്ട് ഉണ്ടോ എന്ന് കാണിക്കുന്നു. പട്ടികയിൽ സ്ഥിരസ്ഥിതി ഇല്ലെങ്കിൽ ആപ്പ് തിരഞ്ഞെടുക്കപ്പെട്ടു പക്ഷേ പാതയില്ല, അത് വേറെ പരാജയമാണ്.
ഈ കമാൻഡുകൾക്ക് ഡീബഗ് ചെയ്യാവുന്ന ബിൽഡോ adb shell നെറ്റ്വർക്ക് അവസ്ഥ വായിക്കാവുന്ന ഉപകരണമോ വേണം. ഉത്പാദന ഹാൻഡ്സെറ്റിൽ പാക്കേജ് മാനേജർ ഇപ്പോഴും മറുപടി നൽകുന്നു, പക്ഷേ റൂട്ടിംഗ് പരിശോധന നിരസിക്കപ്പെടാം, അതിനാൽ കഴിയുന്നത് രേഖപ്പെടുത്തി ബാക്കി പരിശോധിക്കാത്തതായി കണക്കാക്കുക.
റൂട്ട് ആപ്പിനെയല്ല, പ്രീഫിക്സിനെ ആവശ്യപ്പെടുന്നു
Builder.addRoute ടണലിനായി ലക്ഷ്യ പ്രീഫിക്സുകൾ ആവശ്യപ്പെടുന്നു. 10.0.0.0/8 മാത്രം ചേർക്കുന്ന പ്രൊഫൈൽ ആ പ്രീഫിക്സ് ടണലിലൂടെ അയച്ച് മറ്റെല്ലാ ലക്ഷ്യങ്ങളും ഭൗതിക പാതയിൽ വിടുന്നു. അത് സാധാരണ വിഭജിത ടണലിംഗാണ്, നിയമങ്ങൾ ഏത് ആപ്പുകളെ തിരഞ്ഞെടുത്തു എന്നതിൽ നിന്ന് സ്വതന്ത്രമാണ്.
സെർവർ അയക്കുന്ന കോൺഫിഗറേഷൻ അതേ മാതൃക പ്രതിഫലിപ്പിക്കുന്നു. വ്യക്തിഗത റൂട്ട് പുഷുകൾ പ്രീഫിക്സുകൾ ചേർക്കുന്നു, redirect-gateway നിർദ്ദേശം സ്ഥിരസ്ഥിതി റൂട്ട് മാറ്റി ടണൽ മൂടുന്ന ആപ്പുകൾക്കായി എല്ലാം പിടിക്കുന്നു. ആ നിർദ്ദേശം നീക്കിയാൽ ഉപകരണത്തിൽ ഒരു മാറ്റവുമില്ലാതെ പ്രവർത്തിക്കുന്ന ടണൽ ഒരു സബ്നെറ്റിലേക്ക് ചുരുങ്ങാം.
അസാധാരണ ഗേറ്റ്വേയോ മെട്രിക് യോഗ്യതയോ ഉള്ള അയച്ച റൂട്ടും ഇൻസ്റ്റാൾ ആയെന്ന് വരില്ല. ലളിതമായ പ്രീഫിക്സ് രൂപം തിരഞ്ഞെടുത്ത് ഫോർവേഡിംഗും NAT-ഉം സെർവറിന് വിടുക.
സെറ്റിംഗ് മാറ്റുന്നതിന് മുൻപ് ഛേദം വായിക്കുക
ടണൽ മൂടിയ പ്രക്രിയകളുടെയും ആവശ്യപ്പെട്ട ലക്ഷ്യങ്ങളുടെയും ഛേദം വഹിക്കുന്നു. പ്രസിദ്ധീകരിച്ച പ്രീഫിക്സുകൾക്ക് പുറത്തുള്ള വിലാസം ആവശ്യപ്പെടുന്ന മൂടിയ ആപ്പ് ഭൗതിക നെറ്റ്വർക്കിലൂടെ പുറത്തുപോകുന്നു. നിരോധിച്ച പാക്കേജ് ആ പ്രീഫിക്സുകൾക്കുള്ളിലെ വിലാസം ആവശ്യപ്പെടുമ്പോഴും പുറത്തുതന്നെ നിൽക്കുന്നു. രണ്ടും ബഗ്ഗല്ല; രണ്ടും ആ രണ്ട് നയങ്ങൾ അവയുടെ ജോലി ചെയ്യുന്നതാണ്.
ഓരോ ആപ്പിനുമുള്ള VPN ബന്ധപ്പെട്ട ആപ്പിനെ കണക്റ്റിവിറ്റിയില്ലാതെ വിടാം. on-demand ഓഫാണെന്നും ടണൽ താഴെയാണെന്നും ഇരിക്കുമ്പോൾ, ആപ്പ് ഓരോ ആപ്പിനുമുള്ള VPN-നോട് ബന്ധിക്കപ്പെട്ട് നിൽക്കുന്നു, മാറ്റുവഴിയില്ല, അത് നയാവസ്ഥയല്ല, കേടായ ആപ്പ് പോലെ തോന്നുന്നു. on-demand ഓണാക്കുന്നതോ മാനേജ്മെന്റിലൂടെ ബന്ധം നീക്കുന്നതോ അത് മാറ്റുന്നു.
| Layer | What it selects | Where to look | Typical mismatch |
|---|---|---|---|
| Package list | Processes | Builder calls or managed configuration | App excluded but expected to be blocked |
| UID policy rule | Which table a UID uses | ip rule show | Tunnel icon on, app still on Wi-Fi |
| Routing table | Destinations for matched traffic | ip route show table <n> | Covered app reaches only one subnet |
| Server push | Prefixes offered to the client | Server route configuration | Tunnel shrinks after a server edit |
ഒരു സമയം ഒരു അച്ചുതണ്ട് രോഗനിർണ്ണയം ചെയ്യുക. ആദ്യം അനുവാദമോ നിരോധനമോ സ്ഥിരീകരിക്കുക, രണ്ടാമത് ഇൻസ്റ്റാൾ ചെയ്ത UID നിയമങ്ങളും പട്ടികകളും വായിക്കുക, അവസാനം അതേ ലക്ഷ്യത്തിനെതിരെ രണ്ടാമത്തെ ആപ്പ് പരിശോധിക്കുക. രണ്ടാമത്തെ ആപ്പ് ഒരു അഭ്യർത്ഥനയിൽ പ്രക്രിയ തിരഞ്ഞെടുപ്പിനെ ലക്ഷ്യ തിരഞ്ഞെടുപ്പിൽ നിന്ന് വേർതിരിക്കുന്നു.
ഫലം ആപ്പ്, ലക്ഷ്യം, പട്ടിക നമ്പർ എന്നിവയായി എഴുതുക. അടുത്ത മാറ്റം സംരക്ഷിക്കേണ്ടത് അതേ ത്രികമാണ്.