কমান্ডলাইন থেকে ম্যানুয়ালি একটি পোর্ট বন্ধ করা হচ্ছে


112

আমি আমার ক্লায়েন্ট এবং সার্ভার অ্যাপ্লিকেশনের মধ্যে শোনার মোডে থাকা একটি উন্মুক্ত পোর্টটি বন্ধ করতে চাই।

লিনাক্সে কোনও বন্দর বন্ধ করার জন্য কোনও ম্যানুয়াল কমান্ড লাইন বিকল্প নেই?

দ্রষ্টব্য: আমি জানতে পেরেছি "সংযুক্ত সকেটের মালিকানাধীন কেবলমাত্র অ্যাপ্লিকেশনটির এটি বন্ধ করা উচিত, যা অ্যাপ্লিকেশনটি সমাপ্ত হওয়ার পরে ঘটবে।"

অ্যাপ্লিকেশন যা এটি খোলায় কেবল এটি কেন সম্ভব তা আমি বুঝতে পারি না ... তবে আমি এখনও এটি জানতে আগ্রহী যে এটি করার অন্য কোনও উপায় আছে কিনা।


5
না, খোলা পোর্ট অন্তর্গত প্রক্রিয়া যা তাদের খোলা কোন নিয়ন্ত্রণ বাইরে থেকে সম্ভব হয় হয়। যা একটি ভাল জিনিস, বা সমস্ত অ্যাপ্লিকেশনগুলিকে তাদের উন্মুক্ত পোর্টগুলি (এবং ফাইলগুলি) মেসে যাওয়ার প্রত্যাশা করতে হবে। তবে আপনি ফায়ারওয়ালিং (iptables) দ্বারা কোনও বন্দরে ট্র্যাফিক ব্লক করতে পারেন, তবে এটি বন্ধ হবে না এবং অন্যান্য ব্যবহারের জন্য পোর্টটি ছেড়ে দেবে না।
জর্জেন স্ট্রোবেল

10
প্রচুর প্রতিক্রিয়াশীল এই প্রশ্নের পয়েন্টটি মিস করেছেন। এটি ঘোষণা করা বাজে কথা যে কেবলমাত্র বন্দরটির মালিকানাধীন অ্যাপ্লিকেশনই এটি সংযোগ বিচ্ছিন্ন করতে পারে। আমি বাক্সে হেঁটে এবং সকেট থেকে ইথারনেট তারটি টেনে বা সংযোগের অন্য প্রান্তে অ্যাপ্লিকেশনটি মেরে এটি সংযোগ বিচ্ছিন্ন করতে পারি! এটি পরিচালনা করার জন্য অবশ্যই আবেদনটি লিখতে হবে। সুতরাং --- শারীরিক হস্তক্ষেপ এবং / বা অন্য কম্পিউটারের নিয়ন্ত্রণের প্রয়োজন ছাড়াই অ্যাপ্লিকেশনটি সঠিকভাবে লেখা হয়েছে তা নিশ্চিত করার জন্য আপনি কীভাবে পরীক্ষা করেন?
ডেল উইলসন

"... বাইরে থেকে কোনও নিয়ন্ত্রণ সম্ভব নয়।" এটি একটি গুরুত্বপূর্ণ মন্তব্য, এটি পরবর্তী প্রশ্নে আমাকে গাইড করে, আমি কীভাবে বাইরে থেকে প্রক্রিয়াটির অংশ হতে পারি? , GDB।
ডানকা ডেভিড

@ জারজেনস্ট্রোবেল বাইরের থেকে প্রকৃতপক্ষে নিয়ন্ত্রণ সম্ভব - tcpkill এবং ss উভয়ই ঠিক যা করতে চেয়েছিল তা করতে পারে। কারণ খোলা বন্দরগুলি সত্যই কোনও প্রক্রিয়ার অন্তর্ভুক্ত নয়; এগুলি কার্নেলের সংস্থান, একটি প্রক্রিয়াতে কিছু অধিকার নির্ধারিত রয়েছে, তবে এখনও কেবল কার্নেলের সন্তুষ্টিতে বিদ্যমান।
টম অ্যান্ডারসন

