मैन्युअल रूप से कमांडलाइन से पोर्ट बंद करना


112

मैं एक खुले पोर्ट को बंद करना चाहता हूं जो मेरे क्लाइंट और सर्वर एप्लिकेशन के बीच श्रवण मोड में है।

क्या पोर्ट को बंद करने के लिए लिनक्स में कोई मैनुअल कमांड लाइन विकल्प है?

नोट: मुझे पता चला है कि "केवल आवेदन जो जुड़ा सॉकेट का मालिक है, उसे बंद करना चाहिए, जो तब होगा जब आवेदन समाप्त हो जाएगा।"

मुझे समझ में नहीं आता कि यह केवल उस एप्लिकेशन द्वारा क्यों संभव है जो इसे खोलता है ... लेकिन मैं अभी भी यह जानने के लिए उत्सुक हूं कि क्या ऐसा करने का कोई अन्य तरीका है।


5
नहीं, खोले गए पोर्ट उस प्रक्रिया से संबंधित हैं जिसने उन्हें खोला है, बाहर से कोई नियंत्रण संभव नहीं है। जो एक अच्छी बात है, या सभी अनुप्रयोगों को अपने खुले बंदरगाहों (और फ़ाइलों) के साथ गड़बड़ होने की आशंका होगी। हालाँकि, आप फ़ायरवॉल (iptables) द्वारा किसी पोर्ट पर ट्रैफ़िक को रोक सकते हैं, लेकिन यह अन्य उपयोग के लिए पोर्ट को बंद नहीं करेगा और छोड़ देगा।
जुरगेन स्ट्रोबेल

10
बहुत सारे उत्तरदाताओं ने इस प्रश्न के बिंदु को याद किया। यह घोषित करना बकवास है कि केवल उस अनुप्रयोग का जो पोर्ट का मालिक है, उसे डिस्कनेक्ट कर सकता है। मैं इसे बॉक्स तक चलने और ईथरनेट केबल को सॉकेट से बाहर खींचकर, या कनेक्शन के दूसरे छोर पर एप्लिकेशन को मारकर डिस्कनेक्ट कर सकता हूं! इसे संभालने के लिए आवेदन लिखा जाना चाहिए। तो --- आप यह सुनिश्चित करने के लिए परीक्षण कैसे करते हैं कि भौतिक हस्तक्षेप और / या अन्य कंप्यूटर के नियंत्रण की आवश्यकता के बिना आवेदन ठीक से लिखा गया है?
डेल विल्सन

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

@ JürgenStrobel वास्तव में बाहर से नियंत्रण संभव है - tcpkill और ss दोनों ही वही कर सकते हैं जो इसके लिए कहा जाता है। क्योंकि खोले गए पोर्ट वास्तव में एक प्रक्रिया से संबंधित नहीं हैं; वे कर्नेल संसाधन हैं, कुछ अधिकारों के साथ एक प्रक्रिया को सौंपा गया है, लेकिन अभी भी कर्नेल के आनंद पर विद्यमान है।
टॉम एंडरसन

@ टॉम एंडरसन डेल्व: टीसीपीकिल एक फायरवॉल उपकरण है, और मैंने इस विकल्प का उल्लेख किया है। आप एक पोर्ट पर ट्रैफ़िक रोक सकते हैं, जो पोर्ट (सॉकेट) को बंद करने से अलग है।
जर्गेन स्ट्रोबेल

जवाबों:


134

मुझे एक ही समस्या थी, प्रक्रिया को जीवित रखना चाहिए लेकिन सॉकेट बंद होना चाहिए। चल रही प्रक्रिया में एक सॉकेट बंद करना असंभव नहीं है लेकिन मुश्किल है:

  1. प्रक्रिया का पता लगाएं:

    netstat -np
    

    आपको एक source/destination ip:port portstate pid/processnameनक्शा मिलता है

  2. प्रक्रिया में सॉकेट की फ़ाइल डिस्क्रिप्टर का पता लगाएं

    lsof -np $pid
    

    आपको एक सूची मिलती है: प्रक्रिया का नाम, pid, उपयोगकर्ता, fileDescriptor, ... एक कनेक्शन स्ट्रिंग।

    कनेक्शन के लिए मिलान fileDescriptor नंबर का पता लगाएँ। यह कुछ "97u" जैसा होगा जिसका अर्थ है "97"।

  3. अब प्रक्रिया को कनेक्ट करें:

    gdb -p $pid
    
  4. अब सॉकेट बंद करें:

    call close($fileDescriptor) //does not need ; at end.
    

    उदाहरण:

    call close(97)
    

    फिर अलग करें:

    quit
    

    और सॉकेट बंद है।


