टीसीपी सुरंग को स्वचालित रूप से फिर से जोड़ना


9

मेरे पास दो मशीनों के बीच एक अविश्वसनीय नेटवर्क कनेक्शन है: कभी-कभी सक्रिय टीसीपी कनेक्शन मेरे नियंत्रण से परे कारणों से गिराए जाते हैं। मैं दो मशीनों के बीच एक विश्वसनीय टीसीपी कनेक्शन स्थापित करना चाहता हूं ।

यदि नेटवर्क विश्वसनीय था, तो मैं बस चलाऊंगा ssh -L 1234:localhost:1234 remotehost, जिसमें सर्वर 1234 पोर्ट पर सुन रहा होगा remotehost, और क्लाइंट को इंगित करेगा localhost:1234। लेकिन अगर ssh कनेक्शन मर जाता है, तो आगे का कनेक्शन होगा। मैं क्लाइंट और सर्वर के बीच कनेक्शन को स्वचालित रूप से पुनर्स्थापित करने की व्यवस्था कैसे कर सकता हूं?

गैर-समाधान:

  • यह इंटरैक्टिव अनुप्रयोगों के लिए नहीं है, इसलिए स्क्रीन लागू नहीं होती है।
  • यह सिर्फ SSH सुरंग को स्वचालित रूप से फिर से जोड़ने के बारे में नहीं है, h ला ऑटोसह । मैं उसी सुरंग वाले टीसीपी कनेक्शन का उपयोग जारी रखना चाहता हूं, एक नई शुरुआत नहीं।
  • सिद्धांत रूप में, एक वीपीएन ट्रिक करेगा। लेकिन ऐसा लगता है कि जब मैं सिर्फ एक टीसीपी कनेक्शन चाहता हूं, तो यह ओवरकिल हो जाता है, और मैं एक ऐसा समाधान चाहूंगा जो काम करता हो, भले ही मेरे पास रूट अनुमति न हो।

मेरे पास एक कार्यक्रम की मंद स्मृति rocksहै, जिसने बस ऐसा ही किया है, लेकिन ऐसा लगता है कि यह वेब के चेहरे से गिर गया है। मैं ज्यादातर दोनों पक्षों पर लिनक्स में दिलचस्पी लेता हूं (हालांकि मैं इस स्तर पर एक कार्यक्रम को अन्य यूनियनों के पोर्टेबल होने की उम्मीद करूंगा), लेकिन अगर आप एक ऐसे कार्यक्रम के बारे में जानते हैं जो QNX और VMS के बीच काम करता है, तो सभी बेहतर हैं।


गिल्स, क्या आप अपने ssh कनेक्शन के साथ tcp कीपैलिव्स का उपयोग कर रहे हैं? यदि नहीं, तो पहले यह प्रयास करें ... कुछ NAT कार्यान्वयन समय कनेक्शन जल्दी से बाहर निकलते हैं
माइक पेनिंगटन

@ माइक: टिप के लिए धन्यवाद। मुझे तत्काल जरूरत नहीं है, लेकिन मैंने दोनों स्थितियों का सामना किया है, जहां कुछ मध्यवर्ती मार्ग आया और चला गया (इसलिए टीसीपी के रखैलियों ने अच्छे से अधिक नुकसान किया) और ऐसी परिस्थितियां जहां एनएटी ने ओवरलोड किया और मुझे गिरा दिया (इसलिए टीसीपी के रखवाले मदद कर सकते हैं)। वैसे भी एक सतत स्ट्रीम के लिए TCP रखवाले मायने नहीं रखेंगे (उदाहरण के लिए), क्या वे करेंगे? किसी भी मामले में मैं इसे सामान्य रखना चाहूंगा: अगली बार जब भी मुझे किसी भी स्वाद के एक परतदार नेटवर्क का सामना करना पड़ेगा, तो मैं क्या कर सकता हूं?
गिल्स एसओ- बुराई को रोकना '30

गिल्स, समाधान लगातार धाराओं जैसे भिन्न होते हैं scp। मैं आपके पोर्ट-फ़ॉरवर्डिंग उदाहरण के आधार पर w / ssh के रखवालों का जवाब दे रहा था। पुन :: परतदार नीचे की उम्मीद है, वहाँ बहुत कुछ तुम नहीं कर सकते, रखवाले के साथ एक ssh सत्र बनाने के अलावा है कि और अधिक सहिष्णु हैं (यानी और अधिक गिराए रखने के साथ रखने की अनुमति ) ServerAliveInterval > 0और ServerAliveCountMax > 3। NAT को कम रखने वाले अंतराल की आवश्यकता होती है। मुख्य मुद्दा यह है कि समस्या क्या है और तदनुसार दर्जी की पहचान करना है। विकल्पों को रखो .ssh/configताकि वे हमेशा आपके लिए हों
माइक पेनिंगटन

@ माइक: मेरे उपयोग के मामलों में से एक में ग्राहक को अपने आईपी को ओवरलोडेड NAT से प्राप्त करना शामिल है, जो बेतरतीब ढंग से सक्रिय कनेक्शनों को छोड़ देता है (लगता है कि वहाँ से अधिक पी 2 पी होना चाहिए)। कुछ सेकंड के बाद, क्लाइंट पुन: कनेक्ट करने का प्रबंधन करता है, लेकिन एक अलग आईपी पता प्राप्त कर सकता है। उस मामले में टीसीपी कनेक्शन जीवित रहने का कोई तरीका नहीं है। चट्टानों का मुकाबला होता है, लेकिन मैं आज के सिस्टम पर बॉक्स से हटकर कुछ करना पसंद करूंगा।
गिल्स एसओ- बुराई को रोकना '30