@ টম-অ্যান্ডারসন ডেলডাব্লু: tcpkill একটি ফায়ারওয়ালিং সরঞ্জাম, এবং আমি এই বিকল্পটি উল্লেখ করেছি। আপনি কোনও বন্দরে ট্র্যাফিক রোধ করতে পারেন, যা কোনও বন্দর (সকেট) বন্ধ করার চেয়ে আলাদা।
জর্জেন স্ট্রোবেল

উত্তর:


134

আমার একই সমস্যা ছিল, প্রক্রিয়াটি অবশ্যই বেঁচে থাকবে তবে সকেটটি অবশ্যই বন্ধ করা উচিত। চলমান প্রক্রিয়াতে সকেট বন্ধ করা অসম্ভব নয় তবে কঠিন:

  1. প্রক্রিয়াটি সনাক্ত করুন:

    netstat -np
    

    আপনি একটি source/destination ip:port portstate pid/processnameমানচিত্র পেতে

  2. প্রক্রিয়াতে সকেটের ফাইল বর্ণনাকারী সনাক্ত করুন

    lsof -np $pid
    

    আপনি একটি তালিকা পাবেন: প্রক্রিয়া নাম, পিড, ব্যবহারকারী, ফাইলডেস্কিটার, ... একটি সংযোগ স্ট্রিং।

    সংযোগের জন্য মিলে যাওয়া ফাইল ডেস্ক্রিপ্টর নম্বরটি সন্ধান করুন। এটি "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 লাইন দেয় এবং আমি পছন্দসই এফডি কীভাবে সন্ধান করব তা সম্পর্কে আমি বিভ্রান্ত। আমার ক্ষেত্রে প্রক্রিয়াটি একটি ক্রোম ট্যাব এবং আমি খোলা ওয়েবসকেটগুলি বন্ধ করার চেষ্টা করছি ...
সেট করুন

2
একটি সারি সাধারণত দেখে মনে হচ্ছে: IPv4- র 97u ফায়ারফক্স 14812 szupervigyor 32814564 0t0 বিভিন্ন TCP 192.168.2.4:40385->173.194.39.65:https (প্রতিষ্ঠিত) হিসাবে: process_name PID ব্যবহারকারী FD [opened_for] প্রোটোকল ডিভাইস inode protocol_data_toString
Dankó ডেভিড

2
* একটি সারি সাধারণত দেখতে পাওয়া যায়: ফায়ারফক্স 14812 স্জ্পেরভিগিওর 97u আইপিভি 4 32814564 0 টি 0 টিসিপি 192.168.2.4:40385->173.194.39.65:https (ESTABLISHED) হিসাবে: প্রক্রিয়া_নাম পিড ব্যবহারকারী fd [ওপেন_ফোর্ড] প্রোটোকল ডিভাইস ইনড টুড্রোপিং-তে জানা ঠিকানা এবং শেষ কর্নেল খুঁজে। আমার উদাহরণে 97 ফাইল ফাইল বিবরণী or আপনি লক্ষ্য হোস্টের সাথে একাধিক সংযোগ খুললে অনুসন্ধান করা কঠিন difficult
ডানকা ডেভিড

7
এটি একটি উজ্জ্বল সমাধান
মারকোরোসি

8
আপনি সকেট সিমুলেট করতে চান, দূরবর্তী শেষ নাগাদ বন্ধ হচ্ছে (যেমন পিয়ার থেকে প্রস্থান) এটি ব্যবহার করতে ভালো shutdown: call shutdown($fileDescriptor, 0)
ইকাত্মুর

75

আপনি এখানে ভুল প্রশ্ন জিজ্ঞাসা করছি। অ্যাপ্লিকেশনটি বাইরে থেকে কেবল "একটি বন্দর বন্ধ" করা সম্ভব নয় যা সকেটটি শুনছে। এটি করার একমাত্র উপায় হ'ল বন্দরের মালিকানাধীন প্রক্রিয়াটিকে পুরোপুরি হত্যা করা। তারপরে, প্রায় এক বা দুই মিনিটের মধ্যে, বন্দরটি আবার ব্যবহারের জন্য উপলব্ধ হবে। এখানে যা চলছে তা এখানে (যদি আপনি যত্ন না করেন তবে একটি নির্দিষ্ট বন্দরের মালিকানাধীন প্রক্রিয়াটি কীভাবে হত্যা করতে হয় তা আমি আপনাকে দেখি যেখানে শেষ পর্যন্ত যান):

পোর্টগুলি হ'ল ওএস দ্বারা বিভিন্ন প্রক্রিয়াতে বরাদ্দকৃত সংস্থান। এটি ওএসকে ফাইল পয়েন্টার জিজ্ঞাসা করার অনুরূপ। তবে ফাইল পয়েন্টারগুলির বিপরীতে, এক সময়ে কেবলমাত্র একটি প্রক্রিয়া কোনও পোর্টের মালিক হতে পারে। বিএসডি সকেট ইন্টারফেসের মাধ্যমে, প্রক্রিয়াগুলি কোনও বন্দরে শোনার জন্য একটি অনুরোধ করতে পারে, যা ওএস তারপরে মঞ্জুরি দেয়। ওএস অন্য কোনও প্রক্রিয়া একই বন্দর না পায় তাও নিশ্চিত করবে। যে কোনও সময়ে, প্রক্রিয়াটি সকেটটি বন্ধ করে পোর্টটি প্রকাশ করতে পারে। এর পরে ওএস বন্দরটি পুনরায় দাবি জানাবে। বিকল্পভাবে, যদি প্রক্রিয়াটি বন্দরটি প্রকাশ না করেই শেষ হয়, অবশেষে ওএস পোর্টটিকে পুনরায় দাবি জানাবে (যদিও এটি তাত্ক্ষণিকভাবে ঘটবে না: এটি কয়েক মিনিট সময় নেবে)।

এখন, আপনি যা করতে চান (কেবল কমান্ড-লাইন থেকে পোর্টটি বন্ধ করুন), দুটি কারণে সম্ভব নয়। প্রথমত, যদি এটি সম্ভব হয় তবে এর অর্থ হ'ল একটি প্রক্রিয়া কেবল অন্য প্রক্রিয়ার সংস্থান (পোর্ট) চুরি করতে পারে। সুবিধাজনক প্রক্রিয়াগুলিতে সীমাবদ্ধ না থাকলে এটি খারাপ নীতি হবে। দ্বিতীয় কারণটি হ'ল এটি স্পষ্ট নয় যে যদি বন্দরের মালিকানাধীন প্রক্রিয়াটির কী হবে তবে আমরা যদি এটি চালিয়ে যেতে পারি। প্রক্রিয়াটির কোডটি এই সংস্থানটির মালিকানাধীন বলে ধরে নেওয়া হয়। আমরা যদি এটিকে সহজভাবে সরিয়ে নিয়ে যাই তবে এটি নিজেরাই ক্রাশ হয়ে যাবে, সুতরাং কোনও সুবিধাযুক্ত প্রক্রিয়া হলেও ওএস আপনাকে এটি করতে দেয় না। পরিবর্তে, আপনি কেবল তাদের হত্যা করতে হবে।

যাইহোক, একটি নির্দিষ্ট পোর্টের মালিকানাধীন একটি প্রক্রিয়াটি কীভাবে হত্যা করবেন তা এখানে রয়েছে:

sudo netstat -ap | grep :<port_number>

