मैंने हाल ही में OpenVPN के साथ एक डेबियन व्हीज़ी सर्वर स्थापित किया है, जिसमें कुछ दोस्तों को उन क्षेत्रों में मदद करने के लिए है जहाँ इंटरनेट सेंसरशिप एक समस्या है (सामान्य रूप से वीपीएन ट्रैफ़िक को रोकना भी शामिल है)। इसे दूर करने के लिए, क्लाइंट पहले सर्वर पर SSH सुरंग बनाते हैं, फिर उस पर VPN से कनेक्ट होते हैं।
सर्वर एक खुला SSH पोर्ट 40001, और TCP प्रोटोकॉल के साथ OpenVPN सर्वर के लिए 40002 पोर्ट। ये दोनों राउटर पर ठीक से कॉन्फ़िगर किए गए लगते हैं।
मैं अपने ग्राहकों को एक स्क्रिप्ट देता हूं जो उनके लोकलहोस्ट: 8080 से लेकर मेरे पर्यवेक्षक: 40001 तक, फिर वीपीएन से जुड़ती है। उनके क्लाइंट ओपनवीपीएन कॉन्फ़िगरेशन में 'रिमोट' सेट 'लोकलहोस्ट 8080' है, जैसे कि वीपीएन कनेक्शन इस एसएसएच सुरंग पर निर्देशित है।
मेरी परेशानी यह है कि यह सुरंग कभी-कभी काम करती है (प्रतीत होता है कि यादृच्छिक समय पर) लेकिन अक्सर कनेक्शन रखने में विफल रहती है। मैंने इसे एक साथ कुछ कंप्यूटरों पर काम करते हुए भी देखा है (मेरे अपने, मुख्यतः) लेकिन अन्य नहीं। जब यह विफल हो जाता है, तो ग्राहक वीपीएन से कनेक्ट हो जाएगा, लेकिन इंटरनेट तक पहुंचने में असमर्थ होगा, और लगभग 30-40 सेकंड के बाद, एसएसएच सुरंग प्रक्रिया बस समाप्त हो जाएगी (सुरंग को मैन्युअल रूप से खोलना केवल "त्रुटि लिखें: टूटी पाइप" जब यह मर जाता है)। मुझे ऐसा कुछ भी नहीं मिल रहा है कि सर्वर या क्लाइंट लॉग में यह पता लगाने के लिए कि यह क्या हो रहा है या सुरंग को क्यों मार रहा है।
मुझे पता है कि यह स्वयं वीपीएन कनेक्शन का दोष नहीं है, क्योंकि अगर मैं स्थानीय आईपी: 8080 से दूरस्थ आईपी को अपने सार्वजनिक सर्वर के वास्तविक सार्वजनिक पते और ओपनवीपीएन पोर्ट में बदल देता हूं, तो यह लगातार ठीक से काम करेगा।
मेरा संदेह यह है कि मेरे iptables नियम ऐसे हैं कि सीधे वीपीएन में आने वाले कनेक्शन को समायोजित किया जाता है, लेकिन सर्वर के अंदर से आने वाले वीपीएन के कनेक्शन (एसएसएच सुरंग के कारण) अलग तरीके से व्यवहार किए जाते हैं। हालाँकि, अगर ऐसा होता, तो मैं यह नहीं देखता कि यह कभी-कभार ही क्यों होता। इन कनेक्शन बूंदों के कारण और क्या हो सकता है? मुझे /var/log/auth.log, /etc/openvpn/openvpn.log, या किसी भी क्लाइंट लॉग में प्रासंगिक कुछ भी नहीं मिल रहा है।
मेरा /etc/iptables/rules.v4 इस प्रकार है:
*nat
:PREROUTING ACCEPT [211:13875]
:INPUT ACCEPT [3:371]
:OUTPUT ACCEPT [5:348]
:POSTROUTING ACCEPT [5:348]
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
COMMIT
*filter
:INPUT ACCEPT [7937:9042429]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [10987:15593548]
:fail2ban-ssh - [0:0]
-A FORWARD -i eth0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i tun0 -o eth0 -j ACCEPT
-A INPUT -p tcp -d localhost --destination-port 40001 -j ACCEPT
COMMIT
संपादित करें: मैंने पाया कि क्या समस्या पैदा कर रहा है, लेकिन मुझे नहीं पता कि इसे कैसे ठीक किया जाए। जब ग्राहक वीपीएन चलाता है, तो सभी ट्रैफिक - जिसमें एसएसएच टनल भी शामिल है - उस पर रूट किया जाता है। यह परिपत्र है, निश्चित रूप से, और सुरंग को क्रैश करता है। मुझे बस किसी तरह OpenVPN के मार्ग से SSH सुरंग को बाहर करने की आवश्यकता है ...