1
yfugibr 2023-07-20 08:17:11 +08:00
|
2
vcn8yjOogEL 2023-07-20 08:20:54 +08:00 via Android
用工作资料可以同时运行两个 VPN
|
3
Goooooos 2023-07-20 09:13:29 +08:00
@yfugibr NB4A 应该是目前 android 可定制性较高的了,路由规则可以指定应用,同时也可以指定使用哪个代理
CFA 不支持 mixin ,v2rayNG 只能支持一个 outboundtag |
4
airbotgo OP |
5
Goooooos 2023-07-20 09:23:09 +08:00
开启日志有机会导致缓存暴增,进程卡死。清下缓存就好,目前最新版暂时没遇到。
其他问题暂时没发现 |
7
Goooooos 2023-07-20 10:51:49 +08:00
目前用法:
1. 192.168.0.0/16 路由到家里的 wireguard 代理 2. 指定应用使用特定的代理,例如一些 H 漫 APP 屏蔽了日本 IP 3. 部分机场使用链式代理,落地代理配置为 warp 增加安全性,当然也增加了延迟 |
8
x77 2023-07-20 11:23:35 +08:00
比较难实现,难点在于不好区分流量来自哪个应用。
虽然可以只让 A 、B 走 VPN ,但是 VPN 客户端拿到的数据是 A 和 B 的混合在一起的流量,而且,VPN 客户端拿到的 IP 层数据是不带应用信息。对于客户端来说,没有信息来区分流量是 A 的还是 B 的,也就没法给 A 和 B 设置不同的网路节点(走一样的节点很容易)。 最简单的办法是跑两个 VPN 客户端,但是 Android 系统只允一个 VPN 在运行。其次可以一次只接管一个应用,也就是一次只控制 A 或 B 其中一个的网路,但是不能同时控制两个的。再次就是最难的方案,从 IP 层流量中找到能够区分 A 或 B 的特征数据,进行区分。 |
9
airbotgo OP |
10
airbotgo OP @x77 目前 Clash for Android 提供了一个功能,可以设置某些 app 走或者不走翻墙流量,但是目前设置走某个具体的节点。
可能在实现上确实有难度,所以没有提供。我翻到上游 Clash 项目作者 Dreamacro 回答过这个问题: https://github.com/Dreamacro/clash/issues/376 https://github.com/Dreamacro/clash/issues/171 |
11
x77 2023-07-20 11:52:54 +08:00
|
12
ysc3839 2023-07-20 12:10:26 +08:00 via Android
@x77 Linux 应该是可以用 tun packet 信息查到对应程序的,没记错的话 clash tun 也能正常使用 process name 规则。
主要问题是 Android 给不给使用上述 Linux 接口,不给的话大概只能 root 实现了。 |
13
rebecca554owen 2023-07-22 07:24:59 +08:00 via Android
开两个 clash ,clash3.0.3 只开启 http 与 socks5 ,给 tg 连接 A 节点使用,clash META 开启 VPN ,给其他 APP 使用。
|
14
haohaolee 2023-07-22 19:02:11 +08:00 via Android
@x77 其实不然。Android 和 Linux 不一样,Android 每个应用都是不同的 user ,这样的话用 iptables 就可以做到区分不同应用了。实际上,很早 Android 就有按照不同应用进行流量统计的功能了。
我猜想 VPN Service 本身对此也有支持 |
15
x77 2023-07-22 20:45:56 +08:00
@haohaolee
- 系统才有,给到应用层的接口( VpnService )没有,VpnService 只能选择(劫持或不劫持,两种模式二选一)哪些应用。 - iptable 的思路也可以排除,因为 Android VPN 独立路由,没法按应用设置路由。另外,Android 应用没权限改路由表。 - root ,如果用户接受则是个方案,那就走 linux 的方式去搞了。 其实搞 VPN 按应用分流最适合的就是系统支持,客户端去做这个事情成本很高,主要是没有系统没有给应用层提供用来分流的信息。而系统层轻轻松松就可以实现,系统层的信息是完整的,它知道数据包是那个进程发出来的。 但是 IP 层网络又没有规范要求数据包标上进程 ID ,这个需求就变成标准之外的设计,如果这么用 VPN 接口(本地客户端拿流量,而非标准连远端服务器)的需求旺盛,操作系统估计可能支持一下,我觉得可以看看 Google Android 的未来计划,VPN 客户端自己没必要折腾分流,感觉设计不太合理。 |
16
shulin 2023-07-23 15:00:51 +08:00 via Android
A 和 B 都需要具备公网 ip 并部署 socks5 代理协议的情况下可以使用这个软件实现 https://play.google.com/store/apps/details?id=com.lazybean.vpnperapp
|