এটি প্রক্রিয়া হোল্ডিং পোর্টের সাথে সম্পর্কিত লাইন আউটপুট দেবে, উদাহরণস্বরূপ:

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

এই ক্ষেত্রে, প্রোহোল্ডিংপোর্টটি বন্দরটি খোলার প্রক্রিয়ার নাম, 4683 এটির পিড এবং 8000 (নোট করুন এটি টিসিপি) হ'ল পোর্ট নম্বর এটি ধারণ করে।

তারপরে, সর্বশেষ কলামে দেখুন, আপনি / দেখতে পাবেন। তারপরে এটি কার্যকর করুন:

kill  <pid>

যদি এটি কাজ না করে (আপনি নেটট্যাট কমান্ডটি পুনরায় চালিয়ে চেক করতে পারেন)। এটা কর:

kill -9 <pid>

সাধারণভাবে, আপনি যদি পারেন তবে সিগ্কিল পাঠানো এড়ানো ভাল। এই কারণেই আমি আপনাকে killআগে চেষ্টা করতে বলি kill -9। শুধু ব্যবহার করে killমৃদু স্বাক্ষর প্রেরণ করে।

যেমনটি আমি বলেছিলাম, আপনি যদি এটি করেন তবে পোর্টটি পুনরায় খোলা হতে কয়েক মিনিট সময় লাগবে। আমি এটির গতি বাড়ানোর কোনও উপায় জানি না। অন্য কেউ যদি করেন তবে আমি এটি শুনতে পছন্দ করব।


@ সিমহমুদ - বিস্তারিত ব্যাখ্যার জন্য ধন্যবাদ .. একটি ছোট সন্দেহ .. হঠাৎ নিহত প্রক্রিয়া দ্বারা কার্নেল কীভাবে একটি মুক্ত বন্দরে পুনরায় দাবি করতে পারে ?? .. আপনার প্রদত্ত সমাধানটি বন্দরটি ধরে রাখার প্রক্রিয়াটিকে হত্যা করছে বলে মনে হচ্ছে ...

3
@codingfreak কার্নেল জানে যে প্রক্রিয়াটি শেষ হয়েছে। এটি জানে যে এটি বন্দরটি পুনরায় দাবি করতে পারে। বন্দরটি বন্ধ করার সময় নিয়ম রয়েছে, 'নেট' এ ভাসমান কোনও প্যাকেট নেই। কীভাবে এটি জানবে যে এই সংস্থানগুলি রয়েছে? এটি কার্নেল যা করে তা জিনিস রাখে।
ধনী হোমোলকা

যতক্ষণ না কেউ বোধগম্য কিছু পোস্ট করে যেমন unix.tools.port.close(<my port number>)আমি ব্যবহার করি init 6
স্নো ক্র্যাশ

এটি একটি পৃথক প্রশ্নের দুর্দান্ত উত্তর। এই প্রোগ্রামটি কোনও ডিবাগারের সংযুক্তি এবং কোনও প্রোগ্রামের ফাইল বর্ণনাকারীতে কোনও ফাংশন কল করার জন্য একটি চলমান প্রোগ্রাম পরিবর্তন করার বিষয়ে।
আর্থার আলফল্ট

19

ফুজারও ব্যবহার করা যায়

fuser -k -n *protocol portno*

এখানে প্রোটোকল টিসিপি / ইউডিপি এবং পোর্টনো হ'ল আপনি যে নম্বরটি বন্ধ করতে চান। যেমন

fuser -k -n tcp 37

ফুজার ম্যান পৃষ্ঠাতে আরও তথ্য


কেবল নিজের মালিকানাধীন প্রক্রিয়াটি মেরে ফেলা আমার পক্ষে কাজ করে নি, তবে ফুসার তা করেছে। ধন্যবাদ!
ওয়েবওয়ার্সটি

