रूट शिवाय Android VPN: संमती, मार्ग आणि ब्लॉकिंग कोणाची
संमती, TUN इंटरफेस आणि सिस्टमची ब्लॉकिंग धोरण ही तीन वेगळी परवानगी आहेत. Android VPN ॲपची तपासणी करण्यापूर्वी प्रत्येक कोणत्या घटकाची आहे ते शोधा.
रूट हे Android VPN ॲपला ट्रॅफिक वाहून नेणे, गळती थांबवणे किंवा रीबूटनंतर टिकून राहणे शक्य करत नाही. लोक हे सर्व „ॲपकडे VPN परवानगी आहे“ असे सारांशित करतात, ज्यामुळे तीन वेगळे यंत्रणा लपतात: वापरकर्त्याची संमती, सिस्टम तयार करते ते पॅकेट इंटरफेस, आणि ॲपने ठरवायचे नसलेले प्लॅटफॉर्म ब्लॉकिंग धोरण. Android VPN रचनेची तपासणी करणे म्हणजे एखादा दावा प्रत्यक्षात या तिन्हींपैकी कशावर आधारित आहे हे विचारणे, कारण प्रत्येकाचा मालक आणि अपयशाची पद्धत वेगळी आहे.
संमती सिस्टम क्रियाकलापातून येते
VpnService.prepare() काहीही देत नाही. संमती नसल्यास ते सिस्टम संमती क्रियाकलापाकडे intent परत करते, आणि वापरकर्ता सेवा मंजूर करू शकेल म्हणून ॲप तो संवाद उघडते. ॲपची स्वतःची प्रक्रिया सुरू करणे, मॅनिफेस्टमध्ये परवानगी जोडणे, किंवा सानुकूल „VPN सक्षम करा“ स्क्रीन दाखवणे परवानगी तयार करत नाही.
परवानगीचा व्याप्तीही मर्यादित आहे. ती वापरकर्ता प्रोफाइलमधील पॅकेजची आहे, त्यामुळे वैयक्तिक प्रत आणि कार्य प्रत वेगळे निर्णय आहेत, आणि डिव्हाइस मालक व्यवस्थापित प्रोफाइल वैयक्तिकपेक्षा वेगळ्या पद्धतीने तयार करू शकतो. संवाद कधीही दिसला नाही आणि prepare() null परत केल्यास, त्या प्रोफाइलमधील त्या पॅकेजसाठी संमती आधीच आहे; हा ॲप विश्वासार्ह असल्याचा पुरावा नाही, फक्त परवानगी आहे हे दर्शवतो.
इंटरफेस ही सिस्टम पूर्ण करणारी विनंती आहे
संमतीनंतर ॲप VpnService.Builder वापरून काय हवे ते सांगते: पत्ते, मार्ग, DNS सर्व्हर, MTU आणि जेथे समर्थित असेल तेथे समाविष्ट किंवा वगळायची ॲप्स. establish() सिस्टमला टनेल इंटरफेस तयार करून जुळणारा ट्रॅफिक त्यात पाठवण्याची विनंती करते. मार्गनिर्देशनाचा निर्णय सिस्टमचा आहे; ॲप फाइल वर्णनकर्ता घेते आणि नंतर पॅकेटसह काहीतरी उपयुक्त करणे आवश्यक आहे.
| What you observe | Who actually owns it |
|---|---|
| VPN consent dialog | The system, triggered by prepare() |
| Routes, DNS and app lists | The app requests them; the system applies them |
| One active VPN per profile | The platform; a new service replaces the old one |
| Always-on and block-without-VPN | Device 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 नेटवर्क, नेहमी सुरू असलेले पॅकेज आणि लॉकडाउन सेट आहे का हे दाखवतात. ही केवळ वाचनाची निरीक्षणे आहेत: मूल्ये रचनेच्या दाव्याशी जुळत नसल्यास, दावा सिस्टमच्या स्थितीबद्दल नाही तर ॲपच्या इंटरफेसबद्दल आहे.
ब्लॉकिंग प्लॅटफॉर्मची असू शकते
VPN वापरत नसलेली कनेक्शन्स ब्लॉक करणारे धोरण Android दस्तऐवजीकरण करते. ती अंमलबजावणी प्लॅटफॉर्मचा करार आहे, ॲपने लूपमध्ये कनेक्शन पुन्हा प्रयत्न करणे नाही. स्विच डिव्हाइसच्या VPN सेटिंग्जमध्ये „VPN शिवाय कनेक्शन्स ब्लॉक करा“ म्हणून आहे, आणि व्यवस्थापित डिव्हाइसवर मालक तो संपूर्ण प्रोफाइलसाठी सुरू करू शकतो. मार्केटिंग दाव्याचे मूल्यांकन करताना हा फरक महत्त्वाचा आहे: क्लायंट कुलूप चिन्ह दाखवून आक्रमकपणे पुन्हा जोडू शकतो, तर थेट ट्रॅफिक अजूनही शक्य आहे, किंवा समाविष्ट ॲप्स सिस्टम लॉकडाउन लागू करत असल्याने ऑफलाइन राहू शकतात.
कुलूपाचे चिन्ह ॲप काढते, त्यामुळे ते फक्त ॲपला वाटते की ते जोडलेले आहे हे सिद्ध करते. दुसरे ॲप त्याचा नेटवर्क प्रवेश गमावेल का हे प्लॅटफॉर्म ठरवते, त्यामुळे उपयुक्त तपासणी म्हणजे टनेल सुरू असताना ते ॲप अपयशी होताना पाहणे.
ॲप स्टोअरचे „नेहमी सुरू“ लेबलही त्या कराराची जागा घेत नाही. नेहमी सुरू आणि लॉकडाउन ही डिव्हाइस सेटिंग्ज आहेत, जी अनेकदा डिव्हाइस मालक लागू करतो, आणि वगळलेल्या ॲप्ससाठी त्यांचे वर्तन प्लॅटफॉर्म ठरवते. सेटिंग वाचा, बॅज नाही.
रचना पुनरावलोकनासाठी चार प्रश्न
पहिले, कोणी संमती दिली: कोणते पॅकेज, कोणते प्रोफाइल, आणि ते वापरकर्ता होते की व्यवस्थापित डिव्हाइस धोरण? दुसरे, ॲपने काय मागितले: कोणते मार्ग, कोणती पत्ता कुटुंबे, कोणती ॲप्स समाविष्ट किंवा वगळली? तिसरे, टनेल उपलब्ध नसल्यास काय होते: सिस्टम ब्लॉक करते की ट्रॅफिक अंतर्निहित नेटवर्कवर परत जाते? चौथे, ॲपला मिळालेल्या पॅकेटसह ते काय करते?
चौथा प्रश्न हा परवानगी मॉडेल उत्तर देऊ शकत नाही असा आहे. संमती आणि TUN इंटरफेस ॲप ट्रॅफिक घेऊ शकते हे सिद्ध करतात, ते त्याचे एन्क्रिप्शन करते, पीअरची प्रमाणिकता तपासते किंवा स्वच्छपणे पुनर्प्राप्त होते हे नाही. हे अंमलबजावणीचे गुणधर्म आहेत, आणि प्रामाणिक पुनरावलोकन तिथेच वेळ घालवते.
अनावश्यक रूट विनंतीचा निकाल किल स्विच म्हणून हाक मारल्याने ती वैध होत नाही, आणि संमती संवाद हा सुरक्षा ऑडिट नाही. तिन्ही परवानग्या वेगळ्या ठेवा आणि प्रत्येक दावा तपासण्यायोग्य होईल.