0x00前言
最近我在看magisk模块的时候,发现了一个比较好用的模块,那就是magisk版的v2ray工具。
作为模块,他可以一直在后台运行,而且非系统VPN模式。就是状态栏不会有啥图标。强迫症患者首选。
这是他的项目地址Github项目,怎么下载,怎么安装这里就不复述了
大神可以自己去看他的README,我这里分享一下我自己的过程,心得供大家参考。
教程仅供学习与交流使用,请勿用于非法用途。
0x01入门
安装完成后你的/data/
目录下会生成一个v2ray
的文件夹,这里存放着各种配置等文件。

首先配置我们的config.json
文件,此文件为v2ray
的主要配置文件,里面有出站和入站规则等。
使用编辑器打开/data/v2ray/config.json
这个文件,我这里用的是es文件浏览器自带的编辑器,用其它也可以。
然后将自己服务器配置outbounds
部分的第一个元素复制到刚打开的文件的相同位置,点击保存。

再打开/data/v2ray/appid.list
这个文件,在文件内填入数字0
。然后保存。解释一下:这个文件是用于分应用代理的,如果有这需求的友友们请查看本篇文章的进阶部分。

然后回到Magisk Manager
应用中,重启v2ray for android模块(就是禁用再打开,看下图)

开始美妙的玩耍之路吧!!
0x02进阶
进阶配置稍微比入门的要难一些,但带来的好处也是显而易见的,例如分应用代理减少耗电,应用新的规则识别更准确。
此板块中简单的操作将不再赘述,有需要的可以看看前面的。
配置分应用代理
打开/data/v2ray/appid.list
文件,分应用代理使用app的uid来区分每一个应用程序,文件的格式为:每个uid以 空格 或 换行 来分割。
app的uid一般存在于/data/system/packages.list
,您可以直接查看此文件来获取每个应用的uid。当然也有软件可以使用,例如DevCheck
,Solid Explorer
这些应用也可以进行查看。下方我以DevCheck为例。

当然我也写了一个方便配置app uid的应用,这个应用可以把包名直接转换成uid,包名可以直接从其它软件中直接导出。需要的在评论区留言一下,我会发出来

应用新路由规则
在/data/v2ray/
目录下有geoip.dat和geosite.dat两个文件,这两文件中有一些规则,可以实现类似Gxx的功能,也就是可以指定哪些网站需要代理,哪些不需要。
首先我们需要去下载比较强大的规则集,这是他的项目地址Github项目
我们需要下载上方两个文件,下载地址直接放出来:
geoip.dat geosite.dat
下载完成后直接覆盖/data/v2ray/
目录里的原文件,然后打开config.json
,下面我就直接贴代码了,怎么编辑你们也会的。
在routing
部分下改写部分规则
"routing": {
"domainStrategy": "IPIfNonMatch",
"rules": [
{
//代理dns请求
"type": "field",
"inboundTag": ["dns-in"],
"outboundTag": "dns-out"
},
{
//禁用bt下载
"type": "field",
"outboundTag": "direct",
"protocol": ["bittorrent"]
},
{
//屏蔽广告
"type": "field",
"outboundTag": "block",
"domain": [
"geosite:category-ads-all"
]
},
{
//代理非大陆地址和speedtest
"type": "field",
"outboundTag": "proxy",
"domain": [
"geosite:geolocation-!cn",
"geosite:speedtest"
]
},
{
//直接放行大陆地址
"type": "field",
"outboundTag": "direct",
"domain": [
"geosite:cn"
]
},
{
//放行国内dns地址
"type": "field",
"outboundTag": "direct",
"ip": [
"223.5.5.5/32",
"119.29.29.29/32",
"180.76.76.76/32",
"114.114.114.114/32"
]
},
{
//代理国内dns地址
"type": "field",
"outboundTag": "proxy",
"ip": [
"1.1.1.1/32",
"1.0.0.1/32",
"8.8.8.8/32",
"8.8.4.4/32"
]
},
{
//放行国内ip和私有地址
"type": "field",
"outboundTag": "direct",
"ip": [
"geoip:cn",
"geoip:private"
]
}
]
}
可以复制到自己的文件中,这样就实现了精准的分流。
0x03高级
在这个版块将不再赘述进阶中的操作步骤
通过WiFi热点来共享网络
共享自己的代理给wifi热点
默认情况下是自动共享的,但有时候却不是那么尽人意。打开文件/data/v2ray/softap.list
默认情况下会有softap0
字样,这是WiFi热点接口名称。你可以通过ip addr
来查看你的设备中热点接口的名称,并不是所以的设备都是softap0
。你需要在此文件中写入自己的热点接口名称。