আমি এর সাথে মিশ্রিত ফলাফল পেয়েছি, এমনকি ফুজার ব্যবহারের পরেও, হত্যাকারী অ্যাপ্লিকেশন থেকে বন্দরটিকে পুনরায় ব্যবহার করার চেষ্টা করার সময়ও আমি "সকেট ইতিমধ্যে ব্যবহারে" পেয়েছি, এমনকি এটি রুট হিসাবেও করছে। অন্যদিকে, সকেটটি মুক্ত করার সময়টি তার আগে কম মনে হয়েছিল, তাই যাইহোক ধন্যবাদ।
জান ভি্লকিনস্কি

@ জাভ্লকিনস্কি সম্ভবত কোনও "অভিভাবক" প্রক্রিয়া আছে যা fuserচালানোর পরে নিহত প্রক্রিয়াগুলি পুনরায় চালু করে?
রেডবারন

@ রেডবারন: মন্তব্য অনুসারে superuser.com/a/415236/153413 আমার সমস্যাটি খারাপভাবে লিখিত অ্যাপ্লিকেশন থেকে উদ্ভূত, যা সকেটকে সাফ করার / বন্ধ করার মতো নয়। সুতরাং fuserবন্দরটি ব্যবহার করে প্রক্রিয়াটি খুঁজে বের করে এবং এটি মেরে ফেলে, তবে সকেটটি বন্ধ না হওয়া সত্যটি সমাধান করে না। 60 সেকেন্ড এবং কার্নেলটি এটি আমার জন্য করে।
জান ভ্লিংকস্কি

6

আপনি বিকল্পভাবে iptables ব্যবহার করতে পারেন:

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

এটি মূলত আপনি যা চান তা পূরণ করে। এটি সমস্ত টিসিপি ট্র্যাফিক 80 এ বন্দরে নেমে আসবে।


4
না, সমস্ত সময়সীমাগুলি বন্ধ না হওয়া পর্যন্ত এটি সকেটটি খোলা রাখবে। (এটি মালিকানাধীন প্রক্রিয়া থেকে সমস্ত ট্র্যাফিককে আড়াল করবে যা তার এটি বন্ধ হওয়া উচিত তা জানার কোনও উপায় নেই)) আপনি -j REJECTটিসিপি পুনরায় সেট করা পতাকাটি ব্যবহার করতে পারেন, যা তখন আমার নিজস্ব প্রক্রিয়াটি দেখা যাবে (তবে কেবল যখন অন্য পক্ষ চেষ্টা করবে) কিছু প্রেরণ)।
Marki555

3
netstat -anp | grep 80

এটি আপনাকে বলা উচিত, যদি আপনি অ্যাপাচি চালিয়ে যাচ্ছেন তবে "httpd" (এটি কেবলমাত্র উদাহরণ, আপনার অ্যাপ্লিকেশনটি 80 এর পরিবর্তে ব্যবহার করা পোর্টটি ব্যবহার করুন)

pkill -9 httpd 

অথবা

killall -9 httpd


@omfgroflmao - তবে এটি যে প্রক্রিয়াটি বন্দর খুলেছে তা ধ্বংস করবে ??

@ কোডিংফ্রেইক এই প্রক্রিয়াটি বন্দরটি ধরে রেখেছে, হ্যাঁ এটি এটি হত্যা করবে।

2

আপনি সম্ভবত সন্ধান করতে পারেন যে বন্দরটির সাথে সম্পর্কিত সকেটটি কী প্রক্রিয়াটি খোলে এবং সেই প্রক্রিয়াটি হত্যা করে kill

তবে, আপনাকে বুঝতে হবে যে যদি প্রক্রিয়াটির কোনও হ্যান্ডলার না থাকে যা এটি ব্যবহার করছে এমন সমস্ত স্টাফটিকে ডি-ইনিশিয়েল করে না (খোলা ফাইল, সকেট, কাঁটাচামচ, যে জিনিসটি এটি সমাপ্তির পরে সঠিকভাবে বন্ধ না করা থাকে তবে) আপনি তৈরি করতে পারতেন সিস্টেমের কর্মক্ষমতা টানুন। এছাড়াও, কার্নেলটি বুঝতে না পারছে যে প্রক্রিয়াটি মারা গেছে until এটি সাধারণত প্রায় এক মিনিট সময় নেয়।