1
sudo lsof -np $pidमुझे लगभग 200 लाइनें देता है और मैं वांछित FD खोजने के तरीके के बारे में उलझन में हूं। मेरे मामले में प्रक्रिया एक क्रोम टैब है और मैं खोले गए वेबसोकेट्स को बंद करने की कोशिश कर रहा हूं ...
सेट करें

2
एक पंक्ति में आम तौर पर लगता है कि: आईपीवी 4 97u फ़ायरफ़ॉक्स 14812 szupervigyor 32,814,564 0t0 टीसीपी 192.168.2.4:40385->173.194.39.65:https (स्थापित) के रूप में: process_name पीआईडी उपयोगकर्ता fd [opened_for] प्रोटोकॉल डिवाइस inode protocol_data_toString
Danko Dávid

2
* एक पंक्ति आम तौर पर इस तरह दिखाई देती है: फ़ायरफ़ॉक्स 14812 szupervigyor 97u IPv4 32814564 0t0 TCP 192.168.2.4:40385->173.194.39.65:https (ESTABLISHED) इस प्रकार है: process_name pid उपयोगकर्ता fd [open_for] प्रोटोकॉल डिवाइस इनोड प्रोटोकॉल के लिए। पता और अंतिम कॉल पर पाते हैं। मेरे उदाहरण में 97 FileDescriptor है। यदि आपने लक्ष्य होस्ट के लिए कई कनेक्शन खोले हैं तो खोज करना मुश्किल है।
डंकू दाविद

7
यह एक शानदार समाधान है
मार्कोरोसी

8
आप सॉकेट अनुकरण करने के लिए चाहते हैं, तो दूरदराज के अंत तक बंद किया जा रहा है (जैसे साथियों के बाहर निकलने) यह उपयोग करना बेहतर है shutdown: call shutdown($fileDescriptor, 0)
परमानंद

75

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

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

अब, आप क्या करना चाहते हैं (केवल कमांड-लाइन से पोर्ट बंद करें), दो कारणों से संभव नहीं है। सबसे पहले, यदि यह संभव था, तो इसका मतलब होगा कि एक प्रक्रिया किसी अन्य प्रक्रिया के संसाधन (बंदरगाह) को चुरा सकती है। यह खराब नीति होगी, जब तक कि विशेषाधिकार प्राप्त प्रक्रियाओं तक सीमित न हो। दूसरा कारण यह स्पष्ट नहीं है कि पोर्ट के स्वामित्व वाली प्रक्रिया का क्या होगा यदि हम इसे चालू रखने दें। प्रक्रिया का कोड यह मानते हुए लिखा गया है कि यह इस संसाधन का मालिक है। यदि हम इसे दूर ले जाते हैं, तो यह स्वयं ही दुर्घटनाग्रस्त हो जाएगा, इसलिए OS आपको ऐसा नहीं करने देगा, भले ही आप एक शानदार प्रक्रिया हो। इसके बजाय, आपको बस उन्हें मारना चाहिए।

वैसे भी, यहाँ उस प्रक्रिया को कैसे मारना है जो एक विशेष बंदरगाह का मालिक है:

sudo netstat -ap | grep :<port_number>

उदाहरण के लिए, पोर्ट होल्डिंग प्रक्रिया के अनुरूप लाइन आउटपुट करेगी:

tcp  0  0 *:8000   *:* LISTEN  4683/procHoldingPort

इस मामले में, procHoldingPort उस प्रक्रिया का नाम है जिसने पोर्ट को खोला, 4683 इसका pid है, और 8000 (ध्यान दें कि यह TCP है) यह पोर्ट नंबर है।

फिर, अंतिम कॉलम में देखें, आप देखेंगे /। फिर इस पर अमल करें:

kill  <pid>

यदि वह काम नहीं करता है (आप netstat कमांड को फिर से चलाकर देख सकते हैं)। यह करो:

kill -9 <pid>

सामान्य तौर पर, यदि आप कर सकते हैं तो SIGKILL भेजने से बचना बेहतर है। यही कारण है कि मैं आपको killपहले प्रयास करने के लिए कहता हूं kill -9। सिर्फ killजेंटलर SIGTERM भेजता है।

जैसा कि मैंने कहा, पोर्ट को फिर से खोलने में कुछ मिनट लगेंगे यदि आप ऐसा करते हैं। मैं इसे गति देने का कोई तरीका नहीं जानता। अगर कोई और करता है, तो मुझे यह सुनना अच्छा लगेगा।


@smehmood - विस्तृत विवरण के लिए धन्यवाद .. एक छोटा सा संदेह .. कर्नेल एक अचानक मारे गए प्रक्रिया द्वारा एक खुले बंदरगाह को कैसे पुनः प्राप्त करता है ?? .. जो समाधान यू प्रदान करता है वह बंदरगाह को पकड़े हुए प्रक्रिया को मार रहा है ...

3
@ कोडिंगफ्रक कर्नेल को पता है कि प्रक्रिया समाप्त हो गई है। यह जानता है कि यह बंदरगाह को पुनः प्राप्त कर सकता है। पोर्ट को बंद करने के समय पर वास्तव में नियम हैं, यह सुनिश्चित करने के लिए कि कोई भी आवारा पैकेट 'नेट पर तैरता न हो। यह कैसे पता चलता है कि इसमें ये संसाधन हैं? कि कर्नेल क्या करता है, चीजों पर नज़र रखता है।
रिच होमोलका

जब तक कोई व्यक्ति कुछ समझदार पोस्ट करता है जैसे unix.tools.port.close(<my port number>)मैं उपयोग करता हूं init 6
स्नोक्रैश

यह एक अलग प्रश्न का उत्कृष्ट उत्तर है। यह प्रश्न डिबगर को संलग्न करने और एक रनिंग प्रोग्राम को बदलने के बारे में है, जिससे उस प्रोग्राम को फ़ाइल डिस्क्रिप्टर पर फ़ंक्शन को कॉल करने का कारण बनता है।
आर्थर उल्फल्ड्ट

19

फ्यूज़र का भी इस्तेमाल किया जा सकता है

fuser -k -n *protocol portno*

यहां प्रोटोकॉल tcp / udp है और पोर्टनो वह नंबर है जिसे आप बंद करना चाहते हैं। उदाहरण के लिए

fuser -k -n tcp 37

फ्यूज़र मैन पेज पर अधिक जानकारी


बस मारने की प्रक्रिया मेरे लिए काम नहीं करती थी, लेकिन फ्यूज़र ने किया। धन्यवाद!
वेबवार्ता

मुझे इसके साथ मिश्रित परिणाम मिले, फ्यूज़र का उपयोग करने के बाद भी, मुझे "सॉकेट पहले से ही उपयोग में" मिल गया, जब मारे गए ऐप से पोर्ट को पुन: उपयोग करने की कोशिश कर रहा था, यहां तक ​​कि रूट भी कर रहा था। दूसरी ओर, सॉकेट को खाली करने का समय पहले कम लग रहा था, इसलिए वैसे भी धन्यवाद।
Jan Vlcinsky

@JanVlcinsky शायद एक "अभिभावक" प्रक्रिया है जिसे fuserचलाने के बाद मारे गए प्रक्रिया क्षणों को फिर से शुरू किया जाता है?
RedBaron

@RedBaron: टिप्पणी के अनुसार superuser.com/a/415236/153413 मेरी समस्या खराब लिखित अनुप्रयोग में उत्पन्न होती है, जो समाप्ति के तहत सॉकेट को साफ / बंद नहीं करती है। इसलिए fuserपोर्ट का उपयोग करने की प्रक्रिया को ढूंढता है और उसे मारता है, लेकिन इस तथ्य को हल नहीं करता है, कि सॉकेट बंद नहीं है। 60 सेकंड और कर्नेल मेरे लिए करता है।
जनवरी Vlcinsky

6

आप वैकल्पिक रूप से iptables का उपयोग कर सकते हैं:

