XjVPN



XjVPN 是一个面向 Root Android 设备的按应用透明代理客户端。它不创建
VpnService,而是用应用 UID、iptables REDIRECT/TPROXY 和策略路由把选定
应用的流量送入 Mihomo。
下载
从 GitHub Releases
下载 XjVPN-v0.3.1-arm64.apk。当前仅提供 arm64-v8a 版本。
当前能力
- 导入 Clash/Mihomo YAML 文件
- 从 HTTP/HTTPS Clash 订阅更新配置
- 使用 Root 直接读取 Clash Meta for Android 的当前配置和订阅地址
- 将
http://、https://、socks5://、socks5h:// 代理 URL 生成为配置
- 读取 Mihomo Selector 策略组,展示节点类型、状态和延迟
- 在线切换策略节点、整组测速并在服务重启后恢复选择
- 记录本次连接的全部域名、协议、端口、次数、规则和代理链
- 域名记录支持实时刷新、搜索、排序和点击复制
- 按应用 UID 或全部应用全局代理
- IPv4 TCP REDIRECT、UDP TPROXY 与 IPv6 TPROXY
- IPv4 DNS 劫持与
redir-host 域名映射
- 独立 iptables 链、fwmark 和策略路由表
- 正常停止、启动失败和应用进程被强制终止时自动清理规则
构建
环境要求:
- JDK 17 或更高版本
- Android SDK 35/36
- Android 设备为
arm64-v8a
./gradlew testDebugUnitTest lintDebug assembleDebug
adb install -r app/build/outputs/apk/debug/app-debug.apk
构建任务会从 MetaCubeX 官方 Release 下载 Mihomo v1.19.30 Android arm64
二进制,校验固定 SHA-256 后打入 APK,不在仓库中提交 50 MB 的生成文件。
设备要求
- Magisk、KernelSU 或 APatch 提供的
su
su -M 全局挂载命名空间支持
- iptables
owner、MARK、TPROXY、socket 模块
- IPv4 和 IPv6 policy routing
APatch 不弹出即时授权对话框。首次运行后,需要在 APatch 的“超级用户”页面
为 XjVPN 打开授权。
订阅 URL 和代理 URL 仅在点击导入按钮时读取。成功导入后生成的 Clash YAML
保存在应用私有目录,日常启停直接使用本地配置,不会重复下载;需要更新时再
点击“导入或更新订阅”。
域名审计记录只保存在应用本地数据库。每次启动代理会开始一个新会话并清空
上一轮记录;停止后仍可查看本次结果,便于整理广告域名和后续规则。
不少 Android 内核没有 ip6tables nat 表。XjVPN 因此只对 IPv4 DNS 安装
REDIRECT;IPv6 TCP/UDP 仍走 TPROXY,域名规则由 Mihomo 嗅探补充。
数据面
XjVPN 使用以下专用资源,不清空或替换 Android/netd 与其他防火墙的规则:
- iptables 链:
XJVPN_OUT、XJVPN_PRE、XJVPN_DNS、XJVPN_INPUT
- fwmark:
0x01000000/0x01000000
- 路由表:
20220
- TCP Redirect:
127.0.0.1:17892
- UDP/IPv6 TProxy:
127.0.0.1:17893
- DNS:
127.0.0.1:11053
- Controller:
127.0.0.1:19090,随机 secret
本应用 UID 和 Root UID 会被排除并设置 Android protect-from-VPN 标记,防止
代理内核出口重新进入透明代理或设备上已有的 VPN。
“全局模式”包含 Android 系统应用及其隔离进程,效果与常规 VPN 的全局接管
一致。按应用模式只接管用户明确选择的 UID。
兼容边界
“Clash 格式”以 Mihomo 配置语义为准。运行时会保留节点、代理组、规则和
Provider,同时关闭导入配置的 TUN、自定义 listener 和原监听端口。引用本地
相对文件的 Provider 需要连同资源迁移;远程 Provider 可由 Mihomo 自动下载。
Mihomo 由 MetaCubeX 项目发布并遵循其上游许可证。
传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!!