Tor के SOCKS पोर्ट से UDP: क्या पार नहीं होता
Tor का SOCKS इंटरफ़ेस स्ट्रीम कनेक्शन स्वीकार करता है, मनमाने डेटाग्राम नहीं। जाँच क्रम से चलाएँ, फिर ऐसा ट्रांसपोर्ट चुनें जिसे ऐप वास्तव में समर्थित करता है।
किसी ऐप को SOCKS पोर्ट पर इंगित करना ब्राउज़र के लिए काम करता है और किसी गेम के लिए विफल होता है, और कारण कॉन्फ़िगरेशन नहीं है। SOCKS5 कई कमांड परिभाषित करता है, और कोई कार्यान्वयन उनमें से केवल कुछ को समर्थित करने के लिए स्वतंत्र है; Tor का इंटरफ़ेस स्ट्रीम कनेक्शन और नाम समाधान स्वीकार करता है, मनमाना डेटाग्राम अग्रेषण नहीं। जो क्लाइंट UDP भेजता है और उम्मीद करता है कि प्रॉक्सी उसे रिले करेगा, वह ऐसा कमांड मांगता है जिसे सर्वर कार्यान्वित नहीं करता। नीचे दी गई रनबुक इसे कुछ मिनटों में जाँचती है और फिर ऐसा ट्रांसपोर्ट चुनती है जो वास्तव में काम कर सके।
जाँचें कि ऐप वास्तव में क्या भेजता है
प्रोटोकॉल के नाम के बजाय ट्रांसपोर्ट की पहचान से शुरू करें। वॉइस क्लाइंट HTTPS से साइन इन करके फिर UDP से मीडिया ले जा सकता है; गेम TCP से प्रमाणीकरण करके UDP से खेल सकता है; फ़ाइल स्थानांतरण नियंत्रण के लिए TCP और खोज के लिए UDP का उपयोग कर सकता है। पहले दो व्यवहार तब तक एक जैसे दिखते हैं जब तक लॉगिन सफल न हो जाए और कॉल अब भी विफल रहे, इसीलिए “कनेक्ट हो गया” इस बात का प्रमाण नहीं है कि पूरा ऐप काम करता है। कुछ क्लाइंट स्वयं ही UDP से TCP पर लौट जाते हैं, जिससे आंशिक रूप से चल रहा सत्र अवरुद्ध ट्रांसपोर्ट के बजाय अस्थिर नेटवर्क जैसा दिखता है।
जो हिस्सा विफल होता है उसके लिए गंतव्य पोर्ट और ट्रांसपोर्ट लिख लें। वही एक पंक्ति तय करती है कि प्रॉक्सी बिलकुल मदद कर सकती है या नहीं।
Tor का SOCKS इंटरफ़ेस क्या स्वीकार करेगा
Tor स्ट्रीम कनेक्शन के लिए SOCKS5 CONNECT कमांड और नाम हल करने के लिए एक्सटेंशन कमांड लागू करता है, इसीलिए ब्राउज़र बिना बदलाव के इसके ज़रिए काम करता है। UDP ASSOCIATE, वह कमांड जो क्लाइंट को अग्रेषण के लिए प्रॉक्सी को डेटाग्राम सौंपने देता, Tor जो प्रदान करता है उसका हिस्सा नहीं है। एक्सटेंशन का दस्तावेज़ीकरण परियोजना के SOCKS एक्सटेंशन विनिर्देश में है, और यह संक्षिप्त है। डेटाग्राम कमांड का अभाव जानबूझकर है: मनमाना UDP रिले करने से नेटवर्क को वह अग्रेषण भूमिका मिलती जिसके लिए उसे कभी नहीं बनाया गया।
यह WireGuard के लिए भी उत्तर है, जो डिज़ाइन से UDP है और इसका कोई TCP विकल्प नहीं है। कोई समर्थित मार्ग नहीं है जो WireGuard को SOCKS पोर्ट पर भेजे, और इसके विपरीत दावा करने वाला सब कुछ अपनी ही विश्वास और रखरखाव की कहानी वाला आवरण है, दोनों में से किसी उपकरण की विशेषता नहीं।
OpenVPN आंशिक अपवाद है, क्योंकि इसे TCP पर टनल करने के लिए कॉन्फ़िगर किया जा सकता है और यह SOCKS प्रॉक्सी विकल्प समझता है। इसमें अब भी TCP के लिए कॉन्फ़िगर किया गया सर्वर और प्रदर्शन तथा फ़िंगरप्रिंट के परिणामों पर सचेत निर्णय चाहिए, इसलिए यह डिज़ाइन का चुनाव है, अनुकूलता का सुधार नहीं।
जाँच क्रम से चलाएँ
पहले पुष्टि करें कि प्रॉक्सी स्ट्रीम के लिए काम करती है, ताकि बाद की विफलता किसी अगम्य पोर्ट पर न डाली जा सके। फिर ऐप के अपने ट्रैफ़िक की पुष्टि करें, और देखें कि यह वास्तव में कौन से सॉकेट खोलता है।
curl --socks5-hostname 127.0.0.1:9050 -sS https://check.torproject.org/api/ip
ss -tupn | grep 9050
ss -aun | grep -E ':(3478|5060|27015)\b'
सफल पहला कमांड और दूसरी पंक्ति में स्थापित स्ट्रीम दिखाते हैं कि प्रॉक्सी पथ डिज़ाइन के अनुसार काम कर रहा है। तीसरा कमांड ऐप से संबंधित स्थानीय डेटाग्राम सॉकेट खोजता है; अगर क्लाइंट एक खोलता है और सीधे किसी दूरस्थ पते पर भेजता है, तो उसने कभी प्रॉक्सी से परामर्श नहीं किया और कोई प्रॉक्सी सेटिंग इसे नहीं बदलेगी। अगर यह पहले चरण में ही विफल हो, तो रुकें और ऐप की जाँच से पहले प्रॉक्सी पथ ठीक करें, क्योंकि एक साथ दो खराबियाँ ऐसी रिपोर्ट बनाती हैं जिस पर कोई कार्रवाई नहीं कर सकता।
पीछे हटें और सही उपकरण चुनें
किसी भी प्रॉक्सी पर्यावरण चर या प्रति-ऐप प्रॉक्सी सेटिंग को हटाएँ जिसने UDP क्लाइंट को SOCKS पोर्ट पर भेजा था; उन्हें यथावत छोड़ने से बाद के परीक्षण अस्पष्ट हो जाते हैं। किसी प्रति से पिछला कॉन्फ़िगरेशन बहाल करें, ऐप को फिर से शुरू करें और पुष्टि करें कि मूल व्यवहार लौट आया है ताकि तुलना साफ़ रहे। जिस रोलबैक की पुष्टि नहीं हुई वह केवल यह आशा है कि स्थिति बदल गई।
जिस ट्रांसपोर्ट को UDP ही रहना है, उसके लिए VPN आम तौर पर अधिक उपयुक्त है: यह ऐप से प्रॉक्सी प्रोटोकॉल बोलने को कहे बिना उसके पैकेट ले जाता है, पूरी तरह भिन्न अनामता गुण की कीमत पर। हर उपकरण को उसी काम के लिए इस्तेमाल करें जिसका वह दस्तावेज़ीकरण करता है, और उनके बीच के किसी भी पुल को अलग प्रणाली मानें जिसे अपनी समीक्षा चाहिए। अंतिम रिपोर्ट में लिखें कि कौन सी परत कौन सा ट्रांसपोर्ट ले जाती है, ताकि अगला व्यक्ति किसी दूसरे ऐप के साथ वही सीमा फिर से न खोजे।