SSH सुरंग / सत्र के लिए UDP छेद छिद्रण का उपयोग कैसे करें


21

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

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

प्रस्तावित सेटअप के साथ मैं इसे लैन के बाहर से रास्पबेरी पाई से कनेक्ट नहीं कर पाऊंगा।

नोट: मैं नेटवर्क को बदलना नहीं चाहता, और मौजूदा राउटर में पोर्ट फॉरवर्डिंग, dynDNS या वीपीएन की क्षमता नहीं है।

मैंने हाल ही में यूडीपी छेद छिद्रण पर पढ़ा। मूल विचार यह है, कि क्लाइंट एक ज्ञात सर्वर पते (यानी एक सार्वजनिक आईपी या dynDNS सक्षम) के साथ एक यूडीपी पैकेज भेजता है। क्लाइंट B जो क्लाइंट A से कनेक्ट करना चाहेगा, वह सार्वजनिक IP और क्लाइंट A के पोर्ट नंबर के लिए सर्वर से पूछता है।

यह तब क्लाइंट A से सीधे कनेक्ट हो सकता है, यह सार्वजनिक IP और पोर्ट है जो गतिशील है। क्‍योंकि क्लाइंट A पहले उपयोग किए गए पोर्ट पर सर्वर से जुड़ा है, NAT क्लाइंट A के पैकेज को अग्रेषित करेगा।

मुझे आशा है कि मैंने इस विचार को सही ढंग से, अधिक या कम…

यह सब अच्छा लगता है, लेकिन समस्या यह है कि यह टीसीपी कनेक्शन के साथ काम करने के लिए नहीं है, क्योंकि राउटर टीसीपी कनेक्शन के हैंडशेक को "समझने" में सक्षम है और अगर यह सही तरीके से नहीं बनाया गया है, तो यह आगे नहीं बढ़ेगा। संकुल।

तो, मैं क्लाइंट B से क्लाइंट A तक, क्लाइंट A के बिना dynDNS के साथ राउटर के पीछे, फिक्स पब्लिक आईपी या पोर्ट फॉरवर्डिंग की क्षमता के लिए SSH सत्र कैसे खोल सकता हूं? एक सार्वजनिक, फिक्स आईपी या डोमेन नाम के साथ एक केंद्रीय सर्वर का उपयोग कठिन होगा।


आपके पास एक इंटरनेट फेसिंग डिवाइस है जो UDP होल-पंचिंग में सक्षम है लेकिन टीसीपी नहीं है? एक बेहतर NAT डिवाइस प्राप्त करें।
cpt_fink

मैंने udp के साथ ssh नहीं किया, लेकिन यहाँ इस पर एक लिंक है zarb.org/~gc/html/udp-in-ssh-tunneling.html
barlop

मुझे नहीं पता, लेकिन मैंने एक ssh गुरु से पूछा, उन्होंने कहा कि ssh udp को फॉरवर्ड कर सकता है, लेकिन केवल अगर यह vpn की तरह काम करता है, और इसके लिए एक स्विच है, तो उन्होंने कहा कि यह है, -wलेकिन उन्होंने tcp पर udp कहा (शायद उसके द्वारा) शश के साथ udp को अग्रेषित करने का कोई भी प्रयास शामिल है), उच्च विलंबता जैसे मुद्दों को शामिल करता है, और आपके द्वारा अब और नहीं चाहने वाले सामान के रेट्रांसमिट्स। मुझे लगता है कि यह अभी भी कोशिश करने के लिए एक दिलचस्प बात है। मैं इस वीपीएन को ssh और -w के माध्यम से यहाँ भी wiki.archlinux.org/index.php/VPN_over_SSH
barlop

मैं उत्सुक हूं कि आप इनबाउंड पोर्ट क्यों नहीं खोलना चाहते हैं? - यह उस परिदृश्य की तरह नहीं लगता है जिसके लिए सुपर भयानक सुरक्षा की आवश्यकता होती है ... वैकल्पिक रूप से, आपके पास क्लाइंट हो सकता है एक आउटबाउंड एसएसएच कनेक्शन को रिवर्स पोर्ट बाइंडिंग के साथ एक सर्वर जो क्लाइंट बी के पास है। इस तरह आप मध्य-पुरुष सर्वर के माध्यम से जुड़ सकते हैं। हालाँकि, इस प्रकार की व्यवस्थाएँ विफल होने का खतरा होता है और इसलिए जब यह गलत हो जाता है तो इसे सुलझाने के लिए बहुत ही अवांछनीय सीमित भौतिक पहुँच दी जाती है।
kabadisha

