उपयोगकर्ता कार्यक्रम से TUN / TAP सुरंग का उपयोग कैसे करें?


9

मैंने हाल ही में लिनक्स TUN / TAP इंटरफेस के अस्तित्व की खोज की है और अभी भी उन्हें समझने की कोशिश कर रहा हूं। मुझे लगता है कि मुझे मूल अवधारणा मिलती है - छद्म डिवाइस बनाए जाते हैं जो एक नेटवर्क इंटरफ़ेस का अनुकरण करते हैं और हार्डवेयर को डेटा पास करने के बजाय इसे एक यूजरस्पेस प्रोग्राम को पास करते हैं।

आप इस सुरंग का उपयोग करने के लिए एक असंबंधित कार्यक्रम कैसे निर्देशित करेंगे?

उदाहरण के लिए, सुरंग बनाने से पहले मेरे सिस्टम में केवल eth0 और lo होते हैं, सामान्य ईथरनेट इंटरफ़ेस (मेरे स्थानीय नेटवर्क पर वायर्ड) और लूपबैक इंटरफ़ेस। एक कार्यक्रम के बाद एक सुरंग बनाता है और कॉन्फ़िगर करता है, मेरे पास एक नया इंटरफ़ेस gr0 है जिसे मैंने एक आईपी पता दिया है जो मेरे स्थानीय नेटवर्क पर है, लेकिन उपयोग में नहीं है (इसलिए हम सभी एक ही सबनेट पर हैं)। मैं एक असंबंधित कार्यक्रम को इस 'सुरंग' का उपयोग कैसे करूँगा? मान लें कि मेरे पास एक साधारण पायथन संदेश है जो क्लाइंट / सर्वर ऐप से टीसीपी कनेक्शन का उपयोग करता है, मैं इसे सुरंग का उपयोग करने के लिए कैसे कॉन्फ़िगर कर सकता हूं?

मैं माफी मांगता हूं कि अगर मुझे कुछ बुनियादी याद आ रही है, लेकिन हमेशा की तरह मैं चीजों की योजना में खुद को भ्रमित करने में कामयाब रहा। फिर से, मैं चाहता हूँ कि एक साधारण टीसीपी कार्यक्रम इस सुरंग का उपयोग करे।

धन्यवाद!

जवाबों:


7

यह हमेशा "सुरंग" नहीं है। TUN / TAP केवल विशिष्ट NIC ड्राइवर हैं। नेटवर्क स्टैक के दृष्टिकोण से वे किसी भी अन्य नेटवर्क इंटरफेस के रूप में कार्य करते हैं: उनके पास आईपी पते हो सकते हैं, पॉइंट-टू-पॉइंट या डिजिटल इंटरफेस हो सकते हैं। रूटिंग नियम उन पर भी लागू होते हैं। लेकिन सभी ट्रैफ़िक जो उस नेटवर्क इंटरफेस में से एक को लिखे जाते हैं, प्रसंस्करण के लिए कुछ यूज़र्स प्रोग्राम पर जाते हैं, और यूज़रस्पेस प्रोग्राम द्वारा लिखे गए सभी डेटा सीधे /dev/tunXनेटवर्क स्टैक के लिए आने वाले पैकेट की तरह दिखते हैं।

सामान्य टनलिंग सेटअप सर्वर और क्लाइंट में असाइन किए गए पतों के साथ TUN डिवाइस हैं। दोनों पर कॉन्फ़िगर किए गए रूटिंग टेबल इस TUN डिवाइस को ट्रैफ़िक की आवश्यकता का निर्देश देते हैं। जब पैकेट को ट्यून में रूट किया जाता है, तो कर्नेल इसे यूजरस्पेस प्रोग्राम (क्लाइंट) को भेजता है जो इस पैकेट को रिमोट मशीन (सर्वर) पर अन्य प्रोग्राम के लिए भेजता है, उदाहरण के लिए, टीसीपी कनेक्शन। रिमोट मशीन पर अन्य प्रोग्राम (सर्वर) क्लाइंट से पैकेट को रिकवर करता है और इसे उस /dev/tunXडिवाइस को लिखता है, जो नेटवर्क स्टैक में उस पैकेट को "इंजेक्ट" करता है। और सुरंगनुमा पैकेट किसी अन्य के रूप में संसाधित हो जाता है।


1
तो इसका उत्तर (मेरे उद्देश्यों के लिए) इन इंटरफेस पर सीधे यातायात के लिए रूटिंग टेबल को कॉन्फ़िगर करना है। यही वह बिंदु था जो मुझे याद आ रहा है, लेकिन अब मुझे इसका समाधान खोजने में सक्षम होना चाहिए। इसके अलावा, मैं स्पष्टीकरण की सराहना करता हूं क्योंकि यह चीजों को साफ करता है। धन्यवाद!
श्री शकेदांस

2
मैंने "मार्ग जोड़ें <TUN IP ADDR> dev gr0" का उपयोग करके समाप्त किया। इसने मुझे नए इंटरफ़ेस के माध्यम से यातायात को पुनर्निर्देशित करने की अनुमति दी। एक बार फिर धन्यवाद!
मिस्टर शकाडांस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.