
English · 中文
本次更新: Analyzer 模块已使用 Go + cilium/ebpf 完全重写,取代原有 Python + BCC 实现。轻量化改造移除 BCC 运行时依赖,采用 CO-RE(bpf2go)预编译 eBPF,并为各模块新增 MCP 技能集成,支持 LLM 智能体直接调用。
PacketScope 是一款基于 eBPF 的协议栈通用分析调试工具,集性能优化、异常诊断与安全防御于一体。它致力于在服务器端实现对网络分组(Packet)在协议栈中的细粒度追踪与智能分析,解决开放服务器面临的性能瓶颈难诊断、传输路径不明晰、底层攻击难防御等三大痛点,提供可视化、智能化的端侧安全分析与防护能力。

随着社交平台、网银服务、大模型应用、物流出行等互联网服务日益普及,开放服务器作为关键的资源执行环境,必须在可被任何人访问的前提下,兼顾性能和安全。传统 WAF、IDS 等手段在协议栈层面的防护存在盲区,PacketScope 正是为此而生:
🚨 三大核心痛点:
- 分组穿越协议栈路径不透明,瓶颈及故障点难定位
- 分组跨域传输路径缺乏细粒度数据,路由风险不可见
- 协议栈底层攻击隐蔽难测,传统防御工具能力有限
通过协议追踪、路径可视化、智能分析,PacketScope 为服务器构建"智能铠甲"。
docker --version
docker compose version
git clone https://github.com/Internet-Architecture-and-Security/PacketScope.git
cd PacketScope
sudo bash starter.sh
脚本将自动检查 Docker 环境、按顺序构建所有容器并启动服务。
打开浏览器访问:http://localhost:4173/
| 服务 | 端点 | 说明 |
|---|---|---|
| Web UI | http://localhost:4173 |
前端控制台 |
| Guarder API | http://localhost:8080 |
安全防护 API |
| Tracer API | http://localhost:8000 |
路由追踪 API |
| Monitor API | http://localhost:8010 |
数据包捕获与函数调用 API |
| Calculator WS | ws://localhost:8020 |
跨层指标 WebSocket |
sudo docker compose ps # 查看状态
sudo docker compose logs -f # 查看日志
sudo docker compose down # 停止所有
sudo docker compose restart <name> # 重启指定服务
PacketScope/
├── modules/ # 后端服务模块
│ ├── Analyzer/ # 协议栈分析(Go)
│ │ ├── Monitor/ # 数据包捕获与函数调用监控(Go + eBPF)
│ │ ├── Calculator/ # 跨层指标计算器(Go + eBPF)
│ │ ├── README.md # 英文文档
│ │ └── README-zh.md # 中文文档
│ ├── Guarder/ # 安全防护(Go + eBPF/XDP)
│ └── Tracer/ # 路由追踪与风险分析(Python + MCP)
├── skills/ # MCP 技能包,供 LLM 智能体调用
│ ├── monitor/ # Monitor MCP 服务器与客户端
│ ├── tracer/ # Tracer MCP 服务器与客户端
│ └── guarder/ # Guarder MCP 客户端
├── src/ # 前端源码(React + TypeScript)
├── docker-compose.yml # Docker Compose 配置
├── starter.sh # 一键部署脚本
├── README.md # 英文文档
└── README-zh_CN.md # 中文文档
Analyzer 模块已使用 Go + cilium/ebpf 完全重写,取代了原有的 Python + BCC 实现。轻量化改造移除了 BCC 运行时依赖,采用 CO-RE(bpf2go)预编译 eBPF,大幅提升部署可移植性。
Monitor 捕获数据包并追踪内核函数调用:
| 组件 | 技术 | 端口 | 说明 |
|---|---|---|---|
| kbatch | eBPF fentry/kprobe | - | 内核功能调用监控 |
| tcxprober | eBPF TC | - | 网络数据包捕获(ingress/egress) |
| server | Go HTTP | 8010 | RESTful API 查询服务 |
Calculator 计算实时跨层指标:
| 指标 | 说明 |
|---|---|
| PPS | 各层流量速率(链路层、网络层、传输层) |
| LAT | 跨层延迟(链路↔网络、网络↔传输、链路↔传输) |
| DROP | TCP 丢包率 |
通过 WebSocket(端口 8020)通信,每秒自动推送指标数据。
测绘从主机到全球任一 IP 的路径,提供地理/ASN 信息丰富、异常检测与基于 Spamhaus 的风险评分。
| 功能 | 说明 |
|---|---|
| traceroute | 支持 ICMP/TCP 实时追踪,逐跳流式输出 |
| GeoIP | 基于 MaxMind GeoLite2 的城市与 ASN 信息 |
| 异常检测 | 历史路径对比、路径偏移告警 |
| 风险评分 | 基于 Spamhaus DROP/EDROP 的恶意 IP 检测 |
HTTP API 端口 8000,提供 MCP 服务器供 LLM 智能体集成。
基于 eBPF/XDP 的网络安全模块,提供 AI 驱动的过滤器生成。
| 功能 | 说明 |
|---|---|
| 连接追踪 | 通过 eBPF/XDP 监控 TCP/UDP/ICMP |
| 数据包过滤 | 内核空间规则(IP、端口、协议、TCP 标志、ICMP 类型) |
| AI 过滤生成 | LLM 驱动的流量分析与自动规则生成 |
| PCAP 分析 | 上传 PCAP 文件进行 AI 驱动的安全检测 |
HTTP API 端口 8080,支持 OpenAI 兼容与 Anthropic 兼容端点。
各后端模块提供 MCP(Model Context Protocol)服务器,使 LLM 智能体可以直接调用模块能力:
| 技能 | MCP 工具 | 传输方式 |
|---|---|---|
| monitor | get_recent_packets、query_packets、get_recent_map、get_func_table、query_func_send、query_func_recv、get_socket_list、health_check |
SSE / stdio |
| tracer | trace_target、analyze_target、get_history、compare_routes、health_check、server_capabilities |
SSE / stdio |
| guarder | get_connections、get_stats、create_filter、ai_analyze、ai_generate、list_filters |
HTTP 客户端 |
{
"mcpServers": {
"packetscope-monitor": {
"transport": "sse",
"url": "http://localhost:8012/sse"
},
"packetscope-tracer": {
"transport": "sse",
"url": "http://localhost:8013/sse"
}
}
}
详见 skills/ 目录下各技能的配置与使用说明。
| 模块 | 语言 | eBPF 加载 | 通信方式 | 数据存储 |
|---|---|---|---|---|
| Analyzer-Monitor | Go | cilium/ebpf (bpf2go, CO-RE) | HTTP REST(8010) | PostgreSQL |
| Analyzer-Calculator | Go | cilium/ebpf (bpf2go, CO-RE) | WebSocket(8020) | BPF map 聚合 |
| Guarder | Go | cilium/ebpf + XDP | HTTP REST(8080) | 内核 map |
| Tracer | Python | nexttrace(外部) | HTTP REST(8000) | 文件缓存 |
Analyzer Go 重构亮点: - 移除 BCC 运行时依赖 — 无需 Python、无需安装 BCC - bpf2go 预编译 eBPF(CO-RE)— 跨内核版本可移植 - 单二进制部署 — 无外部脚本依赖 - 更低资源占用 — Go vs Python 运行时开销
欢迎提交问题和合并请求!如果你发现任何问题或有改进建议,请在 issues 中提出,或直接提交 pull request。具体贡献指南请参考CONTRIBUTING
该项目遵循 MIT 许可证,详情请见 LICENSE。
$ claude mcp add PacketScope \
-- python -m otcore.mcp_server <graph>