ZeroTier在Linux下实现内网穿透及搭建moon服务器
一、ZeroTier官网注册账号
1. 注册简单,这里直接使用谷歌账号注册,登录后直接有创建好的网络
2. 记住这个Network ID
3. 点进去会有内网穿透相关信息
4. Settings中可以选内网的ip信息,随便选
5. Members中有到ZeroTier的设备信息
Address是每个设备的编号
Name/Description可以添加设备描述
Managed IPs在添加设备后会自动在第4步选的ip网段中分配一个
Physical IP是设备的实际ip地址
二、在Linux上安装Zerotier
1. 在Linux上安装有两种方式,一种是apt-get直接安装,一种是使用官方提供的脚本
apt-get直接安装
- 安装命令
- sudo apt-get install zerotier-one
- 运行Zerotier服务
- sudo systemctl start zerotier-one
- 加入Zerotier网络组,此处的NETWORK_ID为第一步中记住的NETWORK_ID
- sudo zerotier-cli join NETWORK_ID
使用官方脚本安装
- 安装命令
- curl -s https://install.zerotier.com | sudo bash
- 运行Zerotier服务
- sudo systemctl start zerotier-one
- 加入Zerotier网络组,此处的NETWORK_ID为第一步中记住的NETWORK_ID
- sudo zerotier-cli join NETWORK_ID
安装完成后会有Success出现,记住这行末尾中括号内的设备号
join加入成功后有200 join ok显示
2. 设备上安装并加入zerotier后,在第一步的Members中可以看到加入的设备
Auth处勾选,小扳手处勾选Allow Ethernet Bridging选项,会自动分配内网ip地址,加入多台设备后就实现了内网穿透和异地组网,相互之间可以通过这个分配的ip来访问
三、搭建moon服务器作为zerotier跳板
zerotier服务器节点不稳定,官方推荐使用moon服务器作为跳板加速访问
1. 注册有公网ip的云服务器,这里使用Microsoft Azure云服务器,免费使用12个月
2. 安装Ubuntu系统,在云服务器上也执行第二步,安装好zerotier
3. 搭建moon服务器
进入zerotier-one安装目录默认是/var/lib/zerotier-one
cd /var/lib/zerotier-one
生成 moon.json 配置文件
zerotier-idtool initmoon identity.public >> moon.json
编辑 moon.json 配置文件
vim moon.json
在配置文件中的"stableEndpoints": []中写入云服务器公网ip/9993,写好后需要在云服务器上放行9993端口流量,下图后一个9993端口是ipv6地址,可以不写
创建moon文件
输入zerotier-idtool genmoon moon.json后会生成一个000000xxxxxxxxxx.moon的moon文件,xxx为安装zerotier时的设备号
新建moons.d文件将生成的000000xxxxxxxxxx.moon文件移动进去
mkdir moons.d
mv 000000xxxxxxxxxx.moon moons.d
重启 zerotier-one 服务
systemctl restart zerotier-one
重启zerotier后就搭建好了moon服务器,需要记住moon服务器安装zerotier时的设备号,忘记了可以zerotier-cli info查询,200 info xxx 1.14.0 ONLINE,xxx即为设备号
4. 在其他设备上安装zerotier并加入moon服务器的节点
Linux安装zerotier如第二步所示,也需要join加入zerotier网络组,通过下面的命令加入moon服务器节点,deadbeef00为刚刚记住的moon服务器安装zerotier时的设备号,需要输入两次,空格隔开
zerotier-cli orbit deadbeef00 deadbeef00
使用命令列出所有节点信息 查看是否显示有moon节点,如果有标明搭建成功
zerotier-cli peers
Windows下在官网下载zerotier安装包安装zerotier
安装后以管理员身份打开 PowerShell,zerotier-cli join NETWORK_ID加入网络组
同样输入zerotier-cli orbit deadbeef00 deadbeef00加入moon服务器节点
zerotier-cli peers查看是否显示有moon节点
5. 全部设备接入zerotier和moon后,尝试相互ping,ping通说明组网完成
组网完成后仅有100ms的延迟
6. 如果输入zerotier-cli peers后没有显示moon节点,需要打开zerotier客户端如下设置
参考博客