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"
}
重启一下就好了