Box for Magisk 简明教程

前言

Box for Magisk 是 Clash for Magisk 的后续项目,由同一个作者(taamarin)开发。

我在多年前曾写过 Clash for Magisk 简明教程,不过教程写好没多久 Clash for Magisk 就寿终正寝了。而我当时也因为还未完全摸透 Clash 的配置逻辑,对频繁启停 Clash 有需求,最终放弃了使用 Magisk 模块实现透明代理的想法。

而如今我的 Clash 配置已经迭代的十分成熟了,手机上的 FClash 已经完全接管了所有流量,这时候通过 VPN 绕行的方案就显得比较麻烦和费电,所以我又想起了当初的这个模块。

模块安装

模块可以从 官方仓库的 Releases 下载,下载后通过 Root 管理器安装。

安装过程中需要通过音量键确认是否安装哪些模块,确认超时时间为 10 秒,请及时做出选择。当然你也可以一直点按 音量 + 来同意安装所有模块。

模块管理

官方仓库的 Releases 同时也提供了一个可选的管理 App,可以通过该 App 对模块进行管理,我个人选择使用这个管理 App。

  • 安装好 App 之后,使用 Magisk 授予该 App Root 权限。
  • 打开 App,先停止模块的运行。
  • 导航到 Config 选项,找到所使用的代理工具配置目录。

    我使用 Clash,所以打开 Clash 目录,替换其中的 config.yaml 为我自己的配置。这里比较坑的一点是无法选择文件,只能复制粘贴。

  • 回到首页,启动模块。

对于代理选择和状态查看,除了 App 首页提供的简单信息外,还可以点击下方的 Open Panel 打开网页版面板。

使用面板的前提是你在配置文件中启用了外部控制,也就是在 config.yaml 中设置好:

1
2
external-controller: '127.0.0.1:9090'
secret: <面板密码>

当然,简单的启停也可以通过 Shell 命令或 Magisk 的 Action 实现。以下是官方文档中的使用方法:

启动服务:

1
su -c /data/adb/box/scripts/box.service start && su -c /data/adb/box/scripts/box.iptables enable

停止服务:

1
su -c /data/adb/box/scripts/box.iptables disable && su -c /data/adb/box/scripts/box.service stop

补充说明:

  • 修改任何核心配置文件时,请确保 tproxy 相关的配置与 /data/adb/box/settings.ini 文件中的定义一致。
  • 如果您的设备拥有公网 IP 地址,您可以在 /data/adb/box/scripts/box.iptables 文件中将该 IP 地址添加到内部网络,以防止环回流量。
  • BFM 服务的日志位于 /data/adb/box/run 目录中。
  • 请注意,修改这些文件需要适当的权限。请务必仔细遵循说明并验证对配置文件所做的任何更改。

可以运行以下命令获取其他相关操作说明:

1
2
3
4
5
6
su -c /data/adb/box/scripts/box.tool
# usage: {check|geosub|geox|subs|upkernel|upxui|upyq|upcurl|reload|all}
su -c /data/adb/box/scripts/box.service
# usage: $0 {start|stop|restart|status|cron|kcron}
su -c /data/adb/box/scripts/box.iptables
# usage: $0 {enable|disable|renew}

模块卸载

通过 Root 管理器移除模块,并通过 Adb 执行以下指令:

1
2
3
su -c rm -rf /data/adb/box
su -c rm -rf /data/adb/service.d/box_service.sh
su -c rm -rf /data/adb/modules/box_for_root

后记

模块的安装和使用本身很简单,重点是你是否拥有一个足够完善的配置文件。