面向 Android ARM64 Root 环境的透明代理与定向流量模块集合。本仓库统一管理三个可安装模块、自研 clnc-go 内核源码、第三方组件版本锁定、可重现打包脚本与 GitHub Actions 持续集成。
Warning
这些模块会修改 iptables、DNS 和转发路径,可能影响本机及热点设备的全部网络。请先在可恢复的测试设备上验证,并确保能够进入安全模式或 Recovery 禁用模块。
- 用同一套版本锁和校验和管理 Mihomo、Zashboard、yq、curl 与 GeoIP MetaDB。
- 从单一份受测试的
clnc-go源码构建所有 ARM64 内核,避免模块之间版本漂移。 - 将可公开的源码与个人订阅、UUID、Token 和节点配置严格分离。
- 使本地构建和 GitHub Actions 构建使用相同入口,产物可追溯到明确版本和 SHA-256。
| 模块 | 当前版本 | 核心组件 | 默认启动 | 典型用途 |
|---|---|---|---|---|
| Box for Root | v2.0.1 |
Mihomo + Zashboard | 禁用 | 完整节点代理、订阅、DNS 接管、本机与热点透明代理 |
| Jacob Box Chain | v1.1.13 |
clnc-go + Mihomo + Zashboard |
禁用 | 百度第一跳与自有节点第二跳的链式代理 |
| Jacob 定向流量 | v1.0.8 |
clnc-go |
严格禁用 | 只使用百度 HTTP CONNECT 第一跳的精简透明 TCP 转发 |
Box for Root 和 Jacob Box Chain 默认使用 tproxy 模式,Mihomo TProxy 端口为 9898、Redirect 端口为 9797、DNS 端口为 1053。Jacob 定向流量的 clnc-go 透明入口为 6650,本地 SOCKS5 入口为 1081。
flowchart LR
A[Android 本机或热点设备] --> B[iptables / TProxy / REDIRECT]
B --> C{模块}
C -->|Box for Root| D[Mihomo]
C -->|Box Chain| E[Mihomo + clnc-go]
C -->|定向流量| F[clnc-go]
D --> G[节点 / DIRECT]
E --> H[百度第一跳 + 第二跳节点]
F --> I[cloudnproxy.baidu.com:443]
Important
三个模块的透明路由规则会相互冲突。同一时间只应启用其中一个。
components.lock.json 记录官方仓库、Release 资产、下载 URL 与 SHA-256。构建脚本会先校验下载物,哈希不匹配时立即停止,不会把未验证文件写入模块。
| 组件 | 版本 | 用途 | 上游 |
|---|---|---|---|
| Mihomo | v1.19.28 |
代理核心、DNS、规则与透明入站 | MetaCubeX/mihomo |
| Zashboard | v3.15.0 |
Mihomo Web Dashboard | Zephyruso/zashboard |
| yq | v4.53.3 |
YAML 配置处理 | mikefarah/yq |
| curl | 8.21.0 |
订阅、Geo 数据与连通性请求 | stunnel/static-curl |
| GeoIP MetaDB | latest@2026-07-14 |
Mihomo GeoIP 规则数据 | MetaCubeX/meta-rules-dat |
| Go toolchain | 1.26.5 |
测试并交叉编译 clnc-go |
go.dev |
.
|-- packages/
| |-- box-for-root/ # Box for Root 模块源码
| |-- box-chain/ # Jacob Box Chain 模块源码
| `-- directed-traffic/ # 定向流量模块与 clnc-go 源码
|-- scripts/
| |-- Build.ps1 # 下载、校验、编译和打包
| |-- Test.ps1 # 元数据、凭据扫描、Go 测试与 vet
| `-- Update-Components.ps1 # 检查或刷新第三方组件锁
|-- .github/workflows/ci.yml # GitHub Actions 构建
|-- components.lock.json # 第三方组件版本与哈希
`-- README.md
构建期间会产生以下 Git 忽略目录:
| 目录 | 内容 | 是否可公开 |
|---|---|---|
.cache/ |
已下载组件和构建暂存 | 不上传 |
dist/ |
使用无凭据示例配置的发布 ZIP | 可公开 |
local/ |
本机节点、UUID 和订阅配置 | 不可公开 |
dist-local/ |
注入本机配置的私用 ZIP | 不可公开 |
- Windows PowerShell 5.1+ 或 PowerShell 7(推荐)。
- Go
1.26.5,或位于仓库根目录_go_toolchain/go/bin/go.exe的本地工具链。 - 可用的
tar命令和能够访问 GitHub Release 的网络。
- ARM64 /
arm64-v8aAndroid 设备。 - Magisk、KernelSU、APatch 或 Kitsune Mask 之一。
- 内核支持
SO_ORIGINAL_DST,iptables 支持nat/REDIRECT、TProxy 及owner --gid-owner。 - 使用热点接管时,ROM 和内核还必须允许模块管理转发与硬件 offload。
git clone https://github.com/Jacob-Tan666/Jacob-Android-Root-Network-Modules.git
Set-Location Jacob-Android-Root-Network-Modules
# 1. 验证锁文件、模块元数据、公开 YAML 与 clnc-go
pwsh ./scripts/Test.ps1
# 2. 构建可公开的无凭据 ZIP
pwsh ./scripts/Build.ps1产物位于 dist/:
Box_for_Root_v2.0.1.zip
Jacob_Box_Chain_v1.1.13.zip
Jacob_Directed_Traffic_v1.0.8.zip
SHA256SUMS
Build.ps1 会完成以下操作:
- 从
components.lock.json读取下载地址和哈希。 - 下载或复用缓存的 Mihomo、Zashboard、yq、curl 和 GeoIP。
- 逐个验证 SHA-256,并验证 Mihomo 与 curl 解包后二进制哈希。
- 运行
clnc-go测试,交叉编译 Linux ARM64 静态二进制。 - 为三个模块分别创建独立暂存树,注入对应组件。
- 生成模块内
checksums.txt和发布目录SHA256SUMS。 - 验证 ZIP 使用 Android 可识别的
/路径分隔符且必需文件齐全。
公开仓库只提供无节点示例:
- Box for Root:
packages/box-for-root/payload/box/mihomo/config.example.yaml - Jacob Box Chain:
packages/box-chain/jacob_box/mihomo/chain/second-hop.example.yaml
如需保留自己的节点,请创建:
local/box-for-root.config.yaml
local/box-chain.second-hop.yaml
然后执行:
pwsh ./scripts/Build.ps1 -IncludeLocalConfig私用产物输出到 dist-local/。local/ 和 dist-local/ 均已加入 .gitignore,但提交前仍应使用 git status 和凭据扫描复核。
- 确认其他 VPN、透明代理和同类 Root 模块已停止。
- 在 Root 管理器中选择从本地安装,并选择一个模块 ZIP。
- 安装完成后重启设备。三个模块默认均不会盲目开机启动。
- 在模块管理器中点击 Action 启动或停止模块,仔细检查环境诊断和连通性结果。
- 确认本机 TCP、HTTPS、DNS 与热点客户端均符合预期后,再考虑启用开机自启。
| 模块 | Android 数据目录 | 主要日志 |
|---|---|---|
| Box for Root | /data/adb/box |
/data/adb/box/run/ |
| Jacob Box Chain | /data/adb/jacob_box |
/data/adb/jacob_box/run/ |
| Jacob 定向流量 | /data/adb/jacob_directed_traffic |
/data/adb/jacob_directed_traffic/run/traffic.log |
定向流量模块每 5 秒持久化一次经 clnc-go 隧道的上下行载荷统计,但该数据不等同于运营商计费口径。
# 只检查版本化组件是否有新版
pwsh ./scripts/Update-Components.ps1 -CheckOnly
# 更新版本、资产 URL 和 SHA-256
pwsh ./scripts/Update-Components.ps1
# 复核 module.prop 版本后重新测试和构建
pwsh ./scripts/Test.ps1
pwsh ./scripts/Build.ps1Update-Components.ps1 不会自动替你决定模块语义版本。上游核心或面板变更后,维护者必须人工复核配置兼容性、更新 module.prop 与 CHANGELOG.md,再在 Android 实机验证。
.github/workflows/ci.yml 在以下场景运行:
- 推送到
main。 - Pull request。
- 手动触发
workflow_dispatch。
CI 使用 Windows Runner 和 Go 1.26.5,先执行 Test.ps1,然后构建无凭据发布包,最后上传名为 jacob-android-root-modules 的 Artifact。
- 不要禁用校验或手工替换缓存文件。
- 删除对应
.cache/components/文件后重试。 - 如上游重新上传了同名资产,必须从官方 Release 重新核对并更新锁文件。
- 再次点击 Action 让模块回滚 iptables 规则并停止服务。
- 检查默认 IPv4 路由、移动数据状态、核心日志和端口占用。
- 确认没有同时启用另一个本项目模块或第三方 VPN/TProxy 模块。
- 确认 Mihomo 正在运行,且
external-controller与external-ui没有被订阅配置覆盖。 - 默认 Controller 端口为
9090,使用局域网访问前请先设置 API Secret 并配置防火墙。 - 不要把无 Secret 的
0.0.0.0:9090长期暴露到不可信网络。
进入 Root 管理器安全模式或 Recovery,禁用或删除最近安装的模块,再重启设备。不要在未确认内核与 iptables 能力时启用开机自启。
- 禁止提交订阅链接、可用 UUID、Token、节点密码、私钥或包含设备标识的日志。
- 公开构建始终使用无凭据示例,不保证安装后立即具备可用代理节点。
- 自动修改配置、订阅更新、GitHub Token 和镜像下载均默认关闭或留空。
- 请只在当地法律、网络服务条款和运营商政策允许的范围内使用。
安全问题的报告方式见 SECURITY.md。
请先阅读 CONTRIBUTING.md。任何组件升级提交都应包含:
- 锁文件版本、URL 和 SHA-256 变更。
- 对应
module.prop版本和CHANGELOG.md记录。 Test.ps1与公开构建通过证明。- 至少一种受支持 Android Root 环境的实机验证结果。
本仓库尚未声明开源许可证。仓库公开不等于自动授予复制、修改、再分发或商业使用权。请由权利人在接受外部贡献或再分发前选择并添加 LICENSE。