मैं डिबगिंग उद्देश्यों के लिए लिनक्स वर्चुअल इंटरफेस पर ट्रैफ़िक कैप्चर करना चाहूंगा। मैं के साथ प्रयोग कर रहा है veth
, tun
और dummy
इंटरफ़ेस प्रकार; तीनों पर, मुझे tcpdump
कुछ भी दिखाने के लिए परेशानी हो रही है।
यहां बताया गया है कि मैंने डमी इंटरफ़ेस कैसे सेट किया है:
ip link add dummy10 type dummy
ip addr add 99.99.99.1 dev dummy10
ip link set dummy10 up
एक टर्मिनल में, इसे देखें tcpdump
:
tcpdump -i dummy10
एक दूसरे में, इस पर सुनो nc
:
nc -l 99.99.99.1 2048
एक तिहाई में, इसके साथ एक HTTP अनुरोध करें curl
:
curl http://99.99.99.1:2048/
यद्यपि टर्मिनल 2 में हम curl
अनुरोध से डेटा देख सकते हैं , कुछ भी नहीं दिखाता है tcpdump
।
एक ट्यून / टैप ट्यूटोरियल कुछ स्थितियों को स्पष्ट करता है जहां कर्नेल वास्तव में कोई पैकेट नहीं भेज सकता है जब कोई स्थानीय इंटरफ़ेस पर काम कर रहा हो:
Tshark के उत्पादन को देखते हुए, हम देखते हैं ... कुछ भी नहीं। इंटरफ़ेस के माध्यम से जाने वाला कोई ट्रैफ़िक नहीं है। यह सही है: चूंकि हम इंटरफ़ेस के आईपी पते को पिंग कर रहे हैं, ऑपरेटिंग सिस्टम सही ढंग से तय करता है कि किसी भी पैकेट को "तार पर" भेजने की आवश्यकता नहीं है, और कर्नेल खुद इन पिंग्स का जवाब दे रहा है। यदि आप इसके बारे में सोचते हैं, तो ठीक यही होगा कि यदि आप किसी अन्य इंटरफ़ेस के आईपी पते (उदाहरण के लिए eth0) को पिंग करते हैं: तो कोई पैकेट बाहर नहीं भेजा जाएगा। यह स्पष्ट लग सकता है, लेकिन पहले यह भ्रम का स्रोत हो सकता है (यह मेरे लिए था)।
हालांकि, यह देखना मुश्किल है कि यह टीसीपी डेटा पैकेट पर कैसे लागू हो सकता है।
शायद tcpdump
इंटरफ़ेस के लिए एक अलग तरीके से बाध्य होना चाहिए?