जवाबों:


8

pwnat


".. यह NAT के पीछे किसी सहकर्मी से संबंध स्थापित करने के लिए तुच्छ नहीं है "

".. सभी एनएटी कार्यान्वयन के इनबाउंड ट्रैफ़िक को अग्रेषित करने से इनकार करते हैं जो हाल ही में मिलान आउटबाउंड अनुरोध के अनुरूप नहीं है "


".. यह pwnatउपकरण एक GNU / Linux-only, स्वायत्त NAT traversal का स्टैंड-अलोन कार्यान्वयन है NAT के पीछे सर्वर से संपर्क करने के बाद , यह UDP पैकेट का उपयोग करते हुए , टीसीपी शब्दार्थ के साथ एक चैनल स्थापित करता है। यह NAT के पीछे क्लाइंट और सर्वर दोनों का समर्थन करता है (यदि NAT में से कोई एक नकली [कस्टम] ICMP संदेशों को प्रेषित करने की अनुमति देता है )। यह कार्यान्वयन अंतिम उपयोगकर्ताओं को लक्षित करता है। "


  
उपयोग: ./pwnat <-s | -c> <args>

  -सी क्लाइंट मोड
    <args>: [local ip] <स्थानीय पोर्ट> <प्रॉक्सी होस्ट> [प्रॉक्सी पोर्ट (def: 2222)] <रिमोट होस्ट> <रिमोट पोर्ट>

  -s सर्वर मोड
    <args>: [local ip] [प्रॉक्सी पोर्ट (def: २२२२)] [[अनुमत होस्ट]: [अनुमत पोर्ट] ...]

  -6 IPv6 का उपयोग करें  
  -v शो डिबग आउटपुट (2 तक)  
  -ह दिखाएँ मदद और बाहर निकलें  

उदाहरण:  

    सर्वर पक्ष किसी को भी प्रॉक्सी की अनुमति देता है:
      ./pwnat -s

    Google.com:80 से जुड़ने के इच्छुक ग्राहक:
      ./pwnat -c 8000 <pwnat.server.com> google.com 80
    फिर, Google पर जाने के लिए http: // localhost: 8000 पर ब्राउज़ करें!  


pwnat;  नेटवर्क सिग्नल-फ्लो चार्ट


"सक्षम करने के लिए महत्वपूर्ण विचार सर्वर करने के लिए ग्राहक के आईपी पते जानने के लिए है सर्वर करने के लिए समय-समय पर एक निश्चित, ज्ञात आईपी पते को एक संदेश भेज। सरल दृष्टिकोण एक के लिए ICMP ECHO अनुरोध संदेशों का उपयोग करता है , आवंटित आईपी पते 1.2.3.4 जैसे चूंकि 1.2.3.4 आवंटित नहीं किया गया है, ICMP REQUEST को रूटर्स द्वारा बिना डिफ़ॉल्ट रूट के रूट नहीं किया जाएगा। "

"1.2.3.4 को भेजे गए संदेशों के परिणामस्वरूप, NAT इस अनुरोध के जवाब में उत्तर मार्ग को सक्षम कर देगा । कनेक्टिंग क्लाइंट तब इस तरह के उत्तर को नकली करेगा। विशेष रूप से, ग्राहक एक आईसीएमपी संदेश का संकेत देगा TTL_EXPIRED।" संदेश वैध रूप से किसी भी इंटरनेट राउटर द्वारा प्रेषित किया जा सकता है और प्रेषक का पता सर्वर के लक्ष्य आईपी से मेल नहीं खाता है। "

" सर्वर (नकली) ICMP उत्तरों की प्राप्ति और प्राप्ति के लिए सुनता है , जो ICMP उत्तर में निर्दिष्ट प्रेषक IP के लिए एक कनेक्शन की शुरुआत करता है। यदि ग्राहक एक वैश्विक रूप से निष्क्रिय आईपी पते का उपयोग कर रहा है, तो यह पूरी तरह से अप्रमाणिक है और टीसीपी या यूडीपी दोनों का उपयोग किया जा सकता है। एक द्वि-दिशात्मक कनेक्शन स्थापित करने के लिए यदि क्लाइंट पहले से सहमत पोर्ट पर सुनता है "

"(ऐसे मामलों में जहां कोई पूर्व-सहमत पोर्ट नहीं है, एक पोर्ट नंबर को ज्यादातर मामलों में ICMP ECHO RESPONSE के पेलोड के हिस्से के रूप में संचारित किया जा सकता है )।"


स्रोत: http://samy.pl/pwnat.pdf
https://github.com/samyk/pwnat


pwnat लोकलहोस्ट से लेकर लोकलहोस्ट कनेक्शन तक के लिए बमुश्किल कार्यात्मक है। मैं कुछ पैकेट भेज और प्राप्त कर सकता हूं, लेकिन मजबूत कनेक्शन स्थापित करने के लिए यह बहुत उपयोगी नहीं है।
स्कॉट

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

मैं शिकायत नहीं कर रहा हूं, लेकिन मुझे लगता है कि "यह समाधान उत्पादन वातावरण में उपयोग के लिए नहीं है" किसी भी संभावित स्थिर समाधान की तलाश में यहां आने वाले लोगों के लिए उपयोगी जानकारी है।
स्कॉट

@ ऐसे और ऐसे वातावरण में उपयोग के लिए नहीं है। मालिकाना उत्पादों के बहुत से इन तकनीकों को रोजगार। वैसे भी, लोगों को अपने निर्णय लेने के लिए यहाँ पर्याप्त जानकारी है। मैं इसकी अनुशंसा नहीं करता। लेकिन मैं वीपीएन सुरंगों का उपयोग करता हूं। दूसरी ओर, कुछ नेटवर्क वीपीएन ट्रैफ़िक को फ़िल्टर करते हैं, इसलिए आपको केस के आधार पर किसी चीज़ को लेना होगा। क्या आपको NAT राउटर के माध्यम से सहायता प्राप्त करने की आवश्यकता है?
आवाज

मेरे पास वर्तमान में दो NAT'd मशीनों को लिंक करने के लिए रिवर्स ssh सुरंगों का उपयोग करके काम करने योग्य समाधान है। हालांकि, इसके लिए एक "बिचौलिया" मशीन की आवश्यकता होती है जिसमें या तो एक स्टेटिक आईपी होता है या जिनके लिए मैं राउटर पर पोर्ट फॉरवर्डिंग कॉन्फ़िगर कर सकता हूं। इसने मुझे उस बिचौलिये को काटने में सक्षम बनाया। ओह अच्छा।
स्कॉट

1

यहाँ समाधान का एक जोड़ा है:

आप अपने रास्पबेरी पाई को OpenVPN सर्वर से वापस कनेक्ट करने के लिए सेटअप कर सकते हैं और आपके पास हर समय इसका उपयोग होगा।

आप PageKite पर एक नज़र डाल सकते हैं। Https://pagekite.net/wiki/Howto/SshOverPageKite/ की जांच करें


यह "यूडीपी छेद-छिद्रण" से कैसे संबंधित है ?
आवाजें

0

यह कुछ हद तक गंदा लेकिन आसान उपाय है, लेकिन netcat का उपयोग करने के बारे में क्या? रास्पबेरी पाई पर आप एक स्क्रिप्ट बना सकते हैं जो कमांड को लूप करती है:

nc <public_ip> <port1> | sh | nc <public_ip> <port2>  

अपने स्थानीय होस्ट पर, करें:

nc -l <port1>

तथा:

nc -l <port2>  

आप पहली बार में एक कमांड टाइप कर पाएंगे और दूसरे में प्रतिक्रिया देख पाएंगे।


यह "यूडीपी छेद-छिद्रण" से कैसे संबंधित है ?
आवाज

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