एक प्रक्रिया के नेटवर्क कनेक्शन दिखाएं


25

एक प्रक्रिया के कनेक्शन दिखाने का एक तरीका है? ऐसा कुछ:

show PID

जिसमें showयह करने के लिए एक आदेश है, और PIDइस प्रक्रिया के pid है। मुझे जो आउटपुट चाहिए वह प्रक्रिया के सभी कनेक्शन (वास्तविक समय में) से बना है। उदाहरण के लिए, यदि प्रक्रिया 173.194.112.151 से कनेक्ट करने का प्रयास करती है तो आउटपुट होता है 173.194.112.151

फ़ायरफ़ॉक्स के साथ एक अधिक विशिष्ट उदाहरण:

show `pidof firefox`

और फायरफॉक्स के साथ मैं पहले google.com पर जाऊंगा , फिर unix.stackexchange.com पर और अंत में 192.30.252.129 को । आउटपुट, जब मैं ब्राउजर बंद करता हूं, तो यह होना चाहिए:

google.com
stackexchange.com
192.30.252.129

(स्पष्ट रूप से ब्राउज़र के साथ यह आउटपुट यथार्थवादी नहीं है, क्योंकि बहुत सारे अन्य संबंधित कनेक्शन हैं, लेकिन यह केवल एक उदाहरण है।)


किस यूनिक्स संस्करण के तहत? अधिकांश के पास ऐसा करने के लिए उपकरण हैं, लेकिन अलग-अलग हैं।
गिल्स एसओ- बुराई को रोकना '

तो अनिवार्य रूप से आप सभी कनेक्शनों का लॉग चाहते हैं?
सर्गी कोलोडियाज़नी

मुझे लगता है कि tcpdump या Wireshark को तब काम करना चाहिए।
सर्गी कोलोडाज़हनी

ऐसा करने के कुछ संभावित तरीके: askubuntu.com/questions/11709/…
मार्क प्लॉटनिक

@Gilles उबंटू 14.04.3 LTS
ᴜsᴇʀ

जवाबों:


23

तुम खोज रहे हो strace! मुझे यह उत्तर आस्कुबंटु पर मिला , लेकिन यह यूनिक्स के लिए मान्य है:

एक नई प्रक्रिया शुरू करने और उसकी निगरानी करने के लिए:

strace -f -e trace=network -s 10000 PROCESS ARGUMENTS

किसी ज्ञात PID के साथ मौजूदा प्रक्रिया की निगरानी करने के लिए:

strace -p $PID -f -e trace=network -s 10000

अन्यथा, लेकिन यह लिनक्स के लिए विशिष्ट है, आप ट्रैफ़िक की निगरानी के लिए एक अलग नेटवर्क नेमस्पेस में प्रक्रिया चला सकते हैं और वायरशार्क का उपयोग कर सकते हैं । यह शायद straceलॉग पढ़ने से अधिक सुविधाजनक होगा :

  • एक परीक्षण नेटवर्क नाम स्थान बनाएँ:

    ip netns add test
    
  • वर्चुअल नेटवर्क इंटरफेस (वीथ-ए और वीथ-बी) की एक जोड़ी बनाएं:

    ip link add veth-a type veth peer name veth-b
    
  • एक इंटरफ़ेस के सक्रिय नाम स्थान को बदलें:

    ip link set veth-a netns test
    
  • वर्चुअल इंटरफ़ेस के IP पते कॉन्फ़िगर करें:

    ip netns exec test ifconfig veth-a up 192.168.163.1 netmask 255.255.255.0
    ifconfig veth-b up 192.168.163.254 netmask 255.255.255.0
    
  • परीक्षण नामस्थान में रूटिंग कॉन्फ़िगर करें:

    ip netns exec test route add default gw 192.168.163.254 dev veth-a
    
  • ip_forward को सक्रिय करें और आपके द्वारा बनाए गए नेमस्पेस से आने वाले ट्रैफ़िक को आगे बढ़ाने के लिए NAT नियम स्थापित करें (आपको नेटवर्क इंटरफ़ेस और SNAT ip एड्रेस को एडजस्ट करना होगा):

    echo 1 > /proc/sys/net/ipv4/ip_forward
    iptables -t nat -A POSTROUTING -s 192.168.163.0/24 -o YOURNETWORKINTERFACE -j SNAT --to-source YOURIPADDRESS
    

    (आप चाहें तो MASQUERADE नियम का उपयोग भी कर सकते हैं)

  • अंत में, आप उस प्रक्रिया को चला सकते हैं जिसे आप नए नामस्थान, और वायरशार्क में भी विश्लेषण करना चाहते हैं:

    ip netns exec test thebinarytotest
    ip netns exec test wireshark
    

    आपको veth-a इंटरफ़ेस की निगरानी करनी होगी।