আমি মনে করি আরও ভাল প্রশ্নটি হ'ল: কোন বন্দরটি (কোন প্রক্রিয়াভুক্ত) আপনি থামতে চান?

আপনি যদি খুঁজে পেয়েছেন এমন একটি ব্যাকডোর বা ভাইরাসকে বন্ধ করার চেষ্টা করছেন, তবে আপনার ডেটাটি শেষ করার আগে কমপক্ষে আপনার কী ডেটা পিছনে যাচ্ছে এবং তা শিখতে হবে। (ওয়্যারশার্ক এটির জন্য ভাল) (এবং প্রক্রিয়াটির এক্সিকিউটেবল নাম যাতে আপনি এটি মুছতে পারেন এবং এটি পুনরায় বুট থেকে ফিরে আসতে বাধা দিতে পারেন) বা এটি যদি আপনি ইনস্টল করা কিছু (যেমন HTTPD বা FTPD বা অন্য কিছু) থাকে তবে আপনার ইতিমধ্যে অ্যাক্সেস থাকা উচিত প্রক্রিয়া নিজেই।

সাধারণত এটিতে একটি নিয়ন্ত্রণ প্রোগ্রাম থাকবে (HTTPD স্টপ | শুরু বা কিছু) something বা এটি যদি কোনও সিস্টেম জিনিস হয় তবে আপনার সম্ভবত এটির সাথে গোলযোগ করা উচিত নয়। যাইহোক, আমি ভেবেছিলাম যেহেতু প্রত্যেকে আপনাকে "কীভাবে" কোণ দিচ্ছে, তাই আমার আপনাকে ক্যাভ্যাট দেওয়া উচিত।


খুব ভাল মন্তব্য। আমার একটি প্রোগ্রাম রয়েছে, যা সমাপ্তির অধীনে সকেটটি বন্ধ করে দেয় যা বর্ণিত আচরণের ফলস্বরূপ - সকেট প্রায় 60 সেকেন্ডের জন্য অকার্যকর। যখন আমি এই প্রক্রিয়াটি থামি এবং শুরু করি, এটি প্রায় এক মিনিটের জন্য অভিযোগ করছে, ঠিকানা এবং পোর্ট ইতিমধ্যে ব্যবহৃত। সবচেয়ে ভাল সমাধান হ'ল খারাপভাবে আচরণের প্রক্রিয়াটি সঠিকভাবে বন্ধ করার জন্য সংশোধন করা, তবে কিছু সময় এটি কোনও বিকল্প নয়। কার্নেল চেক করার অনুরোধ করার কোনও উপায় কি that০ সেকেন্ডের চেয়ে শীঘ্রই অবরুদ্ধ সকেটকে জিজ্ঞাসা করে?
জান ভ্লকিনস্কি

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 ব্যবহারের জন্য কিছু বন্দর খোলা রাখে। আপনি এটির জন্য কোনও প্রক্রিয়াটিকে হত্যা করতে পারবেন না এটি একটি কার্নেল এবং একটি পুনরায় কনফিগারেশন এবং একটি পুনরায় বুট করা দরকার।


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

//, বেশিরভাগ লিনাক্স মেশিনে কি কিলক্যাক্স রয়েছে? আমি যেগুলি চেষ্টা করেছি তাদের কারও কাছেই এই কিলকএক্স কমান্ডটি তাদের বর্তমান সংগ্রহস্থল কনফিগারেশনের সাথে প্যাকেজগুলি ইনস্টল না করে উপলভ্য নয় available
নাথান বাসানিজ

না, আপনি টুল এখানে পেতে পারেন: killcx.sourceforge.net
shuaiming

