2016-07-01 5 views
7

का उपयोग कर पैकेट इंटरफ़ेस बदलें मैं एक वीपीएन ऐप विकसित कर रहा हूं, मैं डिफ़ॉल्ट en0 इंटरफ़ेस से ऐप विशिष्ट पैकेट को रूट करने की तलाश में था। मैं सोच रहा था कि क्या मैं एनकेई का उपयोग कर इसे प्राप्त कर सकता हूं?एनकेई

मान लें कि सफारी से सभी डेटा पीपीपी इंटरफेस के माध्यम से जाता है और क्रोम से सभी डेटा en0 के माध्यम से जाता है।

उत्तर

2

मैं आपको 100% निश्चित उत्तर नहीं दे सकता क्योंकि मुझे पहले कभी उस विशिष्ट समस्या को हल नहीं करना पड़ा था, और ऐसा कहीं भी प्रलेखित नहीं होता है। मैं आपको कुछ चीजों पर इंगित कर सकता हूं, जहां मैं अपने शोध पर ध्यान केंद्रित कर रहा हूं अगर मुझे ऐसी कार्यक्षमता को लागू करने के लिए काम किया जा रहा था।

  • WWDC 2017 के रूप में, नेटवर्क कर्नेल एक्सटेंशन पदावनत हैं। ऐप्पल चाहता है कि आप इसके बजाय उपयोगकर्ता-स्थान "नेटवर्क एक्सटेंशन" बनाएं। ऐसे विशेष वीपीएन कक्षाएं हैं जिन्हें आप कार्यान्वित कर सकते हैं। सिद्धांत रूप में, ये प्रति-ऐप नियमों (see "Per-App VPN") की अनुमति देते हैं, लेकिन व्यवहार में वे एमडीएम से बंधे हुए प्रतीत होते हैं, जो एक अजीब निर्णय की तरह लगता है। ऐप्पल के संपर्क में आने के बारे में आप संपर्क में रहना चाह सकते हैं यदि आप जो भी करने की कोशिश कर रहे हैं उसके साथ संघर्ष करता है। वे सक्रिय रूप से नेटवर्क एक्सटेंशन API पर इनपुट की मांग कर रहे हैं।
  • नेटवर्क कर्नेल एक्सटेंशन (एनकेई) अधिक परिपक्व एपीआई हैं। राउटिंग "आईपी फ़िल्टर" और "इंटरफेस फ़िल्टर" चरणों के बीच होती है। मुझे यकीन नहीं है कि आप उन फ़िल्टरिंग चरणों में से किसी एक के माध्यम से सीधे उन्हें प्रभावित कर सकते हैं। शायद डिफ़ॉल्ट इंटरफ़ेस पर एक इंटरफ़ेस फ़िल्टर का उपयोग करके पैकेट को हटाकर, और उन्हें अपने वीपीएन इंटरफ़ेस में इंजेक्शन देकर? मुझे यकीन नहीं है कि यह बुद्धिमान है, और आपको उस प्रक्रिया में पैकेट मिलान करने में परेशानी हो सकती है जो उन्हें नेटवर्क स्टैक के उस चरण में भेजा गया था।
  • आप किसी सॉकेट फ़िल्टर एनकेई से एक विशिष्ट इंटरफ़ेस डिवाइस (IP_BOUND_IF का उपयोग करके) को सॉकेट बाध्य करने का प्रयास कर सकते हैं।
  • बर्कले पैकेट फ़िल्टर (बीपीएफ) भी एक संभावित समाधान है।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^