మీరు సెట్టింగ్‌లలో VPN వరుసను తట్టుతారు, మరొకరు ఇన్‌స్టాల్ చేసిన ప్రొఫైల్‌ను చూస్తారు, దానిని జోడించే కాల్ కోసం వెతకడం ప్రారంభిస్తారు. అలాంటి కాల్ లేదు. యాప్ VpnService ద్వారా తన సొంత సొరంగాన్ని తెరవగలదు, కానీ ఆ జాబితాలోని ఎంట్రీలు ప్లాట్‌ఫారమ్‌కు మరియు వాటిని సృష్టించిన క్లయింట్‌కు చెందుతాయి. రేఖ ఎక్కడ ఉందో ఖచ్చితంగా తెలుసుకోవడం దాచిన క్లాసుల వెంట పరిగెత్తే ఒక వారాన్ని ఆదా చేస్తుంది.

సెట్టింగ్‌ల స్క్రీన్ చూపించేదానితో ప్రారంభించండి

VPN జాబితా సిస్టమ్ లేదా విక్రేత క్లయింట్ ఇన్‌స్టాల్ చేసిన ప్రొఫైల్‌ల రిజిస్టర్: PPTP, L2TP/IPsec, IKEv2, మరియు OEM యాప్ లేదా MDM నెట్టిన ఏ వరుసలైనా. ప్రతి వరుస సర్వర్ చిరునామా, ఆధారాలు మరియు మీ ప్రక్రియ వెలుపల నివసించే ప్రోటోకాల్ అమలును మోస్తుంది. వినియోగదారు అక్కడ కనెక్ట్ తట్టినప్పుడు సొరంగాన్ని ప్లాట్‌ఫారమ్ క్లయింట్ లేపుతుంది, మీ కోడ్ కాదు. అందుకే ఆ వరుస రీబూట్ తర్వాత కూడా నిలిచి ఉంటుంది, అందుకే మీ యాప్‌ను అన్‌ఇన్‌స్టాల్ చేయడం దానిని ఎప్పటికీ తీసివేయదు.

వినియోగదారు వైపు నుండి జాబితా API ఉపరితలం లాగా కనిపిస్తుంది, VPN జోడించడం ఒక ఉద్దేశం దూరంలో ఉండాల్సిన ప్రదేశం. అలా కాదు. దానిని తాకే ఏకైక పబ్లిక్ ప్రవేశ బిందువులు నావిగేషన్ ఉద్దేశాలు, మరియు అందులో రాసేది అంతా ప్లాట్‌ఫారమ్ లేదా ప్రత్యేక హక్కుల భాగానికి చెందుతుంది.

ఆచరణాత్మక పరిణామం: మద్దతు వచనం వినియోగదారులను సెట్టింగ్‌లలో ప్రొఫైల్ జోడించమని చెబితే, మీ యాప్ ఆ ప్రవాహంలో భాగమే కాదు.

VpnService నిజంగా ఏమి ఇస్తుంది

VpnService మరియు VpnService.Builder మీ యాప్ సొంతమైన ఒక సొరంగాన్ని వివరిస్తాయి. మీరు చిరునామాలు, మార్గాలు, DNS సర్వర్లు మరియు MTU జోడిస్తారు, addAllowedApplication() లేదా addDisallowedApplication() తో ట్రాఫిక్ పరిధిని నిర్ణయిస్తారు, తర్వాత establish() TUN ఇంటర్‌ఫేస్ కోసం ParcelFileDescriptor తిరిగి ఇస్తుంది. ఆ క్షణం నుండి యాప్ IP ప్యాకెట్లను చదివి సమాధానాలు రాస్తుంది, అంటే ప్రోటోకాల్‌ను అమలు చేయడం లేదా చేర్చడం మీ పని: OpenVPN, WireGuard, అనుకూల రవాణా.

ఆ క్రమంలో ఏదీ PPTP, L2TP/IPsec లేదా IKEv2 మాట్లాడదు. Builder లో సిస్టమ్ యొక్క L2TP క్లయింట్‌ను ఉపయోగించు అని చెప్పే స్విచ్ లేదు, ప్లాట్‌ఫారమ్ ఇప్పటికే కలిగి ఉన్న ప్రొఫైల్‌ను నడపడానికి అనుమతించే కాల్‌బ్యాక్ కూడా లేదు. ఇదే నిజమైన సరిహద్దు, ఇది అనుమతుల లోపం కాదు, రూపకల్పన సరిహద్దు.

కాబట్టి యాప్ Android లో ఖచ్చితంగా VPN క్లయింట్‌గా ఉండగలదు. ఫోన్‌తో వచ్చే క్లయింట్ల నిర్వాహకుడిగా మాత్రం ఉండలేదు.

సమ్మతి సంభాషణ అలంకారం కాదు

