यूडीपी ट्रैफिक के लिए नेटकैट सुनना बंद कर देता है


8

मैं कुछ लिनक्स मशीनों पर netcat का उपयोग कर रहा हूं (यह अन्य प्रश्न देखें ), लेकिन कुछ अप्रत्याशित व्यवहार को देखकर।

स्वीकृत उत्तर में मार्गदर्शिका के विपरीत, मैं डीएनएस प्रश्नों को करने के लिए यूडीपी टनलिंग का उपयोग नहीं कर रहा हूं। मेरे पास एक दूरस्थ सर्वर है जिसे मैं लॉग इन कर सकता हूं, लेकिन सॉफ़्टवेयर को इंस्टॉल नहीं कर सकता हूं, और मैं अपने कंप्यूटर से सर्वर पर यूडीपी ट्रैफ़िक को सुरंग करने की कोशिश कर रहा हूं, और फिर यूडीपी प्रतिक्रियाओं को सर्वर से मेरी मशीन पर वापस भेजने के लिए एक अलग सुरंग सेटअप कर रहा हूं ।

मेरी मशीन से सर्वर पर जाने वाली सुरंग पूरी तरह से काम कर रही है, हालांकि सर्वर की ओर से, नेटकैट का उदाहरण जो यूडीपी सर्वर से प्रतिक्रिया के लिए सुन रहा है, पहली प्रतिक्रिया प्राप्त करने के बाद श्रोता को बंद कर देगा। इसलिए मैं एक अनुरोध भेज सकता हूं और 1 प्रतिक्रिया वापस पा सकता हूं, लेकिन बाद के किसी भी अनुरोध को सर्वर पर ठीक कर सकता है लेकिन प्रतिक्रियाएं नहीं मिलती हैं। Netstat का उपयोग करके मैं देख सकता हूं कि प्रतिक्रिया प्राप्त होने से पहले netcat सुन रहा है, लेकिन प्रतिक्रिया प्राप्त होने के बाद पोर्ट को बंद कर दिया जाता है।

मेरे मशीन पर netcat उदाहरण सब कुछ ठीक करने के लिए लगता है। दोनों मशीनें netcat v1.10-38 पर चल रही हैं। कुछ पता है कि क्या चल रहा है?

जवाबों:


2

तो वहाँ कई चीजें हैं netcat कहा जाता है; उबंटू के पास / आदि / विकल्प के लिए प्रतीकात्मक-लिंक-हैकरी है।

मुझे लगता है कि आपकी समस्या का हिस्सा यह है कि यूडीपी सत्र नहीं करता है; मैंने नीचे फ़ाइल /usr/share/doc/netcat-traditional/README.gz के भाग में प्रतिलिपि की है, जो समझाने का एक बहुत अच्छा काम करता है।

-U निर्दिष्ट होने पर टीसीपी के बजाय यूडीपी कनेक्शन खोले जाते हैं। क्योंकि UcDP एक कनेक्शन रहित प्रोटोकॉल है, ये वास्तव में "कनेक्शन" नहीं हैं, हालांकि netcat आंतरिक रूप से "कनेक्टेड UDP सॉकेट" तंत्र का उपयोग करता है जो कि अधिकांश कर्नेल का समर्थन करता है। हालांकि नेटकैट का दावा है कि एक निवर्तमान यूडीपी कनेक्शन तुरंत "खुला" है, जब तक कि मानक इनपुट से कुछ नहीं पढ़ा जाता है तब तक कोई डेटा नहीं भेजा जाता है। इसके बाद ही यह निर्धारित करना संभव है कि क्या वास्तव में दूसरे छोर पर एक यूडीपी सर्वर है, और अक्सर आप बता नहीं सकते हैं। अधिकांश यूडीपी प्रोटोकॉल अपनी बात करने के लिए टाइमआउट और रिट्रीट का उपयोग करते हैं और कई मामलों में जवाब देने में बिल्कुल भी परेशान नहीं करेंगे, इसलिए आपको एक टाइमआउट निर्दिष्ट करना चाहिए और सर्वश्रेष्ठ की उम्मीद करनी चाहिए।

ठीक है तो शायद यह सब एक स्पष्टीकरण के महान नहीं है, लेकिन यह वही है जो मुझे मिल सकता है।

यदि आपने अभी तक नहीं किया है, तो आप किसी भी नेटकैट विकल्पों के साथ प्रयोग करना चाहते हैं जो आप पा सकते हैं कि प्रतीक्षा के साथ क्या करना होगा ... क्या आपने इसका उपयोग किया है:

  • का उपयोग कर -l के साथ-साथ यह सुनिश्चित करने के लिए कि आप "सुन" मोड में हैं

  • -vv देखने के लिए वास्तव में क्या हो रहा है

  • -क्यू -1 ... जो ईओएफ प्राप्त करने के बाद भी "हमेशा के लिए इंतजार करना चाहिए" (उम्मीद है, फिर से सुन रहा है?)


5
तो यह एक स्वीकृत उत्तर है, लेकिन हम नहीं जानते कि कौन सी युक्तियां उपयोगी साबित हुईं :(
törzsmókus

2

आप उसके socatलिए उपयोग कर सकते हैं । यह बहुत अच्छा विकल्प है fork:

fork एक कनेक्शन स्थापित करने के बाद, एक बच्चे की प्रक्रिया में अपने चैनल को संभालता है और मूल कनेक्शन को अधिक कनेक्शन का उत्पादन करने का प्रयास करता है, या तो सुनने या लूप (उदाहरण) में कनेक्ट करके।

ग्राहक (हाँ यह आप ग्राहक से चलाते हैं):

$ ssh -L 7753:localhost:7753 YourServer.com "/usr/bin/socat tcp4-listen:7753,reuseaddr,fork UDP:8.8.8.8:53"

ग्राहक:

$ sudo socat udp4-listen:53,reuseaddr,fork tcp:localhost:7753
$ dig @127.0.0.1 google.com
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.