🚀 2025 年中国信息通信研究院《OSCAR 尖峰开源项目及开源社区》、腾讯科技《杰出贡献奖》、CNCF Landscape。欢迎 GitHub ❤️

Go-pcap

Go-pcap 是一个纯 Go 数据包捕获库和 tcpdump 风格的 cBPF 过滤器编译器。它提供类似 libpcap 的抓包接口,但不依赖 CGO,因此可以使用 CGO_ENABLED=0 构建,并能更方便地进行跨平台交叉编译。

核心特点

  • 纯 Go 实现:无需 libpcap 和 CGO,支持静态构建及便捷的跨平台编译。
  • 实时数据包捕获:为 Linux 和 macOS/Darwin 提供类似 libpcap 的实时抓包接口。
  • cBPF 过滤器编译:将常用 tcpdump 风格表达式编译为 classic BPF 指令。
  • 链路层感知:同一套过滤器语法可面向 Ethernet(EN10MB)或 Raw IP(L3)数据布局生成指令。
  • 命令行工具:附带 pcap CLI,可进行实时抓包并输出兼容 tcpdump 风格的数据包摘要。

使用场景

  • 网络观测工具开发:为流量采集、协议分析和故障诊断工具提供纯 Go 抓包能力。
  • 无 CGO 部署环境:适用于静态二进制、精简容器和需要跨平台交叉编译的项目。
  • 流量过滤:通过 tcpdump 风格表达式生成 cBPF 指令,过滤 IPv4、IPv6、ARP、TCP、UDP、ICMP 等常见协议流量。
  • 命令行诊断:使用配套 pcap CLI 实时捕获流量并输出数据包摘要。

参与项目

使用方法、过滤语法和开发指南请参阅 Go-pcap 项目文档。欢迎通过 IssuesPull Requests 参与协议、链路类型、兼容性或性能方面的改进。项目采用 Apache License 2.0。