iptables -I INPUT -p tcp --dport 80 -j DROP

यह मूल रूप से वह पूरा करता है जो आप चाहते हैं। यह सभी TCP ट्रैफ़िक को पोर्ट 80 पर छोड़ देगा।


4
नहीं, यह सॉकेट को तब तक खोले रखेगा जब तक कि सभी टाइमआउट उन्हें बंद न कर दें। (यह सभी ट्रैफ़िक को स्वामी की प्रक्रिया से छिपा देगा जिसके पास यह जानने का कोई साधन नहीं है कि इसे बंद करना चाहिए।) आप -j REJECTटीसीपी रीसेट ध्वज को वापस करने के लिए उपयोग कर सकते हैं , जो तब मेरी स्वयं की प्रक्रिया को देखा जाएगा (लेकिन केवल जब दूसरा पक्ष कोशिश करता है। कुछ भेजना)।
मार्की 555

3
netstat -anp | grep 80

यह आपको बताना चाहिए, यदि आप अपाचे चला रहे हैं, "httpd"

pkill -9 httpd 

या

killall -9 httpd

4
-9 का उपयोग करने से पहले एक सामान्य मार का प्रयास करें
थिलो

@omfgroflmao - लेकिन यह उस प्रक्रिया को मार देगा जिसने बंदरगाह खोला है ??

@codingfreak पोर्ट को पकड़े रहने की प्रक्रिया, हाँ यह इसे मार देगा।

2

आप शायद यह जान सकते हैं कि किस प्रक्रिया ने सॉकेट खोला है जो पोर्ट से जुड़ा हुआ है, और उस प्रक्रिया को मार दें।

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

मुझे लगता है कि बेहतर सवाल होगा: क्या पोर्ट (किस प्रक्रिया से संबंधित) आप रोकना चाहते हैं?

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

आमतौर पर इसका एक नियंत्रण कार्यक्रम होगा (HTTPD stop | start or something)। या, अगर यह एक प्रणाली की बात है, तो आपको शायद इसके साथ खिलवाड़ नहीं करना चाहिए। वैसे भी, मैंने सोचा कि चूंकि हर कोई आपको "कैसे-कैसे" कोण दे रहा है, इसलिए मुझे आपको चेतावनी देनी चाहिए।


बहुत अच्छी टिप्पणी। मेरे पास एक कार्यक्रम है, जो समाप्ति के तहत सॉकेट को बंद करता है जो वर्णित व्यवहार में परिणाम देता है - सॉकेट लगभग 60 सेकंड के लिए अनुपयोगी है। जब मैं उस प्रक्रिया को रोकना और शुरू करना चाहता हूं, तो यह लगभग एक मिनट के लिए शिकायत कर रहा है, कि पता और बंदरगाह पहले से ही उपयोग में है। सबसे अच्छा उपाय यह है कि सही तरीके से बंद करने के लिए बुरी तरह से व्यवहार करने की प्रक्रिया को सही किया जाए, लेकिन कभी-कभी यह एक विकल्प नहीं होता है। वहाँ 60 सेकंड की तुलना में जल्द ही अवरुद्ध सॉकेट जाँच करने के लिए पूछने का एक तरीका है?
जनवरी Vlcinsky

2

मैंने पहली बार मोंगो और नोड प्रक्रियाओं की तलाश की, फिर निम्नलिखित किया:

ps -A | grep node

10418 pts/23   00:00:05 node

10551 pts/23   00:00:00 node

ps -A | grep mongo

10490 pts/23   00:00:00 mongod

एक बार पहचान लेने के बाद, बस मार कमांड के साथ प्रक्रियाओं को मारें।

kill -9 10418
kill -9 10490

अंत में, टाइप करें meteorऔर इसे फिर से काम करना चाहिए।


1

आप एक स्क्रिप्ट लिख सकते हैं जिसने iptables को संशोधित किया है और उन्हें पुनरारंभ करता है। पोर्ट पर सभी पैकेट छोड़ने के नियम को जोड़ने के लिए एक स्क्रिप्ट, उक्त नियम को हटाने के लिए एक और स्क्रिप्ट।

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


