是否有可能 Zerotier-One 直接在 Android 设备上运行?

2022-06-30 10:43:02 +08:00
 gam2046

准备


问题

虽然看起来组网成功,并且 zerotier controller 也显示设备已连接,并正确显示版本等信息,但实际上网络访问并不通。

通过分析(实际就是加输出日志),确认 zerotier正常进入此循环,同时也未发现 zerotier 对系统有其他额外要求,只需要存在 tun 设备即可。


猜测

那目前看起来比较有可能的原因,是 Android 中对 tun 的行为有所不同。常规 Android 开发中,只有 VpnService 会经由一系列检查以及用户授权后,打开 tun 设备,变更路由表,并将句柄返回给应用层。

由此猜测可能是 Android 对 tun 有一些魔改,但是我翻阅了一下(更多的可能是水平不够),AOSP 里没看到一些可疑的操作。

所以请问一下大佬,在有 root 的情况下,有没有可能直接在 Android 设备上使用 zerotier ,而不需要装个 APP 呢?( APP 有些设置在 UI 中也没有)

10621 次点击
所在节点    Android
28 条回复
newuser666
2023-11-01 13:47:09 +08:00
@gam2046 大佬大佬,可以给点 RPDB 样例吗,我在 github 上看你的回答说修改了一些代码,方便教一下怎么做到吗😅
gam2046
2023-11-01 19:29:28 +08:00
@newuser666 #20 ,大概的意思就是这样,归根到底,其实就是因为没有走主路由表。

https://gist.github.com/Lua12138/77252e88857f34432e297bfcde7adc74
newuser666
2023-11-01 22:28:29 +08:00
@gam2046 打扰了大佬,小白一个,看不懂 C 代码😂,我表达的不清楚,我看了 git 上的回复,我需要的是这个命令的正确用法 `ip route add table $your_selected_table_id $cide/$prefix dev $zt_iface_name proto kernel scope link`,我看了那位大佬给的文档和你写的回复,但是还是不太清楚应该怎么写。我试着替换了命令中的变量为自己的网段、掩码和接口名,your_selected_table_id 写了个 252 ,但是并没有用处,希望大佬能给个正确的样例。
另外不知道什么原因我用你的 dockerfile 编译了一个 1.12.1 版本,可以执行`zerotier-one -d $homepath` 但是无法执行 `zerotier-one -q $homepath`,也就是 cli 命令执行报错`./zerotier-cli: missing port and zerotier-one.port not found in /var/lib/zerotier-one`,读取的 home 路径并不是我指定的路径,只能通过 http 请求的形式加入网络,这个是我编译的代码问题吗。
newuser666
2023-11-06 17:53:51 +08:00
#23 cli 报错从提案中找到了答案,有个隐藏选项文档没写,需要加上 `-Dhomepath`也就是`zerotier-one -q -D$homepath`,但是默认路由依然没生效
gam2046
2023-11-06 20:54:24 +08:00
@newuser666 #22 原则上是关系不大的,只要不是 254 理论上都可以,试试看 table id 255 ,或者从 1 开始试试。

作为 cli 使用如果你不使用软连接的话,根据 ZT 的代码( https://github.com/zerotier/ZeroTierOne/blob/1bd2fecbf6a0419740b33ce95ff6ec4ce33ebd88/one.cpp#L132 ),你需要这样手动指定工作目录,例如:

./zerotier-one -D$homepath -q info

当然你也可以在编译时,直接修改其默认的工作目录

https://github.com/zerotier/ZeroTierOne/blob/1bd2fecbf6a0419740b33ce95ff6ec4ce33ebd88/osdep/OSUtils.cpp#L447
newuser666
2023-11-08 16:37:50 +08:00
@gam2046 #25 感谢大佬的回复,您给的方案有效,这几天逛 github 的时候发现个简单粗暴的方法,`ip rule add from all lookup main pref 1`,使用后连自定义路由都不需要添加了🤣🤣,不过暂时还不清楚提升 main 表优先级有没有弊端。
ynkcc
2023-11-18 19:59:18 +08:00
安装楼主的方法,成功在部署了 zerotier 。结果有几台设备连不上默认的根节点。不打算折腾 moon 节点和自建 planet 。准备去试一下 tailscale 能不能编译在 Android 使用
ynkcc
2023-11-18 23:30:22 +08:00
算了,还是自建 planet 吧

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

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

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

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

© 2021 V2EX