在如今全球互联的时代,我们对于互联网的依赖程度越来越高。然而,传统的网络连接方式在某些情况下可能会受到一些限制,例如局域网的范围限制、防火墙的阻断或者设备所处的多层NAT等。但是,现在有一个名为ZeroTier的工具出现了,它为我们提供了一种创新的解决方案,可以打破这些限制,搭建一个私密的P2P网络。事实上,ZeroTier可以被看作是在互联网上搭建一个与局域网类似的网络环境。
简单来说,ZeroTier充当了一个点对点的虚拟私有网络(VPN),将你的各个设备连接在一起,使其可以直接互联,就好像它们在同一个局域网内一样。这意味着,你可以轻松地在公司使用手机访问家里的NAS,或者直接与遥远的团队成员共享文件,而无需经过繁琐的设置和第三方服务器的中转。与传统VPN相比,ZeroTier有其独特的优势。它通过使用STUN和隧道技术,允许设备直接在NAT后进行通信,绕过了繁琐的端口映射和配置。这种P2P连接方式不仅提供了更好的网络性能和安全性,还可以在跨越不同网络和地理位置的设备之间建立起即时可用的连接。
无论是远程办公、跨地域协作还是私人网络搭建,ZeroTier都为我们提供了一种简单又强大的解决方案。它彻底改变了传统网络连接的限制,为我们的数字生活带来了更大的便捷和灵活性。让我们深入探索ZeroTier,发现这个令人激动的技术如何在当今互联网时代引领我们进入全新的网络连接方式。
简单拓扑图
专有名词
PLANET :行星服务器,Zerotier 根服务器
MOON :卫星服务器,起到代理加速的作用
LEAF :网络客户端,就是每台连接到网络节点。
为什么要自建PLANET服务器
必要条件
- 具有公网ip的服务器
- 安装 docker
- 防火墙开放TCP端口 3443/9993 和UDP端口 9993
复制项目源码
git clone https://github.com/xubiaolin/docker-zerotier-planet.git
运行deploy.sh
脚本
./docker-zerotier-planet/deploy.sh
欢迎使用zerotier-planet脚本,请选择需要执行的操作:
1. 安装
2. 更新
3. 复制planet文件到当前目录
其他任意键退出
截图如下:根据提示选择即可,操作完成会自动部署
整个脚本预计需要 3-10 分钟,具体需要看网络与机型
当您看到类似如下字样时,表示安装成功
注意在此处项目里面自动启动的DOCKER镜像,因为没有数据固化,每次重启后,登录ztncui的用户名密码,以及配置信息都会丢失。我们需要删除DOCKER镜像,重新用以下命令开启。
docker rm -f -v zerotier-planet
docker volume create zerotier-app
docker volume create zerotier-one
docker run -d -v zerotier-app:/app -v zerotier-one:/var/lib/zerotier-one -p 9993:9993 -p 9993:9993/udp -p 127.0.0.1:3443:3443 --name zerotier-planet --restart unless-stopped zerotier-planet
以下是对上面命令行的详细解释:
docker rm -f -v zerotier-planet
这条命令用于强制删除名为zerotier-planet
的Docker容器,并移除与容器关联的卷(如果存在)。-f
选项表示强制删除容器,即使它正在运行。-v
选项表示同时移除与容器关联的卷。
docker volume create zerotier-app
docker volume create zerotier-one
这两条命令分别用于创建两个Docker Volume。第一个命令创建名为zerotier-app
的卷,而第二个命令创建名为zerotier-one
的卷。
docker run -d -v zerotier-app:/app -v zerotier-one:/var/lib/zerotier-one -p 9993:9993 -p 9993:9993/udp -p 127.0.0.1:3443:3443 --name zerotier-planet --restart unless-stopped zerotier-planet
这条命令用于运行一个名为zerotier-planet
的Docker容器。其中:
-d
选项表示将容器在后台运行(以守护态运行)。
-v zerotier-app:/app
选项将名为zerotier-app
的卷挂载到容器的/app
目录。
-v zerotier-one:/var/lib/zerotier-one
选项将名为zerotier-one
的卷挂载到容器的/var/lib/zerotier-one
目录。
-p 9993:9993
选项表示将主机的端口9993
映射到容器的端口9993
,用于TCP流量。
-p 9993:9993/udp
选项表示将主机的端口9993
映射到容器的端口9993
,用于UDP流量。
-p 127.0.0.1:3443:3443
选项表示将主机的端口127.0.0.1:3443
映射到容器的端口3443
,只允许本地访问。
--name zerotier-plane
t选项为容器指定名称为zerotier-planet
。
--restart unless-stopped
选项表示当容器停止后除非手动停止,否则会自动重新启动。
zerotier-planet
是要运行的镜像名称,由该名称的解析来自于Docker镜像仓库。
访问http://ip:3443
进入controller页面
默认用户名: admin
默认密码:password
根据自己情况重置密码即可。
下载 planet 文件
脚本运行完成后,会在/tmp/
目录下有个planet
文件
下载该文件以备用
客户端配置
关于客户端的配置请参阅github项目作者的介绍。
私有部署zerotier-planet服务