内网穿透工具,自建私有Zerotier
什么是Zerotier
有时候我们可能在自己家里部署了NAS或者自己的小型服务器,但因为没有公网IP,所以我们无法在外访问它们,这就让我们只能在家里享受这些设备。而zerotier是一款内网穿透工具,让我们没有公网IP的内网能在任意地方访问。
官网描述:
ZeroTier让您可以构建几乎任何类型的现代、安全的多点虚拟化网络。从强大的对等网络到多云网状基础设施,我们通过本地网络的简单性实现全球连接。
说白了,zerotier就是创建一个以太网上的局域网,让绑定的设备可以像在局域网里一样在任何地方互相访问。
在zerotier网络体系中,有三个节点:
planet:根服务器(root server)被称为星球(planet)leaf:每一台联网设备都被称为叶子(leaf)moon:月亮(moon)是用来加速星球(planet)连接速度的,当星球(planet)无法连接或连接速度过慢时,会连接月亮(moon)
使用Zerotier
使用Zerotier也非常的简单,只需要在官网注册登录,然后创建网络。在设备端去官网下载zerotier的程序连接创建的网络即可访问家中的局域网了。
但是因为zerotier官网提供的服务有数量限制,最多只有25个,并且一直在下调。并且因为zerotier的服务器是在国外,我们连接时会有很大的延时,我们可以创建moon,但其实使用下来,设备还是会去连接zerotier官方的planet,所以自建zerotier planet就可以解除限制,并且加快速度,愉快的访问家庭局域网了。
自建Zerotier planet
本次自建zerotier planet参考的是github上的项目,感谢github上的大佬们无私奉献。
github项目:ztncuidocker-compose部署:zerotier-planetmoon转planet文件:mkmoonworld
这次部署自建跟服务器使用的是docker和docker-compose进行部署,主要参考了jonnyan大佬分享的方法,但因为我的服务器有nginx代理和域名,并且我想要指定zerotier的端口,所以做了一些修改。
获取所需文件
1 | 创建zerotier的目录 |
创建docker-compose.yml文件
1 | version: '3.0' |
创建patch.sh脚本文件
1 | !/bin/sh |
部署zerotier-planet
1 | #启动容器 |
NGINX反向代理配置
配置域名和证书
下面是简单的步骤,详情可参考部署nginx及申请TLS证书这篇文章
- 首先把域名做一条A记录,然后将域名指向服务器
- 增加
nginx配置 - 使用
certbot申请tls证书
nginx.conf配置文件
1 | server { |
Zerotier使用说明
配置zerotier-planet
访问你的域名进入
zerotier的登录页面,用户名为admin,密码是在docker-compose.yml中设置的。点击导航栏上的
Add network,起一个名字然后点击Create Network按钮点击
Easy setup按钮,进行配置设置一个网络地址范围,这块关于IP不清楚的可以自己查一下。设置完成后,开始和结束IP会自己出现,只需要点击一下输入框即可,然后点击
Submit按钮。上方的括号内是你的网络Id,配置客户端的时候使用。
配置Zerotier-leaf
在官网下载相应的客户端,这里以
windows系统为例,官网地址:https://www.zerotier.com,按照自己的设备下载客户端,然后进行安装即可。获取服务器上
planet文件。如果你指定了下载的域名,直接访问你的域名下载即可。如果没有指定,那么只需要进入/data/zerotier-planet/ztncui/etc/myfs目录,找到planet文件,将他放到自己的设备上即可。替换客户端
planet文件,进入C:\ProgramData\ZeroTier\One目录中,把从服务器下载下来的planet文件放入该目录下进行替换,原文件可以自己备份一下。重启客户端
zerotier服务,在windows搜索中搜索服务,然后找到Zerotier One服务,将它重启即可。启动
Zerotier,选择Add Network,然后将自己建立的`网络Id放入。成功加入网络后,还要去我们自建的
zerotier planet去进行授权,点击自己的网络,然后在members列表中就会看到刚刚加入的设备了,勾选Authorized即可连接。