మీ సొరంగం ఇతర యాప్‌ల ట్రాఫిక్‌ను పట్టుకోగలదు కాబట్టి, వ్యవస్థ వినియోగదారు నుండి స్పష్టమైన అనుమతిని కోరుతుంది. prepare() మీరు ప్రారంభించాల్సిన Intent ను తిరిగి ఇస్తుంది, అనుమతి మీ ప్యాకేజీకి కట్టుబడి ఉంటుంది, సొరంగం నడుస్తున్నప్పుడు స్థితి పట్టీలో శాశ్వత సూచిక కనిపిస్తుంది. రెండవ VPN పైకి వస్తే మొదటిది నిష్క్రియమవుతుంది, ఎందుకంటే Android ఒకసారి ఒక సక్రియ VPN ను మాత్రమే నడుపుతుంది.

ఒక-సక్రియ నియమం పరీక్షలో ప్రజలను తడబడేలా చేస్తుంది. కార్పొరేట్ క్లయింట్ కనెక్ట్ అయి ఉన్నప్పుడు మీరు మీ సొరంగాన్ని లేపి మీ కోడ్ పాడైందని నిర్ణయించుకుంటారు, నిజానికి ప్లాట్‌ఫారమ్ మరో క్లయింట్ నుండి మారింది మాత్రమే. అనుమతులు తర్వాత ఉపసంహరించబడవచ్చు, సమ్మతి యాక్టివిటీ లేని పరికరాల్లో prepare() null ఇవ్వవచ్చు, కాబట్టి establish() ఇప్పటికీ వైఫల్యాన్ని నిర్వహించాలి.

దాచిన API లు మరియు సెట్టింగ్ ఉద్దేశాలు

పాత సమాధానాలు అంతర్నిర్మిత క్లయింట్ ఉపయోగించే com.android.internal క్లాసులు మరియు AIDL ఇంటర్‌ఫేస్‌లను సూచిస్తాయి. అవి SDK లో లేవు, విడుదలల మధ్య నోటీసు లేకుండా మారుతాయి, యాప్ స్టోర్లు ఆ యాక్సెస్‌ను ప్రమాదంగా చూస్తాయి. పరికరాన్ని root చేయడం కూడా వాటిని స్థిరంగా చేయదు, ఎందుకంటే root మరియు దాచిన API యాక్సెస్ సంబంధం లేని సమస్యలు.

మద్దతు ఉన్న నావిగేషన్ సహాయకం Settings.ACTION_VPN_SETTINGS, దాని విలువ android.net.vpn.SETTINGS. ప్రారంభించే ముందు దాన్ని పరిష్కరించండి, ఎందుకంటే కొన్ని OEM బిల్డ్‌లు ఆ యాక్టివిటీని అందించవు, పరిష్కారం విఫలమైతే వ్రాతపూర్వక దశలకు వెళ్లండి. ఇది వినియోగదారుని స్క్రీన్‌కు తీసుకెళ్తుంది, ఏమీ కాన్ఫిగర్ చేయదు.

పరికర-యజమాని మరియు MDM మార్గాలే ప్రజలు సాధారణంగా ఉద్దేశించే మినహాయింపు. DevicePolicyManager ఎల్లప్పుడూ-ఆన్ VPN ప్యాకేజీని నిర్దేశించగలదు, నిర్వహిత కాన్ఫిగరేషన్లు వాటిని మద్దతిచ్చే క్లయింట్ కోసం సెట్టింగ్‌లను ముందుగా లోడ్ చేయగలవు, కానీ అది ఇప్పటికీ పబ్లిక్ SDK PPTP ప్రొఫైల్ రాయడం కాదు.

వినియోగదారు వైపు నుండి నిర్ణయాన్ని చూడండి

మీ ఉత్పత్తి ట్రాఫిక్‌ను మోయాల్సి ఉంటే, VpnService తో పాటు నిజమైన ప్రోటోకాల్ స్టాక్‌ను ప్రణాళిక చేయండి, సమ్మతి ప్రవాహానికి మరియు ఒక-VPN నియమానికి సమయం కేటాయించండి. లక్ష్యం ఉన్న కార్పొరేట్ ప్రొఫైల్‌కు కనెక్ట్ అవ్వడం అయితే, మీ పని మార్గదర్శనం: సెట్టింగ్‌ల స్క్రీన్‌కు డీప్ లింక్, ఫీల్డ్‌ల డాక్యుమెంటేషన్, సొరంగాన్ని ప్లాట్‌ఫారమ్ క్లయింట్ చేయనివ్వండి. యాప్ ప్రైవేట్ ఎండ్‌పాయింట్‌ను చేరుకోవడం మాత్రమే అవసరమైతే, దానికి సొంత సొరంగం అసలు అవసరం లేదు.

కోడ్ రాయడానికి ముందు ఆ నిర్ణయాన్ని రాయండి, ఎందుకంటే మొదటి స్ప్రింట్ తర్వాత మూడు మార్గాలలో దాదాపు ఏమీ సామాన్యం లేదు.

ప్రారంభించే ముందు చివరి తనిఖీ: అవసరం మా యాప్ కనెక్ట్ అవుతుందని చెబుతోందా, లేక పరికరం కనెక్ట్ అవుతుందని? మొదటిది VpnService, రెండవది మీరు సృష్టించలేని ప్రొఫైల్. ఆ వాక్యాన్ని సరిచేయడం ఏ పునర్నిర్మాణం కంటే చవకైనది.

సంబంధిత వ్యాసాలు