Android પર દરેક એપ માટે VPN: એપને બહાર રાખવી તેને બ્લોક કરવું નથી
સ્ક્રીન પર દેખાતી પ્રતિ-એપ યાદી એક જ ટનલ માલિકની છે, અને એપને બહાર રાખવી તેને તે ટનલની આસપાસ મોકલે છે, નેટવર્કની બહાર નહીં. ત્યાંથી જ શરૂ કરો.
બે લોકો એક જ સવાલ પૂછે છે અને એકબીજા સાથે ન મળતા જવાબ મેળવે છે, કારણ કે તેઓ જુદી જુદી જગ્યાએ ઊભા છે. એકના હાથમાં સિસ્ટમની VPN સેટિંગ્સ સ્ક્રીન ખુલ્લી છે અને તે એપ્સની યાદી સંપાદિત કરે છે. બીજો એડિટરમાં VpnService.Builder.addDisallowedApplication() લખે છે. બંને તેને પ્રતિ-એપ VPN ફિલ્ટર કહે છે. તેમાંથી ફક્ત એક જ પાસે એ નિયંત્રણ છે જેનું તેઓ વર્ણન કરે છે, અને તેમાંથી કોઈ પણ કંઈ બ્લોક કરતું નથી.
વપરાશકર્તા જે સ્ક્રીન જુએ છે ત્યાંથી શરૂ કરો
સેટિંગ્સ ખોલો, VPN એન્ટ્રી શોધો અને એ કનેક્શન જુઓ જે ખરેખર સક્રિય છે. જો ક્લાયન્ટ પ્રતિ-એપ યાદી આપે છે, તો એ યાદી ક્લાયન્ટની પોતાની ટનલની છે. પ્લેટફોર્મ એવી સામાન્ય API પ્રકાશિત કરતું નથી જેના દ્વારા કોઈ અસંબંધિત એપ બીજા VPNની એપ પસંદગી વાંચી કે બદલી શકે, તેથી બીજી એપ વપરાશકર્તા માટે એ યાદી સુધારી શકતી નથી.
આ આ મુસાફરીનો પહેલો દ્રાવ છે. જો ઇન્સ્ટોલ કરેલા VPNમાં એવી સેટિંગ ન હોય, તો તેની આસપાસ કોડ કરવાનું કંઈ નથી: એ સુવિધા એ ઉત્પાદનમાં જ નથી જે ટનલનો માલિક છે. જો હોય, તો સાચો સુધારો એ જ સ્ક્રીનમાં છે, અને તે એ વ્યક્તિ દ્વારા થશે જે તેને ખોલી શકે છે.
પેકેટને ટનલ સુધી અનુસરો
જ્યારે તમારી પોતાની એપ ટનલ બનાવે છે, ત્યારે તે TUN ઇન્ટરફેસ બનાવે છે અને જાહેર કરે છે કે કઈ એપ્સનું ટ્રાફિક તેમાં જાય છે. સભ્યતાના કૉલ્સ ઇન્ટરફેસ બનતા પહેલા થાય છે, અને તે પછી એ સત્ર માટે નિયમસમૂહ સ્થિર રહે છે:
val builder = VpnService.Builder()
builder.addAddress("10.8.0.2", 32)
builder.addRoute("0.0.0.0", 0)
builder.addDisallowedApplication("com.example.bypass")
val tun = builder.establish() // membership decided hereએ કૉલ્સ ફક્ત એ જ ટનલ પર લાગુ થાય છે જે તમારી એપે હમણાં બનાવી છે, બીજા કશા પર નહીં. તે સમગ્ર ઉપકરણની નીતિ નથી, તે બીજા ક્લાયન્ટ માટે ટકતા નથી, અને તે કોઈ બીજાના VPN સુધી પહોંચી શકતા નથી. જ્યારે પેકેટ ઉકેલી ન શકાય તે કારણે બિલ્ડરનો કૉલ અપવાદ ફેંકે છે, ત્યારે ઇન્ટરફેસ ક્યારેય બનતું નથી, જે સ્વચ્છ નિષ્ફળતા છે, શાંત નહીં.
બહિષ્કાર બ્લોક જેવો કેમ લાગ્યો
બહાર રાખેલી એપ તમારી ટનલની આસપાસ નીચેના નેટવર્ક પર મોકલાય છે. તે તેને બ્લોક કરવાનું વિરુદ્ધ છે: ટ્રાફિક હજી ઉપકરણમાંથી નીકળે છે, ફક્ત તમે નિયંત્રિત કરો છો તે ઇન્ટરફેસની બહાર. ફાયરવૉલ જેવી એપ ઊલટું કરે છે. તે એપનું ટ્રાફિક પોતાની ટનલમાં લે છે અને પછી પેકેટ ફેંકી દે છે, અથવા તેમને આગળ મોકલવાનો ઇનકાર કરે છે, તેથી ઇન્ટરફેસ એ જ રહે છે અને નીતિની દિશા ઊલટાઈ જાય છે.
એ ઉલટાવની પાછળનું કામ કોઈ રૂપરેખા ફ્લેગ નથી. તમે ટનલ ડિસ્ક્રિપ્ટરમાંથી IP પેકેટ વાંચો છો, પ્રવાહ પ્રમાણે નિર્ણય લો છો, અને પછી તેમને સુરક્ષિત સૉકેટ દ્વારા આગળ મોકલો છો અથવા ફેંકી દો છો. જે તમે સંભાળતા નથી તે ફક્ત અટકી જાય છે, અને તેથી અધૂરી ટનલ તૂટેલા નેટવર્ક જેવી લાગે છે, કામ કરતા ફિલ્ટર જેવી નહીં. જો તમારો ધ્યેય બ્લોક હોય, તો પેકેટ સંભાળ, ફોરગ્રાઉન્ડ સેવા અને જે ટ્રાફિકને તમે વર્ગીકૃત કરી શકતા નથી તેના માટે લેખિત નીતિનું બજેટ રાખો.
જ્યારે તમે જાતે તેને બનાવો છો ત્યારે શું તૂટે છે
Android સામાન્ય રીતે એક સમયે ફક્ત એક જ સક્રિય VPNની મંજૂરી આપે છે, તેથી તમારી ફિલ્ટર કરતી ટનલ અને ગોપનીયતાની ટનલ એ જ જગ્યા માટે સ્પર્ધા કરે છે, સિવાય કે ઉત્પાદનો ચેઇનિંગને સમર્થન આપે. કનેક્શન બ્લોક કરતું હંમેશા-ચાલુ VPN નિષ્ફળતાની રીત એવી બદલે છે જે અહીં મહત્વની છે: જે ટ્રાફિક ટનલમાં જઈ શકતું નથી તે સીધું મોકલવાને બદલે ફેંકી દેવાય છે, અને એ જ લીક-અટકાવ ડિઝાઇન ઇચ્છે છે અને ડિબગિંગ સત્ર ભાગ્યે જ અપેક્ષા રાખે છે.
પેકેટ દૃશ્યતા બીજો જાળ છે. એપનું પેકેજ નામ ઉકેલવું NameNotFoundException સાથે નિષ્ફળ થઈ શકે છે, અને નવા Android આવૃત્તિઓમાં તમે જે પેકેજ જોઈ શકો છો તે તમે જાહેર કરેલી ક્વેરીઓ પર આધાર રાખે છે. દરેક નામ ઉકેલાઈ જશે એવું માનવાને બદલે અપવાદ સંભાળો, અને એપ્સ ઇન્સ્ટોલ કે દૂર થાય ત્યારે યાદી ફરી વાંચો, તેને કાયમ કેશમાં રાખવાને બદલે.
સંચાલિત ઉપકરણો ત્રીજો માલિક ઉમેરે છે. એન્ટરપ્રાઇઝ મોબિલિટી નીતિ પ્રતિ-એપ VPN અથવા હંમેશા-ચાલુ પ્રોફાઇલ સેટ કરી શકે છે, અને સામાન્ય એપ તેને ઓવરરાઇડ કરી શકતી નથી. તમારો પોતાનો કોડ ડિબગ કરતા પહેલા તપાસો કે ઉપકરણ સંચાલિત છે કે નહીં, કારણ કે એ સ્થિતિમાં તમે જે યાદી બદલવા માંગો છો તે ફોન પકડીને બેઠેલા કોઈ પણ વ્યક્તિથી સંપાદિત ન થઈ શકે.
તમે નિયંત્રિત કરો છો તેવી એપ સાથે તેને ચકાસો
જે એપને તમે ફિલ્ટર કરવા માંગો છો તેની સાથે પરીક્ષણ કરશો નહીં. બીજી એપ વાપરો જેનું નેટવર્ક વર્તન તમે જોઈ શકો, અને તપાસો કે તેનું ટ્રાફિક તમારી ટનલમાંથી બહાર જાય છે જ્યારે લક્ષ્યનું નથી જતું. જો બંને અંદર રહે, તો નીતિ કામ કરે છે અને લક્ષ્ય બહાર રાખેલું છે; જો કોઈ પણ બહાર ન જાય, તો ટનલ જ ખોટી છે અને એપ યાદી સમસ્યા નથી.
પછી નક્કી કરો કે તમે ખરેખર ત્રણમાંથી શું બનાવો છો. પ્રતિ-એપ ટનલ બિલ્ડર API છે, જેમાં યાદી તમારી પ્રોફાઇલનો ભાગ છે. ઉપકરણ ફાયરવૉલ પેકેટ સંભાળ અને એવું જીવનચક્ર છે જેને તમે વાજબી ઠેરવી શકો. બીજા કોઈનું VPN બદલવું એ કોઈ સમર્થિત માર્ગ જ નથી, અને ત્યાં પ્રામાણિક જવાબ એ છે કે એ સેટિંગ તે જ ઉત્પાદનની છે.