कमांड की नेटवर्किंग गतिविधि का पता कैसे लगाएं?


14

मैं एक कमांड की नेटवर्किंग गतिविधि का पता लगाना चाहता हूं, मैंने सफलता के बिना tcpdump और स्ट्रेस की कोशिश की।

एक उदाहरण के लिए, यदि मैं एक पैकेज स्थापित कर रहा हूं या किसी कमांड का उपयोग कर रहा हूं जो किसी साइट तक पहुंचने की कोशिश करता है, तो मैं उस नेटवर्किंग गतिविधि (उस साइट तक पहुंचने की कोशिश करता हूं) को देखना चाहता हूं।

मुझे लगता है कि हम tcpdump का उपयोग करके ऐसा कर सकते हैं। मैंने कोशिश की लेकिन यह मेरे सिस्टम की सभी नेटवर्किंग गतिविधि पर नज़र रख रहा है। मान लीजिए कि यदि मैं कई नेटवर्किंग से संबंधित कमोड चलाता हूं और मैं केवल विशेष कमांड नेटवर्किंग गतिविधि को ट्रैक करना चाहता हूं, तो उस समय सटीक समाधान का पता लगाना मुश्किल है।

क्या ऐसा करने के लिए कोई रास्ता है?

अपडेट करें:

मैं अपने नेटवर्क इंटरफेस पर जाने वाली हर चीज को ट्रैक नहीं करना चाहता। मैं सिर्फ कमांड ट्रैक करना चाहता हूं (उदाहरण के लिए #yum install -y vim) नेटवर्किंग गतिविधि। जैसे कि यह जिस साइट तक पहुंचने की कोशिश करता है।


1
एप्लिकेशन को नेटवर्क नेमस्पेस में रखें, फिर tcpdump / wirehark का उपयोग करें। जैसे देखें यहाँ
dirkt

जवाबों:


17

सादगी के लिए netstat

netstatPID या प्रक्रिया के नाम का उपयोग करना और पकड़ना:

# netstat -np --inet | grep "thunderbird"
tcp        0      0 192.168.134.142:45348   192.168.138.30:143      ESTABLISHED 16875/thunderbird
tcp        0      0 192.168.134.142:58470   192.168.138.30:443      ESTABLISHED 16875/thunderbird

और आप watchगतिशील अपडेट के लिए उपयोग कर सकते हैं :

watch 'netstat -np --inet | grep "thunderbird"'

साथ में:

  • -n: प्रतीकात्मक होस्ट, पोर्ट या उपयोगकर्ता नाम निर्धारित करने के बजाय संख्यात्मक पते दिखाएं
  • -p: पीआईडी ​​और उस प्रोग्राम का नाम दिखाएं जिसमें प्रत्येक सॉकेट है।
  • --inet: केवल कच्चा, udp और tcp प्रोटोकॉल सॉकेट दिखाएं।

वर्बोसिटी के लिए स्ट्रेस

आपने कहा कि आपने straceउपकरण की कोशिश की , लेकिन क्या आपने विकल्प की कोशिश की trace=network? ध्यान दें कि आउटपुट काफी वर्बोज़ हो सकता है, इसलिए आपको कुछ ग्रेपिंग की आवश्यकता हो सकती है। आप "sin_addr" पर grepping द्वारा प्रारंभ कर सकते हैं।

 strace -f -e trace=network <your command> 2>&1 | grep sin_addr

या, पहले से चल रही प्रक्रिया के लिए, PID का उपयोग करें:

 strace -f -e trace=network -p <PID> 2>&1 | grep sin_addr

+1 netstatजिसके लिए IMHO सबसे सरल और साफ समाधान है।
dr01

@ गोहू मैंने dnf के लिए भी यही किया। लेकिन कोई किस्मत नहीं। मैंने dnf का उपयोग करके कुछ पैकेज स्थापित करने की कोशिश की, फिर मैं देखता हूं कि dnf प्रक्रिया चल रही है (प्रक्रिया का नाम: dnf शीर्ष और ps aux कमांड के अनुसार)। अफसोस की बात है कि मुझे netstat -np --inet से कोई आउटपुट नहीं मिला grep "dnf"।
बुवनेश कुमार

स्ट्रेस के लिए +1। यह मेरी समस्या का समाधान है। मैं आईपी पते प्राप्त करने में सक्षम हूं। आपके उत्तर के लिए बहुत बहुत धन्यवाद :) @ गौ। मुझे लगता है कि यह सभी आईपी पते दे रहा है जो नेटवर्क पर पहुंचता है (जैसे राउटर आईपी और अन्य आईपी)। यदि आप जानते हैं, तो क्या केवल गंतव्य आईपी को ट्रैक करना संभव है?
बुवनेश कुमार

