टीसीपी सॉकेट समय कैसे बनायें


20

हमारे सर्वर वातावरण के नेटवर्क तबाही सिमुलेशन के लिए, हम जानबूझकर टीसीपी सॉकेट के लिए एक रास्ता तलाश रहे हैं। क्या मौजूदा सॉकेट्स के लिए कोई सरल तरीके हैं? इसके अलावा, थोड़ा सी टेस्ट-केस प्रोग्राम एक प्लस होगा।

हमने पहले ही टीसीपी बफर पढ़ने, और डिस्कनेक्ट किए गए संसाधनों (सांबा) से पढ़ने के दौरान नेटवर्क इंटरफेस नीचे रखने की कोशिश की है।

आउट टेस्ट सर्वर Ubuntu 12.04.4 है।

जवाबों:


19

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

sudo iptables -A INPUT -p tcp --dport 445 -j DROP

DROPलक्ष्य एक साथ जवाब न होगा RSTपैकेट या ICMPपैकेट के प्रेषक को त्रुटि। क्लाइंट सर्वर से पैकेट प्राप्त करना बंद कर देगा और अंततः समय समाप्त हो जाएगा।

अगर आपने कैसे iptablesकॉन्फ़िगर किया है, इस पर निर्भर करते हुए , आप नियम को नियम में अधिक सम्मिलित करना चाह सकते हैं INPUT


इसे netcat (डेटा सुनने / भेजने के लिए) का उपयोग करके कोशिश की और हमेशा के लिए प्रतीक्षा की ... कोई टाइमआउट नहीं: / और मैं पुष्टि कर सकता हूं कि डेटा गिरा दिया गया था। मैं भी /proc/sys/net/ipv4/tcp_keepalive_timeएक बहुत छोटी संख्या में बदल गया
er453r

@ er453r ncat -vदेखने के साथ क्रिया आउटपुट को सक्षम करने का प्रयास करें कि वास्तव ncatमें क्या कर रहा है। यह मुझे 2m7.291s एक वेनिला उबंटू 12.04 पर स्थापित किया गया था, जो टाइमआउट के लिए स्थापित किया गया था
क्रीक

सही - मैं उस पहले परीक्षण के दौरान सॉकेट के माध्यम से कुछ भी नहीं भेज रहा था। मैंने अंत में टाइमआउट में महारत हासिल की है और उन्हें नीचे विस्तार से वर्णित किया है :)
er453r

16

पहला उत्तर सही है, लेकिन मुझे पता चला है कि ये टाइमआउट कैसे काम करते हैं, इसलिए आप उन्हें देख सकते हैं और उनका परीक्षण कर सकते हैं (पोर्ट को ब्लॉक करना न भूलें!)।

टीसीपी टाइमआउट के साथ सौदा करने वाले 4 सबसे दिलचस्प कर्नेल पैरामीटर हैं:

/proc/sys/net/ipv4/tcp_keepalive_time
/proc/sys/net/ipv4/tcp_keepalive_intvl
/proc/sys/net/ipv4/tcp_keepalive_probes
/proc/sys/net/ipv4/tcp_retries2

अब 2 परिदृश्य हैं:

  1. सॉकेट खोला जाता है और संचारित करने की कोशिश की जाती है - फिर (यदि दूसरी तरफ से कोई प्रतिक्रिया नहीं है), सिस्टम tcp_retries2बार-बार पुनर्प्राप्त करता है। रिटायर के डिफ़ॉल्ट मूल्य के साथ यह 2 मिनट से अधिक समय लगता है और सॉकेट बार बाहर।

  2. सॉकेट खोला और निष्क्रिय है - फिर रखने की सीमाएं दिलचस्प हैं। एक निष्क्रिय सॉकेट सिस्टम के साथ tcp_keepalive_timeसेकंड प्रतीक्षा करेंगे , और उसके बाद सेकंड के tcp_keepalive_probesअंतराल में एक टीसीपी KEEPALIVE भेजने का प्रयास करें tcp_keepalive_intvl। और उसके बाद ही सभी सॉकेट बार विफल हो जाते हैं।


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