स्थानीय और दूरस्थ आईपी अग्रेषण के बीच अंतर क्या है?


10

दोनों के बीच कार्यक्षमता में अंतर क्या है? मैं इससे थोड़ा भ्रमित हूं।

स्थानीय अग्रेषण दूरस्थ पोर्ट को स्थानीय रूप से उपलब्ध कराता है।

रिमोट फ़ॉरवर्डिंग एक स्थानीय पोर्ट को दूरस्थ रूप से उपलब्ध कराता है।

लेकिन यह 'उपलब्धता' दोनों दिशाओं में काम करेगी ... या करता है?

उदाहरण के लिए (एक मेजबान 'घर से जारी)

ssh -R 1234:localhost:2345 user@work

यह काम :: 1234 और घर :: 2345 के बीच एक सुरक्षित सुरंग स्थापित करेगा, है ना?

अगर मैं किसी भी चीज़ को एक छोर पर रखूंगा, तो वह दूसरे छोर पर आ जाएगी।

लेकिन फिर, मैं मेजबान 'काम' से निम्नलिखित कॉल द्वारा इसे प्राप्त कर सकता हूं:

ssh -L 1234:localhost:2345 user@home

तो, केवल अंतर यह है कि मैं इसे कहां से कहता हूं, सही है?


आपके उदाहरण में कार्यक्षमता में कोई अंतर नहीं है। आप लक्ष्य मेजबानों को बदलकर विपरीत तर्क का उपयोग करने के लिए आत्म-क्षतिपूर्ति करते हैं। अगर आपने ऐसा नहीं किया होता और 1 एकल होस्ट के भीतर से दोनों का उपयोग किया - तो यह पहले से ही पूरी तरह से विपरीत व्यवहार को ट्रिगर करेगा।
XXL

जवाबों:


2

प्रमुख व्यावहारिक अंतर यह है कि यदि 2 कंप्यूटर A और B को जोड़ रहे हैं, और B एक फ़ायरवॉल या NAT राउटर के पीछे है जिसे आप नियंत्रित नहीं करते हैं, और यह आने वाले को अवरुद्ध कर रहा है .. आप A पर बैठे हैं। आप A को प्राप्त नहीं कर सकते बी से कनेक्ट करने के लिए। लेकिन बी आउटिंग को ब्लॉक नहीं करेगा। इसलिए आपको ए से कनेक्ट होने के लिए बी मिलता है।

- स्पष्ट स्पष्टीकरण -

ऊपर, जिसे प्रश्नकर्ता ने समझा .. का अर्थ है स्थानीय और दूरस्थ अग्रेषण के बीच प्रमुख व्यावहारिक अंतर। ssh -L और ssh -R जब आप प्रत्येक का उपयोग करेंगे। मैं उनके द्वारा दिए गए विशिष्ट उदाहरण आदेशों पर टिप्पणी नहीं कर रहा था, जहां वह -L और -R स्विच करता है, और वह किस sshd सर्वर से जुड़ता है। लेकिन अब मैं इस पर टिप्पणी करने का प्रयास करूँगा .. नियमित ग्राहक और नियमित सर्वर के दृष्टिकोण से, उन्होंने दिए गए ssh आदेशों के साथ, कोई अंतर नहीं प्रतीत होता है, क्योंकि यह नहीं कहता है "आह यह एक ssh ग्राहक है यह एक ssh सर्वर है .. "यह ssh को नहीं जानता है, और जो ssh का क्लाइंट / सर्वर पहलू है, वह अप्रासंगिक है और नियमित क्लाइंट और नियमित सर्वर के लिए भी अज्ञात है। वे केवल इस बात की परवाह करते हैं कि कौन सुन रहा है, और उनके दृष्टिकोण से, यह एक जैसा दिखता है। काम कंप्यूटर सुन रहा है और 1234 पर। वे डॉन ' ध्यान दें कि एक मामले में यह एक sshd.exe ssh सर्वर है, और दूसरे मामले में यह ssh.exe, ssh क्लाइंट है। वैसे, जहां ssh क्लाइंट है, उसे स्थानीय माना जाता है।


ठीक है, धन्यवाद, कि वास्तव में मेरे सवाल का जवाब दिया! :-)
नंदलू

