【Zerotier】自建PLANET服务器内网地址连接
2023-12-13 16:54:52
之前已经完成了【Zerotier】通过docker自建PLANET服务器,但是遇到一个问题,因为各种原因,内网里面的ZeroTier Client无法通过PLANET服务器的公网地址连接,愁怀了这下。在经过多方测试验证后,可以采取重新生成一个PLANET文件来解决,具体方法如下:
环境:Ubuntu 22.04
- 安装编译组件
apt install gcc g++ -y
- 下载源码
git clone https://github.com/zerotier/ZeroTierOne
- 修改源码
找到ZeroTierOne/attic/world/mkworld.cpp
并打开,仿照mkworld.cpp
原来的代码,将我们自定义的Planet服务器添加进去。注意,需要删除或注释掉原来的Planet服务器,再增加自己的服务器,否则后续执行我们编译的可执行程序时程序会崩溃。
// =========================================================================
// EDIT BELOW HERE
std::vector<World::Root> roots;
const uint64_t id = ZT_WORLD_ID_EARTH;
const uint64_t ts = 1567191349589ULL; // August 30th, 2019
// Test.com
roots.push_back(World::Root());
roots.back().identity = Identity("填写identity.public里的字符串");
roots.back().stableEndpoints.push_back(InetAddress("服务器内网ip地址/通讯端口"));
// END WORLD DEFINITION
// =========================================================================
如果是按照之前的安装的,identity.public的位置可以通过以下去找到:
root@X-01:/home/x# docker volume inspect zerotier-one
[
{
"CreatedAt": "2023-12-13T13:56:21+08:00",
"Driver": "local",
"Labels": {
"com.docker.volume.anonymous": ""
},
"Mountpoint": "/var/lib/docker/volumes/zerotier-one/_data",
"Name": "zerotier-one",
"Options": null,
"Scope": "local"
}
]
root@X-01:/home/x# cat /var/lib/docker/volumes/zerotier-one/_data/identity.public
1316eeb56a:0:2e5ced97a6c0fd1256c4a2acd4db4bb89c2a21029cd4902252552ec5e7c67b6e14da2f3d7d11bf27d317e970a1992ddc186e48960814796a1e1fdcc6d72a1dcc
root@X-01:/home/x#
- 编译配置文件
cd ./ZeroTierOne/attic/world/
source ./build.sh
./mkworld
mv ./world.bin ./planet
- 替换客户端中PLANET文件,重启服务,内网设备即可通过内网地址去连接PLANET了。
文章来源:https://blog.csdn.net/u012153104/article/details/134972248
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!