ptcpdump 是一个开源工具,使用 eBPF 技术捕获和分析网络数据包,并能够展示每个数据包所关联的进程、容器及其相关的元数据。eBPF 技术允许它直接在内核空间捕获数据包,而不需要通过用户空间的额外处理,因此在性能上通常优于传统的捕获工具。
GitHub - mozillazg/ptcpdump: Process-aware, eBPF-based tcpdump
基于eBPF的进程感知tcpdump - ptcpdump 0.31.0
ptcpdump 是一个基于 eBPF 的 tcpdump 实现,具有一个额外的功能:当可用时,它会为每个数据包添加进程信息作为注释。该工具受到了 jschwinger233/skbdump 的启发。
目录
- 功能
- 安装
- 系统要求
- 使用
- 示例命令
- 示例输出
- 使用 Docker 运行
- 后端
- 标志
- 与 tcpdump 的比较
- 开发
- 依赖项
- 构建
功能
-
进程感知
了解与数据包关联的进程信息。
支持按进程 ID 和进程名称过滤数据包。 -
容器感知和 Kubernetes 感知
了解与数据包关联的容器和 Pod 信息。
支持多种容器运行时:Docker Engine 和 containerd。
支持按容器 ID、容器名称和 Pod 名称过滤数据包。 -
使用 pcap-filter(7) 语法过滤数据包
直接在内核空间应用过滤器。 -
支持以 PcapNG 格式保存捕获的数据包
以 PcapNG 格式保存捕获的数据包,以便使用 Wireshark/tshark/tcpdump 等第三方工具进行离线分析。 -
支持在指定的网络命名空间下进行网络接口的数据包捕获。
安装
您可以从发布页面下载适用于 x86_64 和 arm64 架构的静态链接可执行文件。
系统要求
- Linux 内核 >= 5.2(需编译时启用 BPF 和 BTF 支持)。
ptcpdump 是一个基于 eBPF(扩展的 Berkeley 数据包过滤器)的 tcpdump 实现。它的目的是增强传统的网络数据包捕获工具 tcpdump,通过将与数据包相关的进程信息、容器信息等额外的上下文数据提供给用户,从而使得分析网络流量变得更加高效和详细。
ptcpdump 是什么?
ptcpdump 是一个开源工具,使用 eBPF 技术捕获和分析网络数据包,并能够展示每个数据包所关联的进程、容器及其相关的元数据。eBPF 技术允许它直接在内核空间捕获数据包,而不需要通过用户空间的额外处理,因此在性能上通常优于传统的捕获工具。
ptcpdump 怎么样?
-
进程感知:它不仅捕获数据包,还能够显示与数据包相关联的进程信息。这意味着你可以看到是哪个进程发出了或接收了数据包,可以根据进程 ID 或进程名称过滤数据包,从而进行更精确的分析。
-
容器和 Kubernetes 感知:它可以了解数据包所来自的容器或 Pod,支持 Docker 和 containerd 等容器运行时。这对于在容器化环境中进行流量分析尤为重要。
-
高效过滤:它使用 eBPF 技术直接在内核空间应用过滤器,从而提高了数据包过滤的效率。
-
支持 PcapNG 格式:捕获的数据包可以保存为 PcapNG 格式,这样你可以使用 Wireshark、tshark 或 tcpdump 等工具进行离线分析。
-
网络命名空间支持:它可以在指定的网络命名空间下捕获数据包,这对于多租户环境或使用容器化技术的环境尤其有用。
为什么使用 ptcpdump?
-
进程级分析:与传统的 tcpdump 相比,ptcpdump 提供了更多的上下文信息,尤其是在容器化或微服务架构中,这对于故障排查和性能优化非常重要。
-
高效的性能:得益于 eBPF,ptcpdump 可以在内核空间直接进行数据包捕获和过滤,减少了用户空间的开销,因此它的性能通常优于传统工具。
-
容器和 Kubernetes 支持:随着容器化和 Kubernetes 的普及,ptcpdump 提供了对这些环境的原生支持,使得在这些环境中进行网络分析变得更加容易。
-
轻量且易于使用:ptcpdump 支持静态编译的可执行文件,用户可以轻松下载并在支持的系统上运行,无需复杂的安装步骤。
总的来说,ptcpdump 是一个比传统 tcpdump 更加先进和功能丰富的工具,尤其适用于需要进程级、容器级以及高效数据包捕获分析的场景。
ptcpdump 功能分类的表格:
| 功能类别 | 功能描述 | 详细说明 |
|---|---|---|
| 数据包捕获 | 捕获网络数据包 | 利用 eBPF 技术在内核空间捕获网络数据包,支持实时捕获。 |
| 进程关联 | 捕获与数据包关联的进程信息 | 显示数据包发送或接收的进程 ID 和进程名称,可根据进程过滤数据包。 |
| 容器支持 | 显示数据包的容器信息 | 支持 Docker、containerd 等容器运行时,显示数据包来源的容器或 Pod 信息。 |
| 高效过滤 | 基于 eBPF 的数据包过滤器 | 在内核空间执行数据包过滤,减少用户空间开销,提高捕获效率。 |
| 网络命名空间支持 | 支持多网络命名空间的捕获 | 可以在指定的网络命名空间下捕获数据包,适用于多租户或容器化环境。 |
| PcapNG 格式保存 | 捕获数据包以 PcapNG 格式保存 | 支持将数据包保存为 PcapNG 格式,方便 Wireshark 等工具的离线分析。 |
| 实时流量分析 | 实时分析并显示数据包流量 | 提供实时流量分析,并能显示相关的网络流量统计信息。 |
| 多平台支持 | 跨平台支持 | 支持 Linux、MacOS 等多个操作系统平台,易于在不同环境中部署。 |
| 轻量化部署 | 静态编译的二进制文件 | 提供静态编译的二进制文件,用户可以快速下载并在支持的系统上运行。 |
| 与 tcpdump 兼容 | 支持与传统 tcpdump 工具兼容的命令和参数 | 支持类似 tcpdump 的命令行参数,便于用户从传统工具迁移过来。 |
这个表格展示了 ptcpdump 的主要功能,并对每个功能进行简要描述。

浙公网安备 33010602011771号