开发 && 未测试
进入手动模式
如果要通过完全运行命令来控制V2Ray,只需添加一个文件/data/v2ray/manual。在这种情况下,V2Ray服务将不会在启动时自动启动,并且您无法通过Magisk Manager应用程序管理服务的启动/停止。
管理服务启动/停止
V2Ray服务脚本是$MODDIR/scripts/v2ray.service
。
启动服务:/sbin/.magisk/img/v2ray/scripts/v2ray.service start
停止服务:/sbin/.magisk/img/v2ray/scripts/v2ray.service stop
管理透明代理启用/禁用
透明的代理脚本是$MODDIR/scripts/v2ray.tproxy
。
启用透明代理:/sbin/.magisk/img/v2ray/scripts/v2ray.tproxy enable
禁用透明代理:/sbin/.magisk/img/v2ray/scripts/v2ray.tproxy disable
通过wifi来共享网络给局域网中的其它人 (已测试,可以用)
打开config.json
文件在inbounds
中添加
{
//监听socks,端口为1080
"protocol": "socks",
"listen": "0.0.0.0",
"port": 1080,
"tag": "socks-in",
"settings": {
"ip": "127.0.0.1",
"udp": true,
"auth": "noauth"
},
"sniffing": {
"enabled": true,
"destOverride": ["http", "tls"]
}
},
{
//监听http,端口为1081
"protocol": "http",
"listen": "0.0.0.0",
"port": 1081,
"tag": "http-in",
"sniffing": {
"enabled": true,
"destOverride": ["http", "tls"]
}
}
然后在rules
中
{
//代理dns请求
"type": "field",
"inboundTag": ["dns-in"],
"outboundTag": "dns-out"
},
修改为
{
"type": "field",
"outboundTag": "dns-out",
"inboundTag": [
"socks-in",
"http-in",
"dns-in"
],
"network": "tcp,udp"
}
反正我没测试过,如果有问题参考官方文档 官方文档
还有其它的玩法,请自行参考官方档。能玩得那么骚的,也不用来看我了。。。。
0x04踩的坑
Google服务无法使用,联不上网
一些是国行的手机,有些国行手机内置了google服务,但使用了这个模块后没法访问,原因是国行手机把google的地址指向了googleapis.cn。这个地址不可用。所以只要强制代理这个地址就好了。
在config.json的rules中加入
{
"type": "field",
"domain": [
"domain:googleapis.cn"
],
"outboundTag": "proxy"
}
重启一下就好了
更新内容:
回复删除1.
增加了多文件配置并将原本的config.json分担到
dns.json
log.json
inbounds.json
policy.json
routing.json
你可以前往/data/v2ray/config文件夹自定义这些配置。
2.
更新最新内核4.23.1
新的内核提升了v2ray的稳定性
3.适配面具20.4
4.优化目录文件
更新方式,将原先模块卸载。
再安装这个版本的模块.
进入app v2rayNG
将你要导入的节点点击分享
选择导出完整配置至剪贴板
然后打开/data/v2ray/config.json
全选,粘贴,保存。
在/data/v2ray目录下创建appid.list文件
输入应用uid,重启
之后你就可以享受它了
------------------------
回复删除友情提示:
如果你的网速很慢或者经常断流请使用分应用代理试试。
断流也与机场的稳定性有关。
--------------------------------------------------------
要用绕行模式就第一行打个#bypass
然后下面的就是不走代理的uid
-------------------------------------------------------
使用方法:
1.面具安装v2ray-mod5.4.zip模块.重启手机模块生效.
2.进入app v2rayNG
将你要导入的节点点击分享
选择导出完整配置至剪贴板
3.使用带root权限的文件管理器打开/data/v2ray/config.json
全选,粘贴,保存,退出。
4.在/data/v2ray目录下创建appid.list文件
输入需要翻墙的应用uid,保存,退出。
5.重启模块(方法上翻找一下)。
之后你就可以享受它了( just enjoy !)
科普:v2ray的app和这个模块的核心是一样的,最大的不同在于两者的运行方式不同。
回复删除app的优点在于灵活(方便更换节点),可以直观操作,模块的优点在于省电,省心(前提是配置好),无感翻墙。
如果你只是偶尔用一下翻墙,推荐app。如果你需要长期翻墙的话,就推荐模块了,他能让你产生无墙的错觉。
好了,技术总结完毕。
v2ray-mod5.5.zip更新v2ray内核版本为v4.23.4。
回复删除水一个版本,其实是太久没碰这东西了我当初咋写的忘了,等我研究几天。
按道理将每次更新应该加一个异于原版的功能,我太懒了,等我几天(可能是几十天)
v2ray-mod5.6.zip更新内容:跟进内核更新
回复删除修复内容:
进一步消除来自TLS ClientHello的身份泄漏
修复了Socks5入站,Shadowsocks入站和Dokodemo(TProxy)入站中的UDP稳定性问题。 这样可以缓解不必要的CPU,内存使用以及过早断开连接的问题,这些问题通常是由玩游戏,视频会议和下载内容触发的。
在发行版中添加了ARM v5二进制文件。 这应该允许旧式ARM设备正确运行V2Ray。
重大变化:
ARM发行文件的文件结构已更改。
v2ray-mod5.7.zip更新
回复删除V2Fly的签名基础结构已被修改。 您现在可以使用带有v2ctl的“发布”签名清单文件来验证V2Fly的发行版。
VMessAEAD已更新,以更多地依赖AEAD。
出站流量统计API。 谢谢@ yuhan6665
除了HTTP 1.1代理流量外,HTTP出站现在还可以处理基于TLS的HTTP2,基于TLS的HTTP 1.1。 谢谢@darhwa
从现在开始,ARM版本将包含一个显式版本。 谢谢@rprx
从现在开始,V2Ray将生成Windows 32 ARM二进制版本。
小代码整理。 谢谢Roger Shimizu。
小代码整理。 谢谢@agioi
修复客户端向DoH提供无效域名时崩溃的问题。 谢谢@DuckSoft
突破性变革
VMessAEAD已更新,并且需要客户端和服务器具有相同版本才能正常工作。