赞
踩
对于刚使用zerotier
进行内网穿透的小白来说,首先可在官网https://www.zerotier.com/注册一个账号并登录。然后,创建一个网络
准备好网络ID,即可在各个客户端添加该ID进入子网
下面介绍各个平台客户端的安装并举例使用方式。
curl -s https://install.zerotier.com | sudo bash
安装后,配置文件目录在:/var/lib/zerotier-one
此处下载msi
文件并安装
安装后,配置文件在: C:\ProgramData\ZeroTier\One
此处下载pkg
文件并安装
安装后,配置文件在:/Library/Application Support/ZeroTier/One
mac
和windows
的软件都有图形化界面,而linux
下没有,各个平台均可使用zerotier-cli
(具有超级权限/管理员权限才能执行)加入网络
zerotier-cli join $YOUR_NET_ID
此外,也可以使用zerotier图形化界面加入
等待各个客户端加入网络后,展开网络配置界面中Members
选项卡
对加入网络的客户端一一授权,此时可发现分配的IP信息
配置完后,可以使用ping
工具在各个机器之间查看网络是否通常。至此,使用zerotier
的内网穿透宣布成功!
体验zerotier
的小伙伴可能发现,基于上述方案的网络连接在某些时候延迟极其高,这是因为zerotier
机制为UDP
打洞,实现P2P
通信,如果打洞失败(例如端口受限的NAT转换表),则只能通过第三方服务器转发数据,然而zerotier
的第三方服务器架设在国外,因此增大了网络延迟。
打洞失败的情况下,需要使用第三方服务器转发数据,zerotier
中称为moon
服务器和planet
服务器,两者均需要购买云服务器以获取固定的公网地址。下面介绍一下moon
服务器的搭建方案。
搭建Moon服务器需要你购买一台具有公网IP的云服务器(云服务器厂商每年会搞活动,3Mbps~5Mbps带宽的差不过一年90块钱左右),各个服务器厂商操作界面不同,但是都需要按照前面部分所讲的安装zerotier客户端,并在安全策略(防火墙)开启udp
的9993
端口。
这里,我们以ubuntu
系统为例。
moon
配置文件cd /var/lib/zerotier-one # 进入`zerotier-one`库目录
zerotier-idtool initmoon identity.public >> moon.json # 生成 json文件
vim moon.json
编辑配置文件,在stableEndpoints
下配置自己的公网IP以及端口,端口使用默认9993
即可moon
zerotier-idtool genmoon moon.json
目录将生成000000XXXXX.moon
文件,将这个文件移到./moons.d
文件夹(没有则自行创建)下
zerotier-one
服务systemctl restart zerotier-one.service
配置好moon服务器后,按照第1节讲的方式,将moon服务器加入到目标网络中,并记录一下moon服务器的ID,例如:
sudo zerotier-cli info
# 输出 200 info 8dd1e221fa 1.10.2 ONLINE
这里,8dd1e221fa
就是moon的id。
接下来,在各个客户端中(前提是客户端都加入了该网络)执行:
zerotier-cli orbit 8dd1e221fa 8dd1e221fa
即将moon服务器设置为数据中转服务器,此时运行:
zerotier-cli listpeers
将在控制台输出看到moon
的字样,说明配置成功,接下来使用ping
等工具即可发现链接延迟降低很多。
尽管我们搭建了Moon服务器,但是udp通信的首次链接仍然需要跨境访问,有时会带来不好的体验,这是因为要访问zerotier官方的planet服务器,细心的同学也许发现了,在使用zerotier-cli listpeers
的时候,会显示planet、moon、以及leaf,其中planet建设在境外。幸运的是,我们可以将本地的moon服务器升级为planet服务器,此过程主要涉及两个操作:
安装可参考Key Networks,这里总结一下Ubuntu系统的安装:
curl -O https://s3-us-west-1.amazonaws.com/key-networks/deb/ztncui/1/x86_64/ztncui_0.8.14_amd64.deb
sudo apt install ./ztncui_0.8.14_amd64.deb
.env
文件sudo sh -c "echo ZT_TOKEN=`sudo cat /var/lib/zerotier-one/authtoken.secret` > /opt/key-networks/ztncui/.env"
使用vim /opt/key-networks/ztncui/.env
进行编辑,继续添加一下内容
HTTPS_PORT=3443
NODE_ENV=production
更改权限
sudo chmod 400 /opt/key-networks/ztncui/.env
sudo chown ztncui.ztncui /opt/key-networks/ztncui/.env
启动服务
sudo systemctl restart ztncui
sudo systemctl status ztncui
服务启动后,即可访问ui界面。服务开启后,可以通过ssh
转发方式(ssh -f -N -L 3000:0.0.0.0:3000 YOURNAME@YOURIP
),通过访问3000
端口,此时使用的是HTTP
协议;另外,可以直接访问https://YOURIP:3443
(注意,此时应使用https
方式访问,会遇到安全访问错误,忽略即可,或者自行购买证书,按照https://key-networks.com/ztncui/#certificate进行配置)
你可以理解ztncui是将zerotier的服务套了一个壳,但是它能做到独立性。首次登录,会出现如下界面,点击右上角Login
,进行登录
首次登录,用户填写admin
,密码填写password
登录成功后,可以再次设置新密码
(可选)创建一个新的用户以及密码,并重新登录,然后将原始的admin
账户删除
首先,创建一个网络账户
创建成功后,可以在Networks
选项卡列出刚刚创建的网络
点击easy setup
进行网段配置
配置好后,记下当前的网络ID
首先,我们按照节2中,搭建好moon服务器,然后制作planet
二进制文件。
我们在https://github.com/kaaass/ZeroTierOne/releases这个位置下载可执行文件,下载好后执行
cp /var/lib/zerotier-one/moon.json ./
./mkmoonworld-x86_64 ./moon.json
mv world.bin planet
这就制作好planet
文件了
在各个客户端上,将planet
文件拷贝到配置文件目录中,然后重启。
然后加入ztncui给的网络id中,和节1的步骤大致一致。如果成功的话,执行zerotier-cli listpeers
可看到planet服务器为公网ip
sudo launchctl unload /Library/LaunchDaemons/com.ZeroTier.one.plist
sudo launchctl load /Library/LaunchDaemons/com.ZeroTier.one.plist
systemctl restart zerotier-one.service
rm -rf /var/lib/zerotier-one/identity.*
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。