आप कोशिश कर सकते हैं और straceआउटपुट को कुछ और फ़िल्टर कर सकते हैं , केवल connectsyscalls रखने और dnsअनुरोधों को हटाने (पोर्ट 53) के साथ:| grep connect | grep -v 'sin_port=htons(53)'
Gohu


5

मैं एक नया नेटवर्क नामस्थान बनाऊंगा , उसे वास्तविक नेटवर्क पर पुल कर दूंगा, और फिर पुल की निगरानी करूंगा tcpdump


1
जवाब के लिए धन्यवाद। यह बहुत अच्छा होगा यदि आप मुझे बताएं कि कैसे :)।
बुवनेश कुमार

5

sysdig आपको अपने सिस्टम में चल रहे कर्नेल या कई आदेशों की सभी गतिविधि की निगरानी करने की अनुमति देता है, जिसमें नेटवर्क गतिविधि शामिल है और प्रतिबंधित नहीं है।

जैसा कि आउटपुट बड़ा हो सकता है, आपको फ़िल्टर का निर्माण करना होगा, सबसे बुनियादी फिल्टर के लिए डिफ़ॉल्ट पृष्ठ काफी समझ में आता है।

इसका यह भी फायदा है कि इसका उपयोग ऐप्पल रैपर के रूप में नहीं किया जाता है strace, और यह काफी शक्तिशाली हो सकता है।

से Sysdig उदाहरण

नेटवर्किंग

नेटवर्क बैंडविड्थ उपयोग के संदर्भ में शीर्ष प्रक्रियाएं देखें

sysdig -c topprocs_net 

होस्ट 192.168.0.1 के साथ एक्सचेंज किए गए नेटवर्क डेटा को दिखाएं

बाइनरी के रूप में:

sysdig -s2000 -X -c echo_fds fd.cip=192.168.0.1   

ASCII के रूप में:

sysdig -s2000 -A -c echo_fds fd.cip=192.168.0.1 

शीर्ष स्थानीय सर्वर पोर्ट देखें:

स्थापित कनेक्शन के संदर्भ में:

sysdig -c fdcount_by fd.sport "evt.type=accept"   

कुल बाइट के संदर्भ में:

sysdig -c fdbytes_by fd.sport 

शीर्ष ग्राहक आईपी देखें

स्थापित कनेक्शन के संदर्भ में

sysdig -c fdcount_by fd.cip "evt.type=accept"   

कुल बाइट के संदर्भ में

sysdig -c fdbytes_by fd.cip 

उन सभी आने वाले कनेक्शनों की सूची बनाएं जो अपाचे द्वारा नहीं परोसे गए हैं।

sysdig -p"%proc.name %fd.name" "evt.type=accept and proc.name!=httpd"

1

आप नेटवर्क इंटरफ़ेस के सभी इनपुट और आउटपुट ट्रैफ़िक को सूँघने के लिए वायरशार्क का उपयोग कर सकते हैं। यदि आपको GUI के बिना एक विकल्प की आवश्यकता है तो आप tshark का उपयोग कर सकते हैं।

दोनों विकल्प के साथ आप सभी नेटवर्क ट्रैफ़िक को देख सकते हैं और बाद में स्थापित सभी कनेक्शनों का विश्लेषण करने के लिए इसे सहेज सकते हैं।


1
जैसा कि मैंने पहले कहा, यदि मैं कई नेटवर्किंग से संबंधित कमांड चलाता हूं, तो मुझे कैसे पता चल सकता है कि कौन सी कमांड किस साइट पर मिल रही है।
बुवनेश कुमार

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

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