sshuttle बनाम पूर्ण VPN: यसको विधिले वास्तवमा के समेट्छ
sshuttle ले आफ्नो फर्वार्डिङ विधिले समर्थन गर्ने कुरा मात्र बोक्छ: पहिले TCP, DNS र UDP कभरेज, आवश्यक स्थानीय विशेषाधिकार र टाढाको सहायक जाँच्नुहोस्।
sshuttle छानिन्छ किनकि SSH पहिले नै काम गर्छ र क्रिप्टोग्राफी परिचित देखिन्छ, र यो तर्क उपयुक्तता निर्धारण गर्ने एक मात्र प्रश्न छोड्छ। कुन प्याकेट मेसिन छोड्छन्, अर्को छेउमा कुन खाताले तिनलाई बोक्छ, र उपकरणले कति स्थानीय विशेषाधिकार माग्छ। यी तीन उत्तर फर्वार्डिङ विधि अनुसार फरक पर्छन्, त्यसैले एक अनुप्रयोगका लागि काम गर्ने सेटअप अर्कोका लागि चुपचाप असफल हुन सक्छ। तलको विवरण अनुप्रयोगलाई साँच्चै आवश्यक पर्ने प्रोटोकलबाट सुरु हुन्छ।
अनुप्रयोगलाई आवश्यक पर्ने प्रोटोकलबाट सुरु गर्नुहोस्
sshuttle 2.0 मा प्रोटोकल समर्थन तपाईंले छान्ने विधिमा निर्भर गर्छ। Linux का NAT र nft विधिले TCP र DNS सम्हाल्छन्, र TPROXY ले सामान्य UDP थप्छ। प्रत्येक प्लेटफर्म र विधिका आफ्नै सीमा हुन्छन्, र macOS पूर्ण रूपमा फरक संयन्त्रबाट अवरोध गर्छ। केही छान्नु अघि स्थापित संस्करण, छानिएको विधि र अनुप्रयोगलाई आवश्यक प्रोटोकल लेख्नुहोस्।
त्यसैले काम गर्ने TCP अनुरोधले UDP अनुप्रयोग वा हरेक DNS खोजीबारे धेरै थोरै प्रमाणित गर्छ। sshuttle ले TCP लाई पूरा IP प्याकेट टनेल गर्नुको सट्टा प्रवाहका रूपमा लिन्छ, त्यसैले परम्परागत VPN बाट लिइएको थ्रुपुट निष्कर्ष यहाँ लागू हुँदैन। तपाईंले साँच्चै चलाउनुहुने संयन्त्रको तुलना तपाईंसँग साँच्चै भएको भारसँग गर्नुहोस्।
| Approach | What it carries | What it needs locally |
|---|---|---|
| SSH local forward | One explicitly named TCP destination | Nothing beyond the SSH client |
| sshuttle, nft or nat method | TCP and DNS to the routed prefixes | Root or sudo for firewall rules |
| sshuttle, tproxy method | TCP, DNS and general UDP | Root or sudo, and kernel support |
| IP VPN | Routed IP traffic in a tunnel | A client with the required privileges |
क्लाइन्टलाई स्थानीय रूपमा के चाहिन्छ
कागजात गरिएको क्लाइन्ट व्यवस्थालाई root वा sudo चाहिन्छ, किनकि यसले टनेल इन्टरफेस बनाउनुको सट्टा स्थानीय अवरोध नियम स्थापना गर्छ। त्यो एक तथ्यले सुरक्षा कथा बदल्छ: त्यो विशेषाधिकार भएको प्रक्रियाले एउटा अनुप्रयोगको मात्र नभई पूरै मेसिनको ट्राफिक मोड्न सक्छ। विशेषाधिकारलाई स्थापनाको विवरण नभई डिजाइनको भाग मान्नुहोस्।
उपकरणले कुन नियम स्थापना गर्यो र ती बाहिर निस्कँदा हराउँछन् भन्ने पुष्टि गर्नुहोस्। अवरोध नियम छोडेर दुर्घटनाग्रस्त भएको सत्रले अपरेटरले जडान गयो भन्ने ठानेको धेरै पछिसम्म ट्राफिकलाई कालो प्वालमा पठाउन सक्छ, र लक्षण बाँकी नियमजस्तो नभई नेटवर्क खराबीजस्तो देखिन्छ।
sudo sshuttle --method nft --dns 172.19.4.0/24
nft list ruleset | grep -i sshuttle
ip route
पहिलो आदेश सामान्य आह्वानको आकार हो, तपाईंलाई साँच्चै आवश्यक पर्ने उपसर्गसहित। दोस्रोले उपकरणले के स्थापना गर्यो देखाउँछ, र तेस्रोले कुनै टनेल इन्टरफेस देखा नपरेको पुष्टि गर्छ, जो यो डिजाइनका लागि अपेक्षित नतिजा हो।
टाढाको पक्षले के चलाउँछ
टाढाको पक्ष अधिकृत SSH खाता र मिल्दो Python सहायक वातावरण हो। सीमित शेलमुनि सफल लगइनले त्यो सहायक चलाउने अनुमति स्वतः दिँदैन, र सहायक चलाउन सक्ने खाता हरेक लक्ष्य सेवासम्म स्वतः पुग्दैन। दुवै तथ्य समस्या समाधान टिप्पणीमा नभई पहुँच अनुरोधमा पर्छन्।
होस्ट पहिचान प्रमाणीकरण र खाताको प्रमाणीकरण जोगाउनुहोस्। पहिलो जडान काम गराउन अज्ञात होस्ट कुञ्जी स्वीकार गर्दा टाढाको पक्ष तपाईंले लक्ष्य गरेको मेसिन हो भन्ने जाँच हट्छ, र यो यहाँ एउटै उद्देश्यको फर्वार्डिङभन्दा बढी महत्त्वपूर्ण छ।
टाढाको खातालाई कार्यप्रवाहलाई आवश्यक सेवाहरूमा सीमित गर्नुहोस्, र त्यो दायरा होस्ट चलाउनेहरूसँग सहमति गर्नुहोस्। तिनीहरू विश्वास सम्बन्धको भाग हुन्, र क्लाइन्ट पक्षको कुनै सेटिङले त्यो बदल्दैन।
विश्वास सीमा कहाँ छ
SSH मार्फत निजी API जडान फर्वार्ड गर्दा हरेक API कार्यलाई अधिकृत गर्दैन। अनुप्रयोगको TLS र अनुप्रयोगमा लगइन अझै लागू हुन्छन्, र उपकरणले प्रमाणीकरण नभएको सेवालाई सुरक्षित बनाउन सक्दैन। टाढाको होस्टबाट अर्को फड्को पनि स्वतः SSH च्यानलजस्तै त्यही सुरक्षित खण्ड हुँदैन, किनकि त्यो दोस्रो जडान टाढाको होस्टसँग भएको जुनसुकै नीति पछ्याउँछ।
सीमा एउटा वाक्यमा लेख्नुहोस्: यी उपसर्गतर्फको ट्राफिक त्यो होस्टमा यो खाताबाट बाहिर निस्कन्छ। यदि वाक्यलाई अपवादको एक अनुच्छेद चाहिन्छ भने, डिजाइनले आफ्नो कागजातले दाबी गरेभन्दा बढी गर्दैछ र उत्पादनमा पुग्नु अघि दोस्रो हेराइको योग्य छ।
हरेक प्रोटोकलमा प्रमाणित गर्नुहोस्, त्यसपछि उपकरण छान्नुहोस्
हरेक आवश्यक प्रोटोकल हानिरहित अनुरोधले परीक्षण गर्नुहोस्, रिजोल्भर मार्ग र अनुप्रयोगले प्रयोग गर्ने ठेगाना परिवार सहित। परीक्षणमा विच्छेद पनि समावेश गर्नुहोस्, ताकि अनुप्रयोगको अनुमत असफलता व्यवहार घटनाको समयमा आश्चर्य नभई ज्ञात नतिजा बनोस्। चालु हुँदा ठीक फर्वार्ड गर्ने सत्रले ढल्केपछि के हुन्छ भन्नेबारे केही बताउँदैन।
स्पष्ट रूपमा नाम दिइएका थोरै सेवाहरूका लागि साधारण स्थानीय फर्वार्डिङ स्वामित्व र लेखापरीक्षणका लागि सजिलो हुन्छ। आफ्नो विधिसँग मिल्ने अनुप्रयोग ट्राफिकका लागि sshuttle कानुनी मध्यम मार्ग दिन्छ। आवश्यकता फराकिलो IP जडान भएको बेला VPN डिजाइन नै इमानदार उत्तर हो, र छनोटले इन्क्रिप्शन एल्गोरिदमको क्रम नभई कभरेज र सञ्चालन जिम्मेवारी पछ्याउँछ।