Skip to content
 
 

Latest commit

 

History

686 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Anettrace

Anettrace 是面向 Linux 与已 root Android 设备的 eBPF 网络诊断工具,可追踪报文在内核协议栈中的路径、定位丢包和延迟、统计线程流量,并生成包含网络与系统调度信息的 Perfetto 时间线。

当前正式版:v0.6.2。完整安装说明、参数解释、模式组合、Android 抓取和排障指南已经移至 GitHub Wiki

下载 v0.6.2 · 使用手册 · CLI 完整参考 · 问题反馈

主要功能

  • 报文生命周期追踪:IPv4、IPv6、TCP、UDP、ICMP、ARP 等协议;
  • 地址、端口、协议、网络命名空间、TID、UID 等组合过滤;
  • --diag 异常路径分析与 --drop 内核丢包定位;
  • TCP RTT、协议栈延迟、Socket 生命周期和 monitor 模式;
  • --traffic 按线程与 flow 统计 TCP/UDP 应用层收发字节;
  • --capture-trace 生成系统 Perfetto 与网络事件联合时间线;
  • --ring-buffer 持续抓取并在停止时保存最近 N 秒;
  • Android TCP 主动建连根因诊断与隐私受控报告。

快速开始

Android arm64 正式版

curl -LO https://github.com/ron159/Anettrace/releases/download/v0.6.2/anettrace-0.6.2-android-arm64-dual
curl -LO https://github.com/ron159/Anettrace/releases/download/v0.6.2/SHA256SUMS
grep 'anettrace-0.6.2-android-arm64-dual$' SHA256SUMS | shasum -a 256 -c -

adb push anettrace-0.6.2-android-arm64-dual /data/local/tmp/anettrace
adb shell chmod 0755 /data/local/tmp/anettrace
adb shell /data/local/tmp/anettrace --version

运行追踪需要 root。若 adbd 不是 root,请使用你已经信任并验证过的设备端提权方式;工具不会自动尝试 adb rootsu 或 Magisk。

Linux 源码构建

git clone https://github.com/ron159/Anettrace.git
cd Anettrace
make -j$(nproc) all
sudo ./src/anettrace --proto icmp --detail

依赖安装、无 BTF 兼容构建和 Android 静态打包见 编译与设备要求

常用命令

# 查看目标内核实际可用的追踪组和函数
sudo ./src/anettrace -t '?'

# 诊断指定地址的异常路径
sudo ./src/anettrace --diag --addr 192.0.2.10

# 按 UID 查看 TCP 应用层流量
sudo ./src/anettrace --traffic --proto tcp --uid 1000 --interval 2

# 使用设备上的自定义 Perfetto textproto 配置联合抓取
./anettrace --capture-trace \
  --perfetto-config /data/local/tmp/perfetto_cfg.pbtxt \
  --duration 10 --uid 10187 \
  --output /data/local/tmp/custom-network.pftrace

# 后台持续抓取,Ctrl+C 后保存停止前 30 秒,同时显示流量
./anettrace --traffic --capture-trace --ring-buffer \
  --duration 30 --interval 2 --proto tcp --uid 10187 \
  --output /data/local/tmp/browser-network.pftrace

# 仅系统 trace:在 adb shell 中运行,无需 su,不加载 BPF
./anettrace --capture-trace --system-trace-only --duration 10 \
  --output /data/local/tmp/system.pftrace

# 仅系统 trace 也可使用自定义配置
./anettrace --capture-trace --system-trace-only \
  --perfetto-config /data/local/tmp/perfetto_cfg.pbtxt \
  --duration 10 --output /data/local/tmp/custom-system.pftrace

--system-trace-only 必须与 --capture-trace 一起使用,跳过 root 检查、BPF 探测、 挂载和所有 Anettrace 网络事件导出。支持 --duration--output--trace-profile--perfetto-config--ring-buffer。不接受 --uid--pid--traffic--trace-detail 等网络过滤、分析或 BPF 参数;系统采集范围由 Perfetto 配置决定。 这里的无需 root 是指使用有系统 Perfetto 访问权限的 adb shell 用户,并不保证普通 Android 应用身份可采集。设备 ROM 仍可能限制某些数据源。配置通过标准输入传递,输出 通过标准输出写入调用者可写的临时文件,最终保存为单个纯系统 .pftrace。 若自定义配置自身启用了系统网络数据源,这些系统事件仍由 Perfetto 正常采集。

--perfetto-config--trace-profile 互斥。自定义配置中的顶层 duration_ms 会被忽略,普通模式统一使用 --duration 管理采集窗口,环形模式持续到 Ctrl+C。 配置必须是设备上的非空普通文件,大小不超过 4 MiB。

从 0.6.5 起,所有导出的网络事件附加参数直接保存为字符串,每个参数只显示一份, 不再添加 0.6.4 Release 中的 debug.search.* 副本,简洁的流标签保持不变。 在 Perfetto 顶部搜索框输入值(如 4430x1234false)或字段名(如 dport), 即可检索对应事件。搜索为文本匹配,不支持将 dport=443 自动解析为字段过滤。 需要精确筛选时使用 SQL:EXTRACT_ARG(arg_set_id, 'debug.dport') = '443'; 数值比较、排序或统计前使用 CAST(EXTRACT_ARG(arg_set_id, 'debug.dport') AS INT)。 布尔值为字符串 true/false,使用字符串比较,不要直接转为整数。 dport 表示当前包的目的端口,收包时通常是手机本地端口。 已有 trace 需重新抓取,或用新版转换工具重新转换原始 JSONL。

完整参数以 anettrace -hCLI Wiki 为准。

使用文档

文档 内容
快速开始 下载、校验、部署和第一次追踪
CLI 完整参考 全部公开参数、默认值与组合规则
报文追踪与诊断 default、basic、diag、drop、RTT、latency
线程流量统计 统计口径、过滤范围和组合抓取
Perfetto 与环形缓冲 固定时长、环形抓取、JSONL 转换和合并
TCP 建连诊断 自动结论、报告、隐私边界和中断恢复
常见问题 参数冲突、BTF、probe、ADB 和输出排障

运行要求

  • root 权限和允许 BPF program load/attach 的安全策略;
  • 默认 CO-RE 构建需要可读的 /sys/kernel/btf/vmlinux
  • KPROBE、BPF TRACING、tracepoint 和 Perfetto 能力由具体模式决定;
  • 构建成功不代表目标 Android vendor 内核支持全部跟踪点。

请先执行 anettrace --versionanettrace -hanettrace -t '?',再根据目标设备能力选择模式。

分支、来源与许可

  • master:推荐使用的双后端产品分支;
  • android-tracing:TRACING-only 实验分支,不在进程内回退到 KPROBE。

Anettrace 源于 OpenCloudOS/nettrace,感谢原项目作者和贡献者建立 eBPF 报文追踪与诊断框架。

项目采用 Mulan PSL v2

About

Enhanced nettrace for Android

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages