Android OpenVPN टनेल पत्त्याशिवाय रूट जोडत नाही
फोनकडे टनेल पत्ता येईपर्यंत Android OpenVPN क्लायंट रूट जोडू शकत नाहीत. तो कोण नियुक्त करतो, कोणते pull फिल्टर तो टाकून देतात आणि तुम्ही स्वतः कधी लिहावे ते तपासा.
तुमची Android OpenVPN प्रोफाइल रूट जोडू शकत नाही कारण फोनकडे व्हर्च्युअल इंटरफेसवर पत्ता नाही, त्यामुळे रूट दाखवण्यासाठी काहीच नाही. रूट फक्त पॅकेट कुठे जायचे हे सांगतात. टनेल पत्ता टनेलच्या आत फोन कोण आहे हे सांगतो, आणि इंटरफेस अस्तित्वात येण्यापूर्वी क्लायंटने एक द्यायला हवा. खालील चार तपासण्या क्रमाने करा आणि पहिल्या अपयशावर थांबा, कारण पत्ता येण्यापूर्वी रूट संपादित केल्यास खरी समस्या लपते.
क्लायंट ज्या क्रमाने ते चालवतो त्याच क्रमाने अपयश वाचा
Android चे VpnService.Builder दोन संकल्पना वेगळ्या ठेवते: addAddress() ॲप बनवत असलेल्या इंटरफेसवर पत्ता ठेवते, addRoute() गंतव्य उपसर्ग जोडते, आणि establish() किमान एक पत्ता जोडला जाईपर्यंत इंटरफेस तयार करण्यास नकार देते. OpenVPN क्लायंट प्रोफाइल आणि सर्व्हर पाठवत असलेले पर्याय नेमक्या त्या कॉल्सवर मॅप करतो, त्यामुळे पत्ता कधीच पार्स न करणारे कनेक्शन इंटरफेस तयारच करू शकत नाही.
तुम्ही वाचत असलेली लॉग ओळ रूटचे नाव घेऊ शकते पण कारण एक पाऊल मागे असते याचे हेच कारण. इंटरफेस अस्तित्वात आल्यावरच क्लायंट रूट टप्प्यावर पोहोचतो; पत्ता नसेल तर रूट कॉल लगेच अयशस्वी होतो किंवा कधीच चालत नाही. लॉग रूट जोडता येत नाही असे म्हणतो तेव्हा रूट सिंटॅक्सपासून नाही, पत्त्यापासून सुरुवात करा.
तपासणी 1: सर्व्हर उत्तरात पत्ता ठेवतो का?
राउटेड OpenVPN सेवेसाठी पत्ता सर्व्हर पूलमधून किंवा प्रति-क्लायंट नियुक्तीतून येतो, आणि त्याचा आकार टोपोलॉजी ठरवते. OpenVPN 2.4 किंवा नवीन सर्व्हरवर, सबनेट टोपोलॉजी असलेली सेवा अशी दिसते:
topology subnet
server 10.8.0.0 255.255.255.0
client-config-dir ccd
त्या आकारासह सर्व्हर ifconfig 10.8.0.6 255.255.255.0 सारखे काही पाठवतो. जुनी topology net30 स्थापना त्याऐवजी सहकारी पत्ता पाठवते, उदाहरणार्थ ifconfig 10.8.0.6 10.8.0.5, त्यामुळे दोन मॉडेलांमध्ये हलवलेली प्रोफाइल बरोबर दिसू शकते पण चुकीचा नेटमास्क घेऊन जाते.
क्लायंट कनेक्शन लॉगमध्ये पाठवलेल्या पर्यायांचा संच शोधा. त्यात ifconfig ची एकही ओळ नसेल तर सर्व्हरने कधीच पत्ता पाठवला नाही किंवा क्लायंटने पर्याय नाकारला. client-config-dir वापरणाऱ्या सर्व्हरवर, प्रमाणपत्राच्या common name नावाची फाइल असली पाहिजे आणि नियुक्ती घेऊन जात असली पाहिजे:
# ccd/phone-anna
ifconfig-push 10.8.0.6 255.255.255.0
तपासणी 2: क्लायंट मिळालेला पत्ता ठेवतो का?
खूप रुंद फिल्टर हे दुसरे सामान्य कारण. pull-filter OpenVPN 2.4 आणि नवीन मध्ये आहे, आणि एकाच पर्यायाशी अनेक फिल्टर जुळल्यास शेवटचा जुळणारा जिंकतो, त्यामुळे शेवटी ठेवलेला catch-all कोणत्याही त्रुटीशिवाय पत्ता काढून टाकतो:
# removes every pushed option, including the address
pull-filter ignore "ifconfig"
pull-filter ignore "route"
फिल्टर फक्त त्या पर्यायापर्यंत अरुंद करा जो तुम्हाला खरोखर काढायचा आहे आणि पत्ता असाच राहू द्या:
# keeps the pushed address, drops one unwanted LAN route
pull-filter ignore "route 10.60.0.0"
सर्व pull बंद करण्याचा सल्ला सहसा एकच रूट काढायचा असलेल्या व्यक्तीकडून येतो. route-nopull हा अधिक अरुंद स्विच आहे: तो ifconfig आणि इतर पाठवलेले पर्याय ठेवतो पण पाठवलेले रूट आणि DHCP प्रकारचे पर्याय नाकारतो. खरोखर तेच हवे असेल तेव्हाच वापरा, आणि पत्त्याचा प्रश्न वेगळा सोडवा.
तपासणी 3: पत्ता तुम्ही लिहिण्याचा आहे का?
मॅन्युअल पत्ता देणे तेव्हाच योग्य जेव्हा ऑपरेटर तुम्हाला मूल्य देतो. तुम्ही स्वतः लिहिल्यास तो VPN क्लायंट सबनेटमधून असावा, सक्रिय सत्रांमध्ये अद्वितीय असावा आणि सर्व्हर चालवत असलेल्या टोपोलॉजीशी जुळावा. डेस्कटॉप ब्रिज किंवा दूरच्या LANवरील होस्टचा पत्ता कॉपी करणे दोन्ही बाजूंनी अयशस्वी होते: फोन आधीच दुसरीकडे असलेला पत्ता दावा करेल, आणि गेटवेकडे परतीचा मार्ग राहणार नाही.
रूटमधील दूरच्या LANचा उपसर्ग गंतव्य आहे, कधीही फोनची ओळख नाही. 10.60.0.0/24 साठीचा रूट म्हणतो त्या नेटवर्कपर्यंत टनेलमार्गे पोहोचा; फोनकडे कोणता 10.60.0.x पत्ता असावा हे ते सांगत नाही, आणि फोनकडे त्यापैकी एकही नसावा. स्थिर नियुक्त्या डायनॅमिक पूलशी टक्कर होऊ शकत नाहीत अशा सर्व्हर बाजूला असतात.
एका ओळखीवर दोन सत्रे तीच टक्कर उघड करतात. एकच प्रमाणपत्र दोनदा जोडले गेले आणि सर्व्हरने दोन्हींना एकच निश्चित पत्ता पाठवला तर दुसरे सत्र पहिल्याची प्रत बनते, आणि उपाय क्लायंट बाजूचे संपादन नसून वेगळ्या ओळखी किंवा वेगळ्या नियुक्त्या आहेत.
तपासणी 4: दुसरे काही टनेलची जागा धरून आहे का?
Android एका वेळी एकच सक्रिय VPN सेवा परवानगी देते. दुसरे VPN ॲप, किंवा आता काम करत नसलेल्या प्रोफाइलसाठी सुरू ठेवलेली always-on VPN नोंद, तुमचा OpenVPN क्लायंट establish() ला कॉल करण्यापूर्वी ती जागा घेऊ शकते. मग प्रोफाइल वैध असूनही इंटरफेस कधीच दिसत नाही, त्यामुळे प्रोफाइलला हात लावण्यापूर्वी दुसरे VPN डिस्कनेक्ट करा, always-on सेटिंग बंद करा आणि पुन्हा जोडा.
इथरनेट ब्रिजिंगचा आग्रह धरणारी सेवा हा दुसरा बंद रस्ता. root नसलेले Android ॲप IP टनेल तयार करू शकते, ब्रिज केलेला इथरनेट सेगमेंट नाही, त्यामुळे तुम्ही लिहाल तो कोणताही पत्ता dev tap सर्व्हर चालवणार नाही; ऑपरेटरने राउटेड सेवा द्यायला हवी. समस्या कळवताना क्लायंटचे नाव आणि आवृत्ती, पाठवलेला पर्याय संच, टोपोलॉजी आणि पत्ता दिसायला हवा होता ते नेमके पाऊल समाविष्ट करा.
चारही तपासण्या पास झाल्या आणि पत्ता उपस्थित, अद्वितीय व बरोबर मास्क केलेला असेल तर रूटचा प्रश्न नेहमीचा होतो: सर्व्हर कोणत्या उपसर्गांना परवानगी देतो आणि क्लायंटने त्यांना कसे मर्यादित करावे. दुसरे काही बदलण्यापूर्वी टनेल पत्ता, त्याचा नेटमास्क आणि टोपोलॉजी लिहून ठेवा, कारण सर्व्हरच्या दृश्याशी तुलना करण्यासाठी ऑपरेटरला याच तीन मूल्यांची गरज असते.