
eBPF-आधारित पैकेट विश्लेषक जो स्वचालित प्रक्रिया, कंटेनर और Kubernetes पॉड मेटाडेटा एनोटेशन के साथ नेटवर्क ट्रैफ़िक को कैप्चर करता है, tcpdump-संगत फ़िल्टरिंग और PcapNG आउटपुट का समर्थन करता है।
अंग्रेज़ी | 中文
ptcpdump एक tcpdump-संगत पैकेट विश्लेषक है जो eBPF द्वारा संचालित है, और पता लगाने योग्य होने पर पैकेटों को प्रक्रिया/कंटेनर/पॉड मेटाडेटा के साथ स्वचालित रूप से एनोटेट करता है। jschwinger233/skbdump से प्रेरित।

--pid (प्रक्रिया), --pname (प्रक्रिया नाम), --container-id (कंटेनर), --pod-name (पॉड)।-i, -w, -c, -s, -n, -C, -W, -A, और अधिक)।pcap-filter(7) वाक्यविन्यास का समर्थन करता है।--netns)।आप x86_64 और arm64 के लिए स्थिर रूप से लिंक किए गए निष्पादन योग्य को रिलीज़ पेज से डाउनलोड कर सकते हैं।
लिनक्स कर्नेल >= 5.2 (BPF और BTF समर्थन के साथ संकलित)।
ptcpdump वैकल्पिक रूप से debugfs की आवश्यकता है। इसे /sys/kernel/debug में माउंट किया जाना चाहिए। यदि फ़ोल्डर खाली है, तो इसे इसके साथ माउंट किया जा सकता है:
mount -t debugfs none /sys/kernel/debug
निम्नलिखित कर्नेल कॉन्फ़िगरेशन आवश्यक है। मॉड्यूल के रूप में बनाना भी संभव है।
| विकल्प | बैकएंड | नोट |
|---|---|---|
| CONFIG_BPF=y | दोनों | आवश्यक |
| CONFIG_BPF_SYSCALL=y | दोनों | आवश्यक |
| CONFIG_DEBUG_INFO=y | दोनों | आवश्यक |
| CONFIG_DEBUG_INFO_BTF=y | दोनों | आवश्यक |
| CONFIG_KPROBES=y | दोनों | आवश्यक |
| CONFIG_KPROBE_EVENTS=y | दोनों | आवश्यक |
| CONFIG_TRACEPOINTS=y | दोनों | आवश्यक |
| CONFIG_PERF_EVENTS=y | दोनों | आवश्यक |
| CONFIG_NET=y | दोनों | आवश्यक |
| CONFIG_NET_SCHED=y | tc | आवश्यक |
| CONFIG_NET_CLS_BPF=y | tc | आवश्यक |
| CONFIG_NET_ACT_BPF=y | tc | आवश्यक |
| CONFIG_NET_SCH_INGRESS=y | tc | आवश्यक |
| CONFIG_CGROUPS=y | cgroup-skb | आवश्यक |
| CONFIG_CGROUP_BPF=y | cgroup-skb | आवश्यक |
| CONFIG_FILTER=y | socket-filter | आवश्यक |
| CONFIG_BPF_TRAMPOLINE=y | tp-btf | आवश्यक |
| CONFIG_SECURITY=y | दोनों | वैकल्पिक (अनुशंसित) |
| CONFIG_BPF_TRAMPOLINE=y | दोनों | वैकल्पिक (अनुशंसित) |
| CONFIG_SOCK_CGROUP_DATA=y | दोनों | वैकल्पिक (अनुशंसित) |
| CONFIG_BPF_JIT=y | दोनों | वैकल्पिक (अनुशंसित) |
| CONFIG_CGROUP_BPF=y | tc, tp-btf, socket-filter | वैकल्पिक (अनुशंसित) |
| CONFIG_CGROUPS=y | tc, tp-btf, socket-filter | वैकल्पिक (अनुशंसित) |
आप zgrep $OPTION /proc/config.gz का उपयोग करके जांच सकते हैं कि कोई विकल्प सक्षम है या नहीं।
tcpdump की तरह फ़िल्टर करें:
sudo ptcpdump -i eth0 tcp
sudo ptcpdump -i eth0 -A -s 0 -n -v tcp and port 80 and host 10.10.1.1
sudo ptcpdump -i any -s 0 -n -v -C 100MB -W 3 -w test.pcapng 'tcp and port 80 and host 10.10.1.1'
sudo ptcpdump -i eth0 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0'
एकाधिक इंटरफ़ेस:
sudo ptcpdump -i eth0 -i lo
प्रक्रिया या उपयोगकर्ता द्वारा फ़िल्टर करें:
sudo ptcpdump -i any --pid 1234 --pid 233 -f
sudo ptcpdump -i any --pname curl
sudo ptcpdump -i any --uid 1000
लक्ष्य प्रोग्राम चलाकर प्रक्रिया द्वारा कैप्चर करें:
sudo ptcpdump -i any -- curl ubuntu.com
कंटेनर या पॉड द्वारा फ़िल्टर करें:
sudo ptcpdump -i any --container-id 36f0310403b1
sudo ptcpdump -i any --container-name test
sudo ptcpdump -i any --pod-name test.default
डेटा को PcapNG प्रारूप में सहेजें:
sudo ptcpdump -i any -w demo.pcapng
sudo ptcpdump -i any -w - port 80 | tcpdump -n -r -
sudo ptcpdump -i any -w - port 80 | tshark -r -
अन्य नेटवर्क नेमस्पेस में इंटरफ़ेस कैप्चर करना:
sudo ptcpdump -i lo --netns /run/netns/foo --netns /run/netns/bar
sudo ptcpdump -i any --netns /run/netns/foobar
sudo ptcpdump -i any --netns /proc/26/ns/net
डिफ़ॉल्ट:
09:32:09.718892 vethee2a302f wget.3553008 In IP 10.244.0.2.33426 > 139.178.84.217.80: Flags [S], seq 4113492822, win 64240, length 0, ParentProc [python3.834381], Container [test], Pod [test.default]
09:32:09.718941 eth0 wget.3553008 Out IP 172.19.0.2.33426 > 139.178.84.217.80: Flags [S], seq 4113492822, win 64240, length 0, ParentProc [python3.834381], Container [test], Pod [test.default]
-q के साथ:
09:32:09.718892 vethee2a302f wget.3553008 In IP 10.244.0.2.33426 > 139.178.84.217.80: tcp 0, ParentProc [python3.834381], Container [test], Pod [test.default]
09:32:09.718941 eth0 wget.3553008 Out IP 172.19.0.2.33426 > 139.178.84.217.80: tcp 0, ParentProc [python3.834381], Container [test], Pod [test.default]
-v के साथ: