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 बदलणे हा मुळीच समर्थित मार्ग नाही, आणि तिथले प्रामाणिक उत्तर म्हणजे ती सेटिंग त्या उत्पादनाची आहे.