//, আমি জানি যে আমি সরঞ্জামটি খুঁজে পেতে পারি, এটি হাজার হাজার সার্ভারে ইনস্টল করার জন্য কেবল একটি ব্যথা।
নাথান বাসানিজ

পুতুল @ নাথানবাসানিজ :) ব্যবহার করুন
শুভ বোস

1

আমি সচেতন যে এই উত্তরটি নিজেই প্রশ্নের উত্তর দেয় না, কঠোরভাবে বলে, তবে এটি পড়তে এটি প্রাসঙ্গিক তথ্য হতে পারে:

কোনও পোর্টে (এবং ঠিকানা) সকেটকে বাঁধাই করার ডিফল্ট আচরণটি হ'ল প্রক্রিয়াটির আকস্মিক সমাপ্তির মাধ্যমে সকেটটি বন্ধ হয়ে গেলে, সকেটটি কিছু সময়ের জন্য TIME_WAIT এ থাকবে। এর অর্থ হ'ল আপনি অবিলম্বে এই ঠিকানা / বন্দরে পুনরায় যুক্ত করতে পারবেন না। আপনি যদি স্ট্যান্ডার্ড বিএসডি সকেট ইন্টারফেসের মাধ্যমে সিস্টেমটি নিজেই বিকাশ করে থাকেন তবে আপনি (কমপক্ষে কিছুটা হলেও) SO_REUSEADDR সকেট বিকল্পের সাহায্যে এই আচরণটি নিয়ন্ত্রণ করতে পারেন। সকেট যদি TIME_WAIT স্থিতিতে থাকে তবে এটি আপনাকে মূলত একই ঠিকানা / বন্দরে আবার বাঁধতে দেয়। এখনও বন্দরে প্রতি একটি সকেট!

তবে, এই তথ্যগুলি কেবলমাত্র উন্নত সহায়তা হিসাবে ব্যবহার করা উচিত, যেহেতু অন্যান্য উত্তরগুলিতে ইতিমধ্যে ব্যাখ্যা করা হয়েছে, টিআইএমE_WAIT প্রথম স্থানে থাকার কারণ রয়েছে exist


//, ঠিক আছে। অবশ্যই, বন্দরগুলি মুক্ত করার সর্বোত্তম উপায়টি হত্যার প্রক্রিয়া নয়। আমি লক্ষ করেছি যে আমি যখন ভ্যাগ্র্যান্ট প্রক্রিয়াটি হ্যাং করে ফেলে তখন আমি তাকে মেরে ফেলি, আমি কিছুক্ষণের জন্য আবারও ভ্যাংগার হতে পারি না। আমি বাজাই এই TIME_WAIT জিনিসটির সাথে কিছুটা আছে।
নাথান বাসানিজ

0

আপনি যদি সকেটের উপরে কোনও ট্র্যাফিক না চান তবে এই প্রক্রিয়াটি বাঁচিয়ে রাখতে চান: tcpkill

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

একটি বন্দুকের ডিমন শুরু করবে যা সেই বন্দরের সমস্ত ট্র্যাফিককে বাধা দেয় এবং ট্র্যাশ করে। নেটওয়ার্ক বিভাজনের জন্য আপনার অ্যাপ্লিকেশনগুলি পরীক্ষা করার জন্য খুব সহজ।


0

আপনি এসএস ব্যবহার করে একটি শ্রোতা সকেট বন্ধ করতে পারেন :

sudo ss --kill state listening src :1234

যেখানে 1234 আপনার পোর্ট নম্বর।

ss iproute2 প্যাকেজের অংশ, সুতরাং একটি শক্তিশালী পরিবর্তন আসল এটি একটি আধুনিক লিনাক্সে ইতিমধ্যে ইনস্টল করা আছে।

আমি একটি সম্পর্কিত প্রশ্নের উত্তর থেকে এ সম্পর্কে শিখেছি ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.