android 大佬 有偿咨询个问题。

2022-03-11 13:38:56 +08:00
 wlgqa

我用 Android 开了一个虚拟 tun ,然后通过 tun2sock 转到 tcp 上代理全局浏览,然后加密。然后我需要把代理的流量发出去,我发现我发出去的流量,似乎又发到全局的 tun 上面去了。这样就死循环了。由于我不太熟悉 Android ,网络部分是我用 golang 写的,编译成 ndk 给调用。求问,怎么把流量发出去,不走全局虚拟网卡代理,有偿咨询,解决可以发个红包,请大佬喝杯咖啡。

6425 次点击
所在节点    Android
12 条回复
duke807
2022-03-11 13:51:00 +08:00
linux 的 route 表啊
把目標代理服務器的地址指定用非虛擬的網口傳輸
madeye
2022-03-11 14:10:09 +08:00
zxjunz
2022-03-11 15:43:56 +08:00
VpnService.protect()
FranzKafka95
2022-03-11 15:47:09 +08:00
@madeye 大佬~
Goooler
2022-03-11 15:47:52 +08:00
Max 本尊出来了啊,太强了
wlgqa
2022-03-11 15:53:55 +08:00
@madeye 感谢大佬,我研究下。
shawndev
2022-03-11 16:08:00 +08:00
本来想班门弄斧回答下的,结果鲁班本人现身了。。
shawndev
2022-03-11 16:22:12 +08:00
如果是通过 go 创建的 tunfd ,外部管理连接,通过 VpnService.protect 可以处理。https://github.com/Jigsaw-Code/outline-go-tun2socks/blob/e08601a0b188ad80baf4c243c5e2f288cdd7d1e6/intra/protect/protect.go#L43-L52
shawndev
2022-03-11 16:40:07 +08:00
VpnService.protect 最终内部调用的代码和 Max 提到的相似,这是 Android Code Search 的结果 https://cs.android.com/android/platform/superproject/+/master:system/netd/client/FwmarkClient.cpp;drc=master;l=71
wlgqa
2022-03-11 16:40:32 +08:00
@shawndev 意思是我要获取 golang 创建的 client (连接目标服务的)的实际系统文件描述符 ID ,然后 Protect 这个文件描述符? 感谢大佬,方便发个 base64 收款码,请大佬喝杯咖啡。
shawndev
2022-03-11 16:45:46 +08:00
@wlgqa 是的,可以参考下上面发的 outline 项目,应该是 google 的团队开发的。https://chinsyo-blog.s3.ap-northeast-2.amazonaws.com/img/alipay/IMG_7339.PNG
q9OxQgg
2022-03-12 00:02:11 +08:00
@madeye ,非常非常感谢你放在 google play 里面的 shadowscoks ,程度无法用语言表达。那时没有别的办法表示谢意,只好购买了另外一个付费的,好像是宝莲灯。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/839660

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX