当前位置:   article > 正文

Zerotier内网穿透全攻略

zerotier

1 zerotier安装以及使用(初出茅庐)

对于刚使用zerotier进行内网穿透的小白来说,首先可在官网https://www.zerotier.com/注册一个账号并登录。然后,创建一个网络
在这里插入图片描述
准备好网络ID,即可在各个客户端添加该ID进入子网
在这里插入图片描述
下面介绍各个平台客户端的安装并举例使用方式。

1.1 Ubuntu

curl -s https://install.zerotier.com | sudo bash
  • 1

安装后,配置文件目录在:/var/lib/zerotier-one

1.2 Windows

此处下载msi文件并安装
安装后,配置文件在: C:\ProgramData\ZeroTier\One

1.3 MAC

此处下载pkg文件并安装
安装后,配置文件在:/Library/Application Support/ZeroTier/One

1.4 使用举例

macwindows的软件都有图形化界面,而linux下没有,各个平台均可使用zerotier-cli(具有超级权限/管理员权限才能执行)加入网络

zerotier-cli join $YOUR_NET_ID
  • 1

此外,也可以使用zerotier图形化界面加入
在这里插入图片描述
等待各个客户端加入网络后,展开网络配置界面中Members选项卡
在这里插入图片描述
对加入网络的客户端一一授权,此时可发现分配的IP信息
在这里插入图片描述
配置完后,可以使用ping工具在各个机器之间查看网络是否通常。至此,使用zerotier的内网穿透宣布成功!

2. zerotier内网穿透加速——配置Moon服务器(登堂入室)

体验zerotier的小伙伴可能发现,基于上述方案的网络连接在某些时候延迟极其高,这是因为zerotier机制为UDP打洞,实现P2P通信,如果打洞失败(例如端口受限的NAT转换表),则只能通过第三方服务器转发数据,然而zerotier的第三方服务器架设在国外,因此增大了网络延迟。
打洞失败的情况下,需要使用第三方服务器转发数据,zerotier中称为moon服务器和planet服务器,两者均需要购买云服务器以获取固定的公网地址。下面介绍一下moon服务器的搭建方案。

2.1 前置条件

搭建Moon服务器需要你购买一台具有公网IP的云服务器(云服务器厂商每年会搞活动,3Mbps~5Mbps带宽的差不过一年90块钱左右),各个服务器厂商操作界面不同,但是都需要按照前面部分所讲的安装zerotier客户端,并在安全策略(防火墙)开启udp9993端口。

2.2 配置moon服务器

这里,我们以ubuntu系统为例。

  1. 初始化moon配置文件
cd /var/lib/zerotier-one # 进入`zerotier-one`库目录
zerotier-idtool initmoon identity.public >> moon.json # 生成 json文件
  • 1
  • 2
  1. 使用vim moon.json编辑配置文件,在stableEndpoints下配置自己的公网IP以及端口,端口使用默认9993即可
    在这里插入图片描述
  2. 生成moon
zerotier-idtool genmoon moon.json
  • 1

目录将生成000000XXXXX.moon文件,将这个文件移到./moons.d文件夹(没有则自行创建)下

  1. 启动zerotier-one服务
systemctl restart zerotier-one.service
  • 1

2.3 在客户端应用moon服务器

配置好moon服务器后,按照第1节讲的方式,将moon服务器加入到目标网络中,并记录一下moon服务器的ID,例如:

sudo zerotier-cli info
# 输出 200 info 8dd1e221fa 1.10.2 ONLINE
  • 1
  • 2

这里,8dd1e221fa就是moon的id。
接下来,在各个客户端中(前提是客户端都加入了该网络)执行:

zerotier-cli orbit 8dd1e221fa 8dd1e221fa
  • 1

即将moon服务器设置为数据中转服务器,此时运行:

zerotier-cli listpeers
  • 1

将在控制台输出看到moon的字样,说明配置成功,接下来使用ping等工具即可发现链接延迟降低很多。

3. Moon服务器升级为Planet服务器——ztncui 安装(登峰造极)

尽管我们搭建了Moon服务器,但是udp通信的首次链接仍然需要跨境访问,有时会带来不好的体验,这是因为要访问zerotier官方的planet服务器,细心的同学也许发现了,在使用zerotier-cli listpeers的时候,会显示planet、moon、以及leaf,其中planet建设在境外。幸运的是,我们可以将本地的moon服务器升级为planet服务器,此过程主要涉及两个操作:

  1. 安装ztncui
  2. 配置客户端的planet文件

3.1 ztncui安装以及使用

3.1.1 安装

安装可参考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
  • 1
  • 2
  1. 配置
    创建.env文件
sudo sh -c "echo ZT_TOKEN=`sudo cat /var/lib/zerotier-one/authtoken.secret` > /opt/key-networks/ztncui/.env"
  • 1

使用vim /opt/key-networks/ztncui/.env进行编辑,继续添加一下内容

HTTPS_PORT=3443
NODE_ENV=production
  • 1
  • 2

更改权限

sudo chmod 400 /opt/key-networks/ztncui/.env
sudo chown ztncui.ztncui /opt/key-networks/ztncui/.env
  • 1
  • 2

启动服务

sudo systemctl restart ztncui
sudo systemctl status ztncui
  • 1
  • 2

在这里插入图片描述

服务启动后,即可访问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进行配置)

3.1.2 ztncui使用

你可以理解ztncui是将zerotier的服务套了一个壳,但是它能做到独立性。首次登录,会出现如下界面,点击右上角Login,进行登录
在这里插入图片描述
首次登录,用户填写admin,密码填写password
在这里插入图片描述

登录成功后,可以再次设置新密码
在这里插入图片描述
(可选)创建一个新的用户以及密码,并重新登录,然后将原始的admin账户删除
在这里插入图片描述
在这里插入图片描述

2.2 使用

首先,创建一个网络账户
在这里插入图片描述
创建成功后,可以在Networks选项卡列出刚刚创建的网络
在这里插入图片描述
点击easy setup进行网段配置
在这里插入图片描述

在这里插入图片描述
配置好后,记下当前的网络ID

3.2 配置planet文件

首先,我们按照节2中,搭建好moon服务器,然后制作planet二进制文件。

3.2.1 制作planet文件

我们在https://github.com/kaaass/ZeroTierOne/releases这个位置下载可执行文件,下载好后执行

cp /var/lib/zerotier-one/moon.json ./
./mkmoonworld-x86_64 ./moon.json
mv world.bin planet
  • 1
  • 2
  • 3

这就制作好planet文件了

3.2.1 分发planet文件

在各个客户端上,将planet文件拷贝到配置文件目录中,然后重启。
然后加入ztncui给的网络id中,和节1的步骤大致一致。如果成功的话,执行zerotier-cli listpeers可看到planet服务器为公网ip

3 一些TIPS

  1. mac电脑重启zerotier服务
sudo launchctl unload /Library/LaunchDaemons/com.ZeroTier.one.plist
sudo launchctl load /Library/LaunchDaemons/com.ZeroTier.one.plist
  • 1
  • 2
  1. linux重启zerotier服务
systemctl restart zerotier-one.service
  • 1
  1. 连接网络失败,可以尝试删除认证文件
rm -rf /var/lib/zerotier-one/identity.*
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/549233
推荐阅读
相关标签
  

闽ICP备14008679号