2012-04-24 4 views
18

में आने वाले ट्रैफ़िक को कैप्चर करें tcpdump में, मैं अपनी मशीन पर नियत सभी आने वाले आईपी ट्रैफ़िक को कैप्चर कैसे कर सकता हूं? मुझे अपने स्थानीय यातायात की परवाह नहीं है।tcpdump

मैं सिर्फ इतना कहना चाहिए:

tcpdump ip dst $MyIpAddress and not src net $myIpAddress/$myNetworkBytes 

... या मैं कुछ याद आ रही है?

+0

"आईसीओपींग आईपी ट्रैफिक" क्या है? प्रसारण पते के लिए पैकेट भी आ रहे हैं। – harper

उत्तर

20

बैश खोल में इस प्रयास करें:

tcpdump -i eth0 tcp and dst host $MyIpAddress and not src net $MyNetworkAddress/$myNetworkBytes 

या इस बराबर सूत्रीकरण:

tcpdump -i eth0 tcp and dst host 10.0.0.35 and not src net 10.0.0.0/24 

आप देखना चाहते हैं:

tcpdump -i eth0 ip proto \\tcp and dst host $MyIpAddress and not src net $MyNetworkAddress/$myNetworkBytes 

अपने सिस्टम पर कुछ इस तरह के निराकरण आपके गंतव्य होस्ट पर सभी ट्रैफ़िक, न केवल टीसीपी प्रोटोकॉल ट्रैफिक जो आप कर सकते हैं:

tcpdump -i eth0 dst host $MyIpAddress and not src net $MyNetworkAddress/$myNetworkBytes 

कुछ नोट:

  1. मैं $MyNetworkAddress/$myNetworkBytes करने के लिए $myIpAddress/$myNetworkBytes बदल दिया है। ऐसा इसलिए है क्योंकि आपके नियम का स्पष्ट इरादा आपके स्थानीय नेटवर्क से यातायात को बाहर करना है, और नेटवर्क पता निर्दिष्ट करने के लिए correct way नेटवर्क का निम्नतम आईपी पता निर्दिष्ट करना है (जिसे नेटवर्क पता कहा जाता है)/netmask।

    tcpdump: non-network bits set in "10.0.0.3/24" 
    
  2. पहला उदाहरण 'टीसीपी' में एक कीवर्ड है: आप किसी भी $ myNetworkBytes के नेटमास्क के साथ एक नेटवर्क के लिए रेंज में सबसे कम पते के अलावा अन्य पता निर्दिष्ट है, तो आप त्रुटि संदेश प्राप्त होगा libpcap अभिव्यक्ति भाषा (मैन पैक-फ़िल्टर) में, जबकि दूसरे उदाहरण में, 'टीसीपी' ip proto के रूप में उपयोग किया जाता है। यह इंगित करने के लिए कि दूसरे उदाहरण में 'टीसीपी' एक मान है और एक और 'टीसीपी' कीवर्ड नहीं है, मुझे डबल बैकस्लैश के साथ 'टीसीपी' से बचने की जरूरत है। इसे एक डबल बैकस्लैश होना चाहिए ताकि बैश दुभाषिया libpcap दुभाषिया पर एक बैकस्लैश पास कर सके (बैश पहली बैकस्लैश खाता है, libpcap दूसरा हो जाता है।) डबल एस्केप भ्रम को कम करने के लिए, यह हो सकता है कि इसमें शामिल होना अच्छा हो सकता है डबल आदेश की पूरी अभिव्यक्ति भाग के हवाले करने की आदत:

    tcpdump -i eth0 "ip proto \tcp and dst host $MyIpAddress and not src net $MyNetworkAddress/$myNetworkBytes" 
    
  3. चेतावनी और आश्चर्य से बचने के लिए, यह इंटरफ़ेस विनिर्देशक -i eth0 या जो कुछ भी इंटरफेस आप चाहें उपयोग करने के लिए बेहतर है। सभी इंटरफेस में अनिवार्य रूप से एक आईपी पता निर्दिष्ट नहीं होता है और विशिष्ट होने के बिना, आप यातायात देख सकते हैं जिसे आप देखना नहीं चाहते थे। यह उन प्रणालियों पर विशेष रूप से सच है जिनके पास नेटवर्क-मैनेजर चल रहा है, जो कि इंटरफेस को जोड़ने और कब के बारे में अपना मन मानता है।

+0

अरे, आपके उत्तर के लिए धन्यवाद। मुझे यूडीपी यातायात में भी दिलचस्पी है, इसलिए मैंने ऊपर दिए गए फ़िल्टर में 'टीसीपी' नहीं लगाया। मुझे यकीन है कि यह कुछ मामूली है, लेकिन क्या आप स्पष्ट कर सकते हैं कि मुझे अपने आईपी पते के बजाय अपना नेटवर्क पता क्यों डालना है? एक बार जब मैं नेटवर्क बाइट्स की संख्या निर्दिष्ट करता हूं, तो इसका एक ही प्रभाव नहीं होना चाहिए? –

+0

पता टिप्पणी के लिए संपादित उत्तर –

10

उपरोक्त में से कोई भी एकाधिक ips वाले बॉक्स के लिए बहुत अच्छा काम नहीं करता है।

यह कई इसे करने के लिए बाध्य ips के साथ एक DNS सर्वर पर मेरे लिए बहुत अच्छी तरह से काम:

tcpdump -l -n -i pub dst port 53 and inbound

हालांकि tcpdump के सभी संस्करणों पर काम न करे।

# tcpdump -V 
tcpdump version 4.1-PRE-CVS_2012_03_26 
libpcap version 1.4.0 
+1

'इनबाउंड' कीवर्ड – bbonev

0

-Q दिशा --direction = दिशा चुनें भेजने/प्राप्त दिशा जिस दिशा के लिए पैकेट पर कब्जा कर लिया जाना चाहिए। संभावित मान in', बाहर 'और' इनआउट 'हैं। सभी प्लेटफ़ॉर्म पर उपलब्ध नहीं है।

+0

अच्छा की सराहना करते हैं! मुझे इस विकल्प के बारे में पता नहीं था। –

संबंधित मुद्दे