मैं कैसे जांच सकता हूं कि कौन से पोर्ट व्यस्त हैं और मेरे लिनक्स मशीन पर कौन से पोर्ट फ्री हैं?


30

क्या मेरी लिनक्स मशीन पर व्यस्त और मुफ्त पोर्ट नंबरों को खोजने और सूचीबद्ध करने के लिए कोई कमांड लाइन कमांड या कोई अन्य तरीका है?

जवाबों:


41

आदेश

netstat -antu

उपयोग में सभी tcp और udp पोर्ट दिखाएंगे। आउटपुट कुछ इस तरह दिखेगा:

Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:59753           0.0.0.0:*               LISTEN

स्थानीय पता क्षेत्र में कोलन के बाद की संख्या उपयोग में पोर्ट दिखाती है। यदि राज्य "लिस्टेन" है, तो इसका मतलब है कि एक पोर्ट जो आने वाले कनेक्शन के लिए उपयोग कर रहा है। यदि Local Addressफ़ील्ड में IP पता है 0.0.0.0तो इसका मतलब है कि आने वाले कनेक्शन को किसी इंटरफ़ेस को दिए गए किसी भी IP पते पर स्वीकार किया जाएगा - इसलिए इसका मतलब है कि आपके मशीन के बाहर होने वाले कनेक्शन।

यदि यह कहा गया है localhostया 127.0.0.1यह केवल आपके मशीन से कनेक्शन स्वीकार करेगा।

इसके अतिरिक्त, यदि आप -pपैरामीटर जोड़ते हैं , और इसे रूट के रूप में चलाते हैं, तो यह पोर्ट को खोलने वाली प्रक्रिया को दिखाएगा:

$ sudo netstat -antup
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:59753           0.0.0.0:*               LISTEN      860/rpc.statd

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


इसका मतलब है कि आने वाले कनेक्शनों को एक इंटरफ़ेस को सौंपे गए किसी भी आईपी पते पर स्वीकार किया जाएगा - इसलिए आपके मशीन के बाहर होने वाले कनेक्शन से इसका मतलब यह है कि क्या आपने यहां कोई त्रुटि नहीं की है? आप शायद मतलब है, कि कनेक्शन स्वीकार कर लिया जाएगा, अगर वे किसी भी दिए गए इंटरफ़ेस पर दिए गए पते पर आते हैं, भले ही उनके मूल की परवाह किए बिना। आने वाले कनेक्शन की उत्पत्ति संभवतः अगले कॉलम विदेशी पते में निर्दिष्ट की गई है। तो यह वहाँ है, अगर किसी के पास मान के रूप में 0.0.0.0 है, तो इसका मतलब है कि कनेक्शन कहीं से भी स्वीकार किए जाएंगे, मशीन के बाहर
user907860

1
@ user907860 यह स्पष्ट नहीं हो सकता है, लेकिन मैं जो अंतर कर रहा हूं, वह 0.0.0.0 बनाम 127.0.0.1 के बीच है - बाद वाला केवल आपकी मशीन से कनेक्शन स्वीकार करेगा, क्योंकि यह बिना पढ़े आईपी पते पर सुन रहा है। जहां 0.0.0.0 का अर्थ है कि आपकी मशीन पर कोई भी पता, और इसलिए वे रूट किए गए हैं, अन्य मशीनों से कनेक्शन बनाए जा सकते हैं।
पॉल

सिर्फ FYI करें ,,-antu-tuna
Abdennour TOUMI


7

खोले गए बंदरगाहों के लिए जाँच करने का एक अच्छा और विश्वसनीय तरीका उपयोग कर रहा है ss( पदावनत करने के लिए प्रतिस्थापन netstat), यह एक स्क्रिप्ट में प्रयोग करने योग्य विशेषाधिकार (यानी sudo) की आवश्यकता के बिना प्रयोग करने योग्य है ।

उपयोग: -lसुनने के पोर्ट के लिए विकल्प , -nDNS रिज़ॉल्यूशन को बायपास करने का विकल्प और स्रोत पोर्ट पर फ़िल्टर NN: src :NN( NNउस पोर्ट द्वारा प्रतिस्थापित करें जिसे आप मॉनिटर करना चाहते हैं)। अधिक विकल्पों के लिए, देखेंman ss

ss -ln src :NN

उदाहरण:

[user@server ~]# ss -ln src :80
State       Recv-Q Send-Q       Local Address:Port   Peer Address:Port
LISTEN      0      128                      *:80                *:*
[user@server ~]# ss -ln src :81
State       Recv-Q Send-Q       Local Address:Port   Peer Address:Port

और एक स्क्रिप्ट में, grep का उपयोग करके, हम परीक्षण कर सकते हैं कि आउटपुट में हमारे द्वारा अनुरोधित पोर्ट शामिल है या नहीं। उपयोग में पोर्ट 80 के साथ उदाहरण (ऊपर देखें):

myport=80
# count the number of occurrences of port $myport in output: 1= in use; 0 = not in use
result=$(ss -ln src :$myport | grep -Ec -e "\<$myport\>")
if [ "$result" -eq 1 ]; then
  echo "Port $myport is in use (result == $result) "
else
  echo "Port $myport is NOT in use (result == $result) "
fi

# output:
Port 80 is in use (result == 1)

पोर्ट 81 के साथ उदाहरण उपयोग में नहीं है (ऊपर देखें)

myport=81
result=$(ss -ln src :$myport | grep -Ec -e "\<$myport\>")
if [ "$result" -eq 1 ]; then
  echo "Port $myport is in use (result == $result) "
else
  echo "Port $myport is NOT in use (result == $result) "
fi

# output:
Port 81 is NOT in use (result == 0)

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