tun0 और VPN प्रोटोकॉल को एक ही चीज़ मानना लोगों को गलत लॉग तक भेजता है। इंटरफ़ेस एक स्थानीय सीमा है जहाँ उपयोगकर्ता-स्थान का प्रोग्राम कर्नेल के साथ IP पैकेट का आदान-प्रदान करता है। प्रोटोकॉल वह है जो वह प्रोग्राम पैकेट मिलने के बाद उनके साथ करता है: परिवहन, प्रमाणीकरण, एन्क्रिप्शन और एक सहकर्मी। डिवाइस बनाना इनमें से कुछ भी चुनता नहीं है।

दो घटक, एक पैकेट पथ

कर्नेल डिवाइस में एक IP पैकेट लिखता है, और प्रोग्राम उसे फ़ाइल डिस्क्रिप्टर से पढ़ता है। दूसरी दिशा में प्रोग्राम पैकेट वापस लिखता है और कर्नेल उसे वैसे ही रूट करता है जैसे वह किसी वास्तविक इंटरफ़ेस पर आया हो। TUN IP ले जाता है, जबकि TAP ईथरनेट फ़्रेम ले जाता है। उस सीमा पर पैकेट पढ़ना फ़्रेमिंग दिखाता है, और डिवाइस ठीक इसी के लिए है।

उस सीमा के परे सब कुछ प्रोग्राम का काम है। दो प्रोग्राम एक ही इंटरफ़ेस अवधारणा का उपयोग कर सकते हैं और पैकेट के साथ पूरी तरह अलग चीज़ें कर सकते हैं। डिवाइस स्वयं इस बारे में कोई राय नहीं रखता कि आगे क्या होगा। फ़ाइल डिस्क्रिप्टर ही वह एकमात्र हैंडल है जो प्रोग्राम के पास कर्नेल की ओर है।

डिवाइस बनाइए, फिर सीमा देखिए

सीमा का परीक्षण करते समय जानबूझकर डिवाइस बनाइए। स्थायी डिवाइस उस प्रक्रिया के बाद भी बचा रहता है जिसने उसे बनाया, जो प्रयोगों के लिए उपयोगी है और बाद में भ्रम का आम स्रोत बनता है। VPN को दोष देने से पहले फ़्लैग और मालिक जाँचिए।

sudo ip tuntap add dev tun9 mode tun user alice
ip -d link show tun9

लिंक का विवरण डिवाइस का प्रकार और जुड़ा हुआ मालिक दिखाता है। यदि कोई प्रक्रिया उसे खुला नहीं रखती, तो उसमें लिखे गए पैकेट कहीं नहीं जाते। बिना जुड़ी प्रक्रिया वाला डिवाइस लिंक सूची में स्वस्थ दिख सकता है जबकि वह कुछ भी पास नहीं करता।

इंटरफ़ेस का नाम क्या वादा नहीं कर सकता

इंटरफ़ेस का नाम एन्क्रिप्शन या प्रमाणीकरण के बारे में कुछ नहीं कहता। कोई प्रोग्राम पैकेट को TLS में, अपने प्रोटोकॉल में, IPsec में या कुछ भी नहीं में लपेट सकता है। TAP के बजाय TUN चुनना सीमा पर फ़्रेमिंग बदलता है, सुरक्षा डिज़ाइन नहीं। फ़्रेमिंग का चुनाव वास्तविक है, और यह सुरक्षा प्रश्न से बहुत छोटा है।

पहचान उसी तरह काम करती है: प्रेक्षक तार पर बाहरी प्रोटोकॉल देखता है, कोई लेबल नहीं जो बताए कि किस स्थानीय डिवाइस ने इसे बनाया। किसी और चीज़ जैसा दिखने वाला टनल ऐसा अपने बाहरी प्रोटोकॉल के कारण करता है, अपने इंटरफ़ेस के नाम के कारण नहीं। प्रेक्षक यह नहीं देख सकता कि किस स्थानीय डिवाइस ने पैकेट बनाया, केवल यह देख सकता है कि पैकेट कैसा दिखता है। उत्पादों की तुलना करते समय इन दो प्रश्नों को अलग रखिए, क्योंकि एक उत्तर कभी दूसरे का अर्थ नहीं देता।

सुधार को विफल होने वाले चरण से मिलाइए

कुछ टूटने पर विफलता के चरण अलग कीजिए। गायब डिवाइस, अनुमति की त्रुटि और अस्वीकृत लॉगिन अलग साक्ष्य और अलग सुधार देते हैं। पहले स्थानीय स्थिति पढ़िए, फिर प्रोग्राम का अपना लॉग, फिर सहकर्मी का दृष्टिकोण। कुछ भी बदलने से पहले तीनों पढ़िए।

ip -d link show tun0
journalctl -u openvpn-client@corp --since '10 min ago'

यदि डिवाइस मौजूद है और कोई प्रक्रिया उसे थामे हुए है, तो स्थानीय सीमा काम कर रही है और समस्या आगे है। यदि डिवाइस गायब है, तो कोई भी क्रेडेंशियल जाँच मदद नहीं करेगी। जिस चरण को आप नाम दे सकते हैं वही चरण आप जाँच सकते हैं। TUN/TAP दस्तावेज़ सीमा और डिवाइस मॉडल का वर्णन करते हैं।

संबंधित लेख