@ नंदलू मुझे लगता है कि इसे रिवर्स एसश टनल कहा जाता है। यदि हम बनावटी पद सर्जक और श्रोता का उपयोग करते हैं ('क्योंकि वे पद क्लाइंट और सर्वर से कम अस्पष्ट हैं)। विचार यह है कि आपके पास आपके नियमित सर्जक और श्रोता हैं और आपके ssh सर्जक और श्रोता हैं। आप यह नहीं चुन सकते कि आपके नियमित सर्जक और श्रोता कहां हैं। जैसे बीटी पर HTTP सर्वर (नियमित श्रोता) एक फ़ायरवॉल के पीछे है। A में HTTP क्लाइंट (नियमित आरंभकर्ता) है। आप अपने SSH सर्जक को B. पर रखते हैं। रिवर्स टनल के साथ देखें SSH सर्जक और श्रोता, नियमित सर्जक और श्रोता के विपरीत कंप्यूटर पर हैं।
बार्लोप

10

हां, अगर मैं इसे सही तरीके से समझूं, तो a से b तक का स्थानीय पोर्ट, b से a (और इसके विपरीत) के लिए दूरस्थ पोर्ट के समान होना चाहिए। A से b तक की एक आउटगोइंग टनल (a से देखी गई) एक इनकमिंग टनल से b के बराबर (b से देखी गई) होनी चाहिए।

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

ssh -L local_port:remote_host:remote_port user@hostname

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

ssh -R local_port:remote_host:remote_port user@hostname

1
मुझे लगता है कि सिंटैक्स के अलावा, एक और अंतर है, यह प्रक्रिया होगी जो उपयोगकर्ता को कनेक्ट करने के लिए सुनती है। ssh.exe -L सुनने के लिए ssh.exe को बताता है (इसके अलावा जो आउटगोइंग कनेक्शन इसे पहले से बना रहा है)। ssh.exe -R सुनने के लिए sshd.exe को बताता है (सुनने के अलावा यह पहले से ही कर रहा है)।
बार्लोप

@ 0x4a6f4672, क्या 0x4a6f4672मतलब है?
पचेरियर

@ हेक्साडेसिमल संकेतन में मेरे शुरुआती अक्षर "JoFr" :-)
0x4a6f4672

3

लोकल पोर्ट फॉरवर्ड करने से आप (क्लाइंट) अपने कंप्यूटर पर एक सुनने वाला सॉकेट खोलते हैं और अपने एप्लीकेशन-लेवल प्रोटोकॉल क्लाइंट को इस सॉकेट से कनेक्ट करते हैं। अब सर्वर पर एसएसएच पर कनेक्शन भेजा जाता है। सर्वर दूरस्थ होस्ट से कनेक्ट होता है और आपके प्रोटोकॉल क्लाइंट से डेटा को अंतिम गंतव्य तक सुरंग करता है।

दूरस्थ पोर्ट अग्रेषित करने के साथ सर्वर सर्वर होस्ट पर एक सुन सॉकेट खोलता है। कुछ दूरस्थ अनुप्रयोग इस होस्ट से जुड़ते हैं और सूचना भेजते हैं जो आपके क्लाइंट कंप्यूटर में स्थानांतरित हो जाती है। यहां कनेक्शन को अंतिम गंतव्य (आपके कंप्यूटर या आपके नेटवर्क पर चल रहे कुछ एप्लिकेशन-लेवल प्रोटोकॉल सर्वर) पर स्थापित किया जाता है और डेटा को दूरस्थ एप्लिकेशन से अंतिम गंतव्य पर स्थानांतरित किया जाता है।


धन्यवाद, यह स्पष्ट कर दिया कि पोर्ट अग्रेषण कैसे काम करता है। और इस सवाल को आगे बढ़ाने के लिए धन्यवाद - मैं अभी इस
सुपरसुअर

1

यह छोटे उदाहरणों के साथ सबसे अच्छा समझा जाता है। इन छूटों में कनेक्शन इस तरह संरचित हैं:

स्थानीय सर्वर - (LAN) - टर्मिनल ----- (SSH, आमतौर पर इंटरनेट के माध्यम से) ----- सुरंग समापन बिंदु - (LAN) - दूरस्थ मशीन

यदि आप किसी निश्चित दूरस्थ मशीन / पोर्ट पर सुरंग बनाना चाहते हैं, तो आप स्थानीय पोर्ट फ़ॉरवर्डिंग का उपयोग करते हैं, जिस सुरंग के समापन बिंदु पर आप पहुँचना चाहते हैं। इसके अलावा, दूरस्थ मशीन का पोर्ट स्थानीय रूप से आपके अपने टर्मिनल यानी http: // localhost: terminal_port / पर भी सुलभ है।

यह निम्नलिखित सिंटैक्स का उपयोग करके किया जाता है:

ssh -L terminal_port:remote_machine_ip:remote_service_port -p tunnel_endpoint_ssh_port ssh-login@tunnel_endpoint_ip

यदि आप किसी को भी सक्षम करना चाहते हैं तो आप रिमोट पोर्ट फ़ॉरवर्डिंग का उपयोग कर सकते हैं ( रिमोट !) , जो आपके स्थानीय LAN में IP / पोर्ट को दूरस्थ रूप से एक्सेस करने में सक्षम होने के लिए सुरंग समापन बिंदु के श्रवण पोर्ट तक पहुंचने में सक्षम है। आपके स्थानीय सर्वर के लिए, ऐसा लगता है कि रिमोट मशीन से कनेक्शन टर्मिनल द्वारा शुरू किया गया है।

सिंटैक्स है:

ssh -R tunnel_endpoint_listen_port:local_server_ip:local_server_port -p tunnel_endpoint_ssh_port ssh-login@tunnel_endpoint_ip

0

सोसाइटी के लिए मेनपेज यह बहुत अच्छी तरह से स्पष्ट करता है। हां, मैं जानता हूं कि ssh और सोसाइटी दो पूरी तरह से अलग चीजें हैं - लेकिन सोसाइटी का प्रलेखन बहुत अच्छा है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.