@ मिमिकल शिमिंस ... हम्म इंट्रस्टिंग लगता है क्योंकि हम पोर्ट को सर्वर साइड में ब्लॉक कर सकते हैं ताकि क्लाइंट कोई भी मैसेज न भेजें।

खैर ग्राहक संदेश भेज सकते हैं सभी वे चाहते हैं हम सिर्फ दरवाजा बंद कर दिया गया है ताकि वे में नहीं मिल सकता है।

1

एक और मुद्दा: कुछ समय में कर्नेल खुद बंदरगाहों का मालिक है। मैं जानता हूँ कि NAT मार्ग NAT उपयोग के लिए कुछ बंदरगाहों को खुला रखता है। आप इसके लिए एक प्रक्रिया को नहीं मार सकते हैं, यह एक कर्नेल है, और एक पुन: संयोजन और एक रिबूट की आवश्यकता है।


1

यदि आप चाहते हैं कि आपका पोर्ट जल्द से जल्द जारी हो, तो आपको निम्नलिखित मूल्य निर्धारित करने होंगे:

echo 1 > /proc/sys/net/ipv4/tcp_fin_timeout

इसे 60 सेकंड (डिफ़ॉल्ट) से 1 सेकंड तक सेट करने के लिए


1

आप किसी भी प्रक्रिया को मारे बिना किसी कनेक्शन को बंद करते हुए, किलकोक्स नाम की कमांड का उपयोग कर सकते हैं।

  • वाक्य - विन्यास:
killcx [dest_ip:dest_port] {interface}

  dest_ip              : remote IP
  dest_port            : remote port
  interface (optional) : network interface (eth0, lo etc).
  • उदाहरण:
killcx 120.121.122.123:1234
killcx 120.121.122.123:1234 eth0

//, क्या अधिकांश लिनक्स मशीनों में किलसक्स है? मैंने जिन लोगों की कोशिश की है उनमें से कोई भी इस हत्याकांड कमांड को उनके मौजूदा रिपॉजिटरी कॉन्फिगरेशन के साथ अनुपलब्ध पैकेजों को स्थापित किए बिना उपलब्ध नहीं है।
नाथन बसानी

नहीं, आप यहाँ टूल पा सकते हैं: Killcx.sourceforge.net
shuaiming

//, मुझे पता है कि मैं टूल पा सकता हूं, यह हजारों सर्वर पर इंस्टाल करने के लिए सिर्फ एक दर्द है।
नाथन बसानी

कठपुतली @NathanBasanese का उपयोग करें :)
SHOUBHIK BOSE

1

मुझे पता है कि यह उत्तर प्रश्न का उत्तर स्वयं नहीं देता है, सख्ती से बोल रहा है, लेकिन इसे पढ़ने से यह प्रासंगिक जानकारी हो सकती है:

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

हालाँकि, इस जानकारी का उपयोग केवल विकास सहायता के रूप में किया जाना चाहिए, क्योंकि TIME_WAIT के पहले स्थान पर मौजूद होने का एक कारण है, पहले से ही अन्य उत्तरों में बताया गया है।


// , सही। बेशक, बंदरगाहों को मुक्त करने के लिए हत्या की प्रक्रिया सबसे अच्छा तरीका नहीं है। मैंने देखा है कि जब मैं वैग्रैंट प्रक्रिया को मारता हूं अगर यह लटका रहता है, तो मैं थोड़ी देर के लिए फिर से योनि नहीं बना सकता। मैं शर्त लगाता हूं कि TIME_WAIT चीज का इससे कोई लेना-देना है।
नाथन बसानी

0

यदि आप सॉकेट पर कोई यातायात नहीं चाहते हैं, लेकिन प्रक्रिया को जीवित रखना चाहते हैं: tcpkill

tcpkill -i eth0 host xxx.xxx.xxx.xxx and port yyyy

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


0

आप ss का उपयोग करके एक सुनने वाला सॉकेट बंद कर सकते हैं :

sudo ss --kill state listening src :1234

जहां 1234 आपका पोर्ट नंबर है।

ss iproute2 पैकेज का हिस्सा है, इसलिए एक मजबूत बदलाव है जो पहले से ही आधुनिक लिनक्स पर स्थापित है।

मैंने एक संबंधित प्रश्न के उत्तर से इस बारे में सीखा ।

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