2
straceवास्तव में लिनक्स कर्नेल के लिए विशिष्ट है, इसलिए यह सभी यूनिक्स जैसे ऑपरेटिंग सिस्टम के लिए मान्य नहीं है। जैसा कि मैं इसे समझता हूं, बीएसडी जैसी प्रणालियों में समान उपयोगिताओं (DTrace और truss) हैं। किसी भी तरह, अच्छा जवाब (इतना अपवित्र)। स्टैक एक्सचेंज में आपका स्वागत है।
एंथनी जी -

इस सवाल का जवाब सही दिशा में बात करने के लिए लगता है, लेकिन मैं समस्याओं की व्याख्या हो रही है उत्पादन , जबकि की जांच । मैं आउटपुट में शामिल किसी प्रकार के URL को देखने की उम्मीद कर रहा था, जैसा कि ओपी ने भी अनुरोध किया था। क्या कोई मदद कर सकता है? stracegit fetch
और्री जूल

14

प्रयत्न

lsof -i -a -p `pidof firefox`

यह आंशिक रूप से काम करता है: यह प्रक्रिया के कुछ वर्तमान कनेक्शनों को प्रिंट करता है, लेकिन फिर यह स्वचालित रूप से बंद हो जाता है। कुछ कार्यक्रमों के लिए आउटपुट केवल यह चेतावनी है:lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /home/user/.gvfs Output information may be incomplete.
2s

आप -r1हर सेकंड आउटपुट दोहराने और -wचेतावनियों को दबाने के लिए विकल्प जोड़ सकते हैं ।
अल्कर्म

2
यह केवल एक समय में कनेक्शन दिखाता है, यह उन सभी कनेक्शनों को सूचीबद्ध नहीं करता है जो एक प्रक्रिया अपने जीवनकाल में बनाती है। यहां तक ​​कि अगर आप इस आदेश को एक लूप में रखते हैं, तो यह कम-जीवित कनेक्शनों को याद करेगा।
गिल्स एसओ- बुराई को रोकना '

प्रश्नकर्ता ने जीवनकाल में कनेक्शन देखने के लिए नहीं कहा। एक के (in real-time)रूप में व्याख्या कर सकता है from the point in time of tracking and forward
llua

8

यहाँ एक और दृष्टिकोण है:

ss -nap | grep $(pidof firefox)

नमूना उत्पादन:

tcp    ESTAB      0      0          192.168.0.222:49050    216.58.218.164:443    users:(("firefox",3280,69))
tcp    ESTAB      0      0          192.168.0.222:48630    198.252.206.25:443    users:(("firefox",3280,106))
tcp    ESTAB      0      0          192.168.0.222:44220     216.58.217.38:443    users:(("firefox",3280,140))
tcp    ESTAB      0      0          192.168.0.222:52690    54.240.170.181:80     users:(("firefox",3280,107))
tcp    ESTAB      0      0          192.168.0.222:48744    198.252.206.25:443    users:(("firefox",3280,87))
tcp    ESTAB      0      0          192.168.0.222:48811    198.252.206.25:443    users:(("firefox",3280,73))

1
यह केवल एक समय में कनेक्शन दिखाता है, यह उन सभी कनेक्शनों को सूचीबद्ध नहीं करता है जो एक प्रक्रिया अपने जीवनकाल में बनाती है। यहां तक ​​कि अगर आप इस आदेश को एक लूप में रखते हैं, तो यह कम-जीवित कनेक्शनों को याद करेगा।
गिल्स एसओ- बुराई को रोकना '

5

आप के साथ भी कोशिश कर सकते हैं netstat -p। आदमी पृष्ठ से:

netstat - प्रिंट नेटवर्क कनेक्शन, राउटिंग टेबल, इंटरफ़ेस आँकड़े, बहाना कनेक्शन और मल्टीकास्ट सदस्यता

केवल नेटवर्किंग कनेक्शन दिखाने के लिए उपयोग करें netstat -tup। ध्यान दें कि PID प्रक्रिया को देखने के लिए आपको रूट होना पड़ सकता है।

यदि आपके पास netstatआपके सिस्टम पर नहीं है, तो आपके ssपास लगभग सटीक सिंटैक्स हो सकता है। आप तब ss -tup(रूट के रूप में) उपयोग कर सकते हैं ।


1
यह केवल एक समय में कनेक्शन दिखाता है, यह उन सभी कनेक्शनों को सूचीबद्ध नहीं करता है जो एक प्रक्रिया अपने जीवनकाल में बनाती है। यहां तक ​​कि अगर आप इस आदेश को एक लूप में रखते हैं, तो यह कम-जीवित कनेक्शनों को याद करेगा।
गिल्स एसओ- बुराई को रोकना '

1
netstat -p | grep फ़ायरफ़ॉक्स | grep tcp
फिलिप किर्कब्राइड

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