原先一直在使用 n2n 组网,但是用了将近两年只见过同个局域网下和路由器成功建立过 p2p,绝大多数情况下都是在走 supernode 的转发。最近发现了 Zerotier,发现打洞效果真的超强,和 n2n 一起开的时候甚至会选择走 n2n 的连接( bushi )。但是用了几天也发现了几个问题,而且都和一个问题有关,就是 Zerotier 的中心化太强了。我个人最主要的痛点就是 Android 端不支持连接自建 Moon,而移动网络下官方的 Planet 节点几乎不可访问。但是研究了下 SDK,发现其实 SDK 本身是有 orbit 接口的,只是没有 GUI 。由于官方端是闭源的,所以就花了两天时间逆向了原客户端,自行加入了 orbit 功能。
目前做的工作:
仍在开发的功能:
项目 repo 与 apk 下载:kaaass/ZerotierFix。现在官方端的逆向结果还有待整理,欢迎各位朋友 PR 、Issue 。
1
WoodenRobot 2021-04-07 10:59:53 +08:00 via Android
因为这个原因我都转战 tailscale 了
|
2
KAAAsS OP 关于目前的 Orbit 功能:
效果等价于 `zerotier-cli orbit` ,因此还是需要设备本身能和官方 planet 通信(获取 moon 信息),这一点之后打算持久化获取到的 moon 节点信息。需要的两个参数:Moon 地址(这个好理解)、Moon 种子。Moon 种子必须可以连接到,并且有 moon 的全部信息。建议把 moon 加入目标网络,然后 orbit 的时候 Moon 地址、Moon 种子都填写 Moon 地址。 |
3
KAAAsS OP @WoodenRobot 现在可以再试试了 w
|
4
leavic 2021-04-07 11:21:03 +08:00
@WoodenRobot tailscale 没好的路由器客户端啊
|
5
WoodenRobot 2021-04-07 11:24:51 +08:00 via Android
@leavic 路由器有公网 ip 我直接 ddns,tailscale 老家没有公网 IP 的群晖连接用的
|
6
WoodenRobot 2021-04-07 11:27:58 +08:00 via Android
@KAAAsS 关注 github 了,回头再试试,主要是 zerotier 自建 moon 还得自己有服务器。tailscale 穿透效果刚刚的,基本上都能直接打洞成功,没有再用 zerotier 的动力了,特别是后面 tailscale 如果出了路由器端的话,感觉没有再用 zerotier 的必要了
|
7
gps949 2021-04-07 11:32:36 +08:00
|
8
WoodenRobot 2021-04-07 11:53:32 +08:00 via Android
@gps949 刚看到,前两天刚出的,闷声发大财🐸
|
9
wszgrcy 2021-04-07 12:03:00 +08:00 via Android
支持自建地球节点吗?也就是不连 z ?
|
11
KAAAsS OP @WoodenRobot 感谢关注:)。我自己的情况是必须要中转节点,所以目前还是选择了 zerotier 。另外 zerotier 能增加多个 moon 也很不错。
|
12
allenforrest 2021-04-07 12:58:46 +08:00 1
点赞。
我提个建议,还是建议自建 root,而不是自建 moon 。既然你已经有自建 moon 的中转服务器了,干脆就把 moon 改成自建 root server,内嵌的控制器,可以用这个 GUI 来配置和管理: https://github.com/key-networks/ztncui root server 自建好以后,用 ZeroTier One 源码里的小工具 mkworld 制作一个自定义 planet 文件(包含你自建 root 地址和节点信息)。 然后将自定义 planet 加载到 Android App 里,我扫了一眼工程里的代码,原本应该是打算支持自己选 planet 文件进去的,但似乎没实现,但照着代码里的逻辑,其实就是把 planet 文件预置到 getActivity().getFilesDir() 里就行,ZT Service 初始化 Node 时候会自动去读 planet 文件,也就实现了全套自建的目标。 自建 root 相比官方 root + 自建 moon 还是会有更好的体验的,毕竟 Node 在入网时候不用和官方 root 打交道了,relay 节点选择时也不会再考虑官方 root 了。 |
13
oneisall8955 2021-04-07 13:01:30 +08:00 via Android
墙裂支持
|
14
oneisall8955 2021-04-07 13:14:08 +08:00 via Android
moon 怎么填麻烦出个 Demo ? win 和 linux 复制 xxx.moon 文件到的 moons.d,安卓的怎么弄(=_=)
|
15
KAAAsS OP @allenforrest 感谢提醒~刚刚正好在研究这个。我原定的计划是下一步支持 moon 配置文件,这样就能初步做到不经过 zerotier root server 了。直接修改 root server 确实更加彻底,完全不去依赖 zerotier root 。
不过代价就是,需要一系列自建的基础设施。我感觉还是要理清楚两个线路: 1. 完全脱离 zerotier root:比较复杂。需要自己完成配置分发、建立 root 。大概可以搞一个 docker 解决,需要一个 root + ztncui 就行。 2. 通信时脱离 zerotier root:相对简单,对于无法获得 moon 配置的情况,可以直接预制 moon 配置文件。可以不需要 ztncui,只通过官方 controller 分发配置(但有个前提,需要让 moon 节点连接官方网络)。 我个人感觉解决方案 1 更适合建造国内的公共镜像?解决方案 2 又看起来有点迂回。我目前的想法还是先做到解决方案 2,然后实现一个 docker 让解决方案 1 的配置变得容易。 |
16
KAAAsS OP @oneisall8955 在右上角的设置里选择“入轨”。之后添加一个配置,两处都填写你的 moon 地址即可。
|
17
826540272 2021-04-07 14:53:30 +08:00 via Android
都打洞的啊,能联通就行
|
18
826540272 2021-04-07 14:55:02 +08:00 via Android
看了下 实际意义应该仅限于两端都是对称性 nat 的网络环境。
|
19
oneisall8955 2021-04-07 15:28:43 +08:00
@KAAAsS #16 刚刚试了下,就是 moon 的 id ?,如 00000f12345.moon 那就填 f12345
|
20
oneisall8955 2021-04-07 15:29:54 +08:00
@oneisall8955 #19 PSS,试了下终于 4G 移动卡,终于打洞成功流程访问内网
|
21
KAAAsS OP @oneisall8955 对的
|
23
Tokin 2021-04-07 15:53:02 +08:00
收藏,之前因为移动网络打洞完全不成功,直接走 frp 了,但是 frp 服务器带宽很小,所以速度很慢,如果能打洞成功久舒服了。
|
24
efaun 2021-04-07 16:16:43 +08:00
关注了
|
25
gy6221 2021-04-07 16:54:30 +08:00
@WoodenRobot 请问下 tailscale 在多线接入的环境下表现如何?能手动指定线路优先级吗
|
26
mgrddsj 2021-04-07 16:58:36 +08:00
好久之前就想做个完整功能的 Zerotier Android 客户端了,无奈技术太菜、文档不是很清晰一直无从下手。支持楼主!
|
27
gps949 2021-04-07 22:50:26 +08:00
@KAAAsS #15
你说的方案 1 其实很简单,zt 官方开源代码中有给 make world 的脚本,可生成 earth 配置数据,以及可由其进一步生成 planet 文件。 对于 linux/win/mac 平台直接使用官方程序+planet 文件即可。之前搞过 zt+ztncui 自建,奈何没 zt 的 ios 客户端开源代码,自己搞不定 ios,无法满足自己实际使用需求,于是就把自建 earth 扔那里荒废了。 另外,lz 搞的国内貌似已经有商业团队搞过 zt 的自建山寨版了(零遁,没用过,非广告,利益无关) |
28
KAAAsS OP @gps949 #27
我今天测试了下,确实如你所说,方案 1 挺简单的。我现在的计划是给 Android 端加上 planet 配置功能,然后搞一个 docker-compose 完成 zt+ztncui 的部署与 planet 文件生成,做到一键部署。IOS 操作难度相对来说比 Android 大好多,而且我也没有开发机所以只能作罢 TAT 。 自建 zt 的商业团队我确实不知道国内有,但是国外有我是有所了解的。不过我搞这个 repo 的主要目的还是想开源,方便有想法的朋友可以用较低的成本付诸实践 XD |
29
xumng123 2021-04-08 08:37:50 +08:00 via iPhone
能帮升级 chongshengB 的固件升级一下 1.6.4 版本 zerotier 吗,加入 moon 的支持?
试了一下编译失败了。github:xumng123 |
30
qq7790586 2021-04-08 10:32:48 +08:00
@xumng123 #29 lean 大佬的潘多拉固件有自带了 zerotier 的,具体什么版本忘记了。
https://www.right.com.cn/forum/thread-3135031-1-1.html |
31
KAAAsS OP @xumng123 不需要重新编译,我刚刚看了一眼,在 [zerotier.sh]( https://github.com/chongshengB/rt-n56u/blob/master/trunk/user/zerotier/zerotier.sh#L34) 的 `add_join` 行后面增加复制 moon 文件的指令即可。比如:
``` mkdir -p $config_path/moons.d cp 你的.moon 文件路径 $config_path/moons.d ``` |
32
allenforrest 2021-04-08 12:40:58 +08:00
@KAAAsS iOS 可以连 Android 开的热点,通过 Android 的自建 ZT 入网
|
33
KAAAsS OP @allenforrest 槽,那也太折腾了(
|
34
xumng123 2021-04-09 07:30:40 +08:00 via iPhone
@KAAAsS 已经 ok 了,加入了 zerotier 加入 moon,支持了 vless+xtls 。github:xumng123
|
35
feast 2021-04-10 11:39:01 +08:00
eell done
|
36
fc790 2021-05-11 10:42:08 +08:00
请问下如何生成 planet 文件呢,通过楼主的工具成功将 moon.json 转化为了 world.bin 并且在安卓机上用上了。我自己是建好了 zt+ztncui 的,现在要是能在官方 windows zt 客户端上把 planet 替换了,是不是就完全不用经过官方的 planet 了
|
40
KAAAsS OP @rinex20 并不能直接合并(其实理论上可以,但是代码没写,我记得大概只要去掉第二个文件前两个字节就能合并),建议提取其中的设置到同一个 moon.json (可以接受数组),然后生成就行。
|
41
wszgrcy 2021-09-02 10:31:17 +08:00
我在虚拟机里改了 ip 后编译的,但是为啥用命令查查不到我改的 ip...原来默认的是自带几个的...
``` chenl@chenl-VirtualBox:~/桌面 /ZeroTierOne$ sudo ./zerotier-cli listpeers 200 listpeers <ztaddr> <path> <latency> <version> <role> 200 listpeers 3a46f1bf30 - -1 - PLANET chenl@chenl-VirtualBox:~/桌面 /ZeroTierOne$ sudo ./zerotier-cli peers 200 peers <ztaddr> <ver> <role> <lat> <link> <lastTX> <lastRX> <path> 3a46f1bf30 - PLANET -1 RELAY chenl@chenl-VirtualBox:~/桌面 /ZeroTierOne$ ^C chenl@chenl-VirtualBox:~/桌面 /ZeroTierOne$ sudo ./zerotier-cli listnetworks 200 listnetworks <nwid> <name> <mac> <status> <type> <dev> <ZT assigned ips> 200 listnetworks 382abc243c9a3eee abcd ee:06:b0:80:00:80 OK PRIVATE ztdqlcmgws - chenl@chenl-VirtualBox:~/桌面 /ZeroTierOne$ sudo ./zerotier-cli listnetworks 200 listnetworks <nwid> <name> <mac> <status> <type> <dev> <ZT assigned ips> 200 listnetworks 382abc243c9a3eee abcd ee:06:b0:80:00:80 OK PRIVATE ztdqlcmgws - chenl@chenl-VirtualBox:~/桌面 /ZeroTierOne$ ``` |
42
ijklmq 2021-09-02 12:23:33 +08:00
试用了下,tailscale 延迟 300ms,和 zerotier 差不多。zerotier+moon 延迟 20ms,快很多。
|
47
oocococo 2021-09-24 11:05:17 +08:00
@ijklmq tailscale 可以用自建的 derper,类似于 moon 节点,支持 ddns,因为 moon 节点配置需要用 ip 地址,不支持 ddns,之前就没用了,不知道现在什么情况? https://tailscale.com/kb/1118/custom-derp-servers/
|
50
ixinshang 2022-11-29 22:40:29 +08:00
转换工具好像,就是看到有人说可以自动分发 planet 。 还在找资料查
|
51
ixinshang 2022-12-02 00:55:46 +08:00
这个库没法发 issue,lhttps://github.com/kaaass/ZeroTierOne,就只有来 V2 问问 op 了。
使用 mkmoonworld-x86 ,将 json 文件变成 world.bin 文件的时候,文件的以下信息没法自定义或者自动更新。 ``` INFO: generating and signing id==149604618 ts==1567191349589 ``` OP 有时间给看下不呢 |
52
KAAAsS OP |
53
fy 2023-05-12 01:52:30 +08:00
效果很好,但是有一个问题就是,planet 服务器自己不能再部署一个 client 。也就是只有一台公网服务器情况下,不能实现把本地服务穿透到服务器上再反向代理。
|
54
koyong 117 天前
参考了大家的讨论,自建 planet 服务器,zerotier 打通 2 个网络,用了近 3 年使用很好。最近 zerotier 官方免费只有 10 个设备了。
|