NAT के मामले में आप नए IP देते हैं, तो ऐसा कुछ नहीं है कि आप NAT को किसी अन्य rocksकार्यान्वयन के लिए निश्चित या आशा से अधिक कर सकें ... हालांकि यह स्पष्ट रूप से एक वास्तविक कीचड़ है
माइक पेनिंगटन

जवाबों:


5

क्या पुराना कोई विश्वसनीय सॉकेट ( चट्टान ) है जिसे आप ढूंढ रहे हैं?


1
धन्यवाद, रॉक्स वास्तव में मुझे याद है। बेशक मैं कुछ है कि बनाए रखा है पसंद करेंगे।
गिल्स एसओ- बुराई को रोकें '30

@ Gilles'SO-stopbeingevil 'न केवल यह असम्मानित है, बल्कि ऐसा लगता है कि यह पूरी तरह से इंटरनेट से दूर हो गया है!
माइकल

1

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

मैं MPTCP कार्यान्वयन की परिपक्वता के बारे में बहुत कुछ नहीं जानता, लेकिन प्रोटोकॉल का डिज़ाइन काफी मजबूत दिखता है।

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

SSH प्रोटोकॉल में शामिल विधि बनाने के लिए एक MPTCP एक ऐसा तरीका होगा जो मैं एक कनेक्शन को लंबे समय तक संभव रखने के लिए कल्पना कर सकता हूं। लेकिन मुझे नहीं लगता कि ऐसा कोई फीचर एसएसएच प्रोटोकॉल के लिए तैयार किया गया है।


0

आप daemontoolsssh पोर्ट को आगे रखने के लिए उपयोग कर सकते हैं; यह जरूरी नहीं है कि यह कनेक्शन के आधार पर कार्यक्रमों को जीवित रखे, जबकि यह नीचे है (जैसा कि जब ssh डिस्कनेक्ट करता है तो स्थानीय पोर्ट उनके कनेक्शन को मना करना शुरू कर देगा), लेकिन यह एक शुरुआत है।

मुझे संदेह है कि कुछ iptablesतरकीबें हैं, जैसे कि एसआर फॉरवर्ड होते ही उस पोर्ट को डीआरओपी पैकेट तक पहुंचाना, इसलिए कनेक्टिंग प्रोग्रामों को बस पता है कि पैकेट गायब हो रहे हैं, मना नहीं किया जा रहा है। मैं सिर्फ daemontoolsअपने आप को (फिर से) सीख रहा हूं इसलिए मुझे यकीन नहीं है कि यदि आप एक सेवा की मृत्यु होने पर कस्टम स्क्रिप्ट चला सकते हैं, लेकिन मुझे संदेह है कि आप कर सकते हैं।


-2

टीसीपी स्वचालित रूप से ऐसा करता है। मॉरीबंड टीसीपी कनेक्शन को मारने के लिए उपयोग किए जाने वाले विशिष्ट व्यावहारिक क्लीनअप हैक को आपको केवल अक्षम या कमजोर करना होगा। अपने कनेक्शन के लिए टीसीपी रखने को अक्षम करें, और अत्यधिक पुनर्प्राप्ति के लिए सीमा बढ़ाएँ। लिनक्स पर, उदाहरण के लिए, बड़ी संख्या में लिखें /proc/sys/net/ipv4/tcp_retries2

हालांकि, एक आधुनिक नेटवर्क में एक स्टेटफुल पैकेट निरीक्षण फ़ायरवॉल एक टीसीपी कनेक्शन के बारे में भूल जाने की संभावना है जो नियमित रूप से पैकेट का आदान-प्रदान करने में विफल रहता है, इसलिए यह आपकी परेड पर बारिश कर सकता है।


1
यह सच है कि टीसीपी स्थिति को संभाल सकता है, जब तक कि प्रत्येक समापन बिंदु पर एक स्थिर आईपी पता होता है और कोई स्टेटफुल मिडबॉक्स नहीं होते हैं। प्रश्न में उल्लेख है reasons beyond my control, जिसे मैंने डायनेमिक आईपी या स्टेटफुल मिडबॉक्स के रूप में पढ़ा। ऐसे परिदृश्यों में टीसीपी की रखवाली थोड़ी मदद कर सकती है। लेकिन कोई फर्क नहीं पड़ता कि आप टीसीपी को कैसे कॉन्फ़िगर करते हैं, यह कनेक्शन को चालू रखने के लिए पर्याप्त नहीं होगा जब एक मिडबॉक्स बॉक्स फिर से चालू होने के कारण खो जाता है।
कास्परड

@kasperd मैं सहमत हूं। हालाँकि, उन मामलों में टीसीपी कनेक्शन को खुला रखने की कोशिश करना निरर्थक है। इसलिए, मैंने माना कि प्रश्नकर्ता उन विशेष चुनौतियों का सामना नहीं कर रहा है।
एक्यूलेली

यह व्यर्थ नहीं है यदि आप दोनों समापन बिंदुओं को नियंत्रित करते हैं और उन्हें MPTCP समर्थन के साथ स्टैक में अपग्रेड कर सकते हैं। इसके अतिरिक्त MPTCP की आवश्यकता के बिना टीसीपी के शीर्ष पर एक एप्लीकेशन लेयर सॉल्यूशन लागू किया जा सकता है।
कास्परड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.