五分钟自建 ZeroTier 的 Planet/Controller

2021-09-03 11:05:48 +08:00
 sbilly

官方的 roots 都不在大陆地区,ZT 穿越 NAT 成功率和时延、丢包率这些网络质量有关。现在 VPS 越来越便宜了,而且 ZT 的 controller 也不太要求大带宽,自建一个 ZT 的 controller 非常有利于 NAT 穿越,搞了一个容器化的 zerotier controller (github.com/sbilly/docker-zerotier-controller),五分钟内就可以让自己的 controller 上线

目前使用的是 zero-ui 作为 controller 的 WEB 界面(缺省用户名 /密码是 admin/zero-ui),如下图。

自定义 planets

github.com/sbilly/docker-zerotier-controller 的内容复制到本地,按照你自己的需求修改 patch/planets.json,然后构建容器镜像。

{
  "planets": [
    {
      "Location": "Beijing", // planet 所在位置,其实可以是任何注释信息
      "Identity": "a4de2130c2:0:ab5257bb05cd2fb8044fe26483f6d27b57124ca7b350fb3e0f07d405c68c4416094dbc836bf62ed483072501aa3384dff3c74ac50050c1bfbb1dc657001ef6a1", // planet 使用的公钥
      "Endpoints": ["127.0.0.1/9993"] // 端点清单,使用 IP/port 格式,支持 IPv4/IPv6
    }
  ]
}

构建镜像

docker build --force-rm . -t sbilly/zerotier-controller:latest

运行

可以根据实际需求启动容器镜像,下面是几个例子:

# Run with default settings
docker run --rm -ti -p 4000:4000 -p 9993:9993 -p 9993:9993/udp sbilly/zerotier-controller:latest

# Run with custom envirments settings
docker run --rm -ti -e ZU_SECURE_HEADERS=false -e ZU_CONTROLLER_ENDPOINT=http://127.0.0.1:9993/ -e ZU_DEFAULT_USERNAME=admin -e ZU_DEFAULT_PASSWORD=zero-ui -p 4000:4000 -p 3000:3000 -p 9993:9993 -p 9993:9993/udp sbilly/zerotier-controller:latest

# Run with docker volumes
docker run --rm -ti -v `pwd`/config/identity.public:/app/config/identity.public -v `pwd`/config/identity.secret:/app/config/identity.secret -v `pwd`/config/authtoken.secret:/app/config/authtoken.secret -p 3000:3000 -p 4000:4000 -p 9993:9993 -p 9993:9993/udp sbilly/zerotier-controller:latest

其他的也可以看看 github.com/sbilly/docker-zerotier-controller

23416 次点击
所在节点    宽带症候群
56 条回复
heqirong
2021-09-03 11:39:47 +08:00
自建 Planet 比搭个 moon 的优势有哪些?
huawuya
2021-09-03 11:56:13 +08:00
以前自建的 moon,开始挺好用的,速度很快,可惜后来国内运营商对 UDP 的 Qos 丢包太严重,导致最后几乎没法用,只好改用 tinc 了,速度终于正常了,但是没有 zerotier 使用方便。
sbilly
2021-09-03 12:49:43 +08:00
@heqirong 很多现象都和 丢包、时延 有关。比如如果你没遇到 a -> moon 正常 b -> moon 不正常,那就都差不多。印象中,moon 只是参与 NAT 穿越,其他的和 moon 无关。

@huawuya 嗯嗯,ZT 是一个集程度比较高的,其他类似工具各有特点。够用就好。
Ayahuasec
2021-09-03 13:34:43 +08:00
同因为 udp 的运营商 qos 改用 tinc 的
但是现在还是很怀念 zerotier 的面板,实在太方便了,tinc 虽然自定义程度高,但是每次修改都得连上去操作
不知道 zerotier 有没有流量默认过 moon 中转的仅 tcp 模式了
szxczyc
2021-09-03 13:52:24 +08:00
我用的腾讯云➕frp 速度很快
ifwangs
2021-09-03 16:10:19 +08:00
搭建好了如何加入呢
wszgrcy
2021-09-03 16:25:12 +08:00
我昨天也写了个文章...看来是撞车了 https://segmentfault.com/a/1190000040618153
troilus
2021-09-03 17:08:26 +08:00
支持 DDNS 吗? 搭了个 Moon 结果不支持 DDNS
oneisall8955
2021-09-03 17:50:23 +08:00
小白一脸懵逼,有没有了解下上下文的资料?搭建了不知道要干嘛
jousca
2021-09-03 21:33:16 +08:00
@oneisall8955 你如果用 ZeroTier 的话就比较清楚。 类似 FRP 的内网穿透
bclerdx
2021-09-03 23:20:54 +08:00
@huawuya 怎么测试运营商 udp qos 严重?
sbilly
2021-09-03 23:41:19 +08:00
@ifwangs 和官方一样,在 web 界面上创建了 network 以后,在客户端 `zerotier-cli join` 对应的 network 即可。
@troilus 这个 moon 的概念和 ddns 无关,是 orbit 到一个 id 上去。如果 moon 没有公网地址,效果不好。
@wszgrcy 哈哈,想到一起了
@oneisall8955 可以用 zerotier 搜索下本站。是一个建立虚拟网络的软件。
ifwangs
2021-09-03 23:47:25 +08:00
@sbilly 直接 jion 的话会走自建 planet ?
sbilly
2021-09-04 15:39:53 +08:00
@ifwangs 是的。不过对应的客户端也要做一定的配置。

更新容器镜像,重新启动控制器。控制器启动后,从控制器 WEB 界面下载 planet 文件,并保存到节点的配置文件所在的目录,例如:/var/lib/zerotier-one/planet 。然后启动 zerotier-one 。
Cassius
2021-09-04 19:32:45 +08:00
好家伙原来客户端不需要修改的么.
太好了终于不用弄 moons 了
oneisall8955
2021-09-05 14:21:50 +08:00
@jousca
@sbilly

知道是内网穿透可以异地组网,zerotier 经常用,也搭建过 moon 节点

疑惑的是,项目里面有些参数不知道怎么自定义,如

identify,planet 使用的公钥

-p 端口需要多少个,这几个端口都用于什么的( 9993 好理解 4000/3000 就不懂)

identify.public/identify.secret/authtoken.secret 这几个文件该如何自定义
oneisall8955
2021-09-05 14:23:20 +08:00
@oneisall8955 另外,这是不是私有化部署 zerotier 服务端的意思?如果是,那客户端如何加入,需要做什么变动?
sbilly
2021-09-05 14:52:50 +08:00
@oneisall8955

1. identity.* 文件是 zeortier 运行时自动创建的,也可以用 zerotier-cli generate 来生成
2. “planet 使用的公钥” 就是指 zerotier planet 的 identity.public 文件中的内容。项目里面 planet.json 对应的 identity 是 patch/planet.public 和 patch/planet.secret
3. 9333 是 zerotier 的端口,3000/4000 都是 zero-ui 的端口(缺省配置的 zero-ui 只用了 4000 端口)
4. authtoken.secret 文件是 zerotier 运行时自动创建
5. 客户端加入方法可以参考一楼增加的 “客户端” 相关内容
Cassius
2021-09-05 17:57:42 +08:00
修改了 Identity 为现在的 pub key,build 好了之后,启动没问题
client 修改 plants 文件之后,连不上。。
4000 和 9333 都是通的。Endpoints 用 127.0.0.1 和公网 IP 均这个情况。
huanxianghao
2021-09-05 23:39:30 +08:00
谢谢,不过现在自建 moon 基本够用了,以后再折腾

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

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

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

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

© 2021 V2EX