[Linux]zerotier私有云部署moon服务实现内网穿透

一、前言

zerotier+阿里云ESC服务器+MacBook Air(M1)+openwrt

二、zerotier基本使用(直连外网zerotier公共moon服务器)

1. 注册

2. 创建网络并获取Network ID

3. 在openwrt服务中选择ZeroTier

zerotier docker配置 搭建zerotier moon_json

  • 在网络服务中新增zerotier接口,并进行如下配置

zerotier docker配置 搭建zerotier moon_linux_02

  • 地址是zerotier控制台分配给这个路由系统的ip,高级设置开启自动运行,物理设置选择zerotier创建的接口,防火墙设置如下图

zerotier docker配置 搭建zerotier moon_zerotier docker配置_03

  • 防火墙按下图所示配置,端口触发都选择lan口

zerotier docker配置 搭建zerotier moon_网络_04

  • 在自定义规则中配置
# zt7nnmu3yd换成自己系统分配的接口名字
iptables -I FORWARD -i zt7nnmu3yd -j ACCEPT
iptables -I FORWARD -o zt7nnmu3yd -j ACCEPT
iptables -t nat -I POSTROUTING -o zt7nnmu3yd -j MASQUERADE

4. 在zerotier控制台进行如下设置

zerotier docker配置 搭建zerotier moon_服务器_05

  • 勾选Allow Ethernet Bridging,并在Managed Routes中按照下图所示配置(内网IP段:192.168.77.0/24)

zerotier docker配置 搭建zerotier moon_服务器_06

5. 客户端(以macbook为例)安装zerotier并开启服务

curl -s https://install.zerotier.com/ | sudo bash
  • 在启动台就会有个zerotier客户端,点击后在状态栏,按下图所示添加Network ID并链接

zerotier docker配置 搭建zerotier moon_服务器_07

  • 别忘记去zerotier控制台将这个客户端设备勾选授权(不用勾选Allow Ethernet Bridging)
  • 在浏览器中如果能够访问家里路由器后台表示成功,或者执行sudo zerotier-cli listpeers看看是否获取到了openwrt的ip
  • 其他设备的客户端下载链接:Download – ZeroTier

三、在私有云中配置MOON服务器将zerotier节点转为国内

1. 准备

  • 一台可远程连接,具备公网ip的云服务器,这里以阿里云为例

2. 安装zerotier并配置moon服务器

  1. 安装zerotier并将服务器配置到zerotier控制台中
curl -s https://install.zerotier.com/ | sudo bash
zerotier-cli join Network ID
>> 200 join OK
  1. 配置moon服务器
# 授权
chmod 777 /var/lib/zerotier-one
# 进入zerotier文件夹并生成moon.json
cd /var/lib/zerotier-one
zerotier-idtool initmoon identity.public > moon.json
  • zerotier-cli listnetworks查看服务器在zerotier中分配的局域网ip
  • 编辑moon.json文件,填入阿里云服务器自己的公网ip,
# vim moon.json
"stableEndpoints": [ "xxx.公网ip.xxxx/9993" ]

并在阿里云后台开启入方向9993端口,切记协议类型必须是自定义udp

zerotier docker配置 搭建zerotier moon_服务器_08

# 在/var/lib/zerotier-one内执行生成命令,生成一个密钥文件000开头
zerotier-idtool genmoon moon.json
  • 在/var/lib/zerotier-one目录下,新建一个 moons.d文件夹,并将刚生成的000000xxxxxxxxxx.moon配置文件放到该文件夹
mkdir moons.d
mv 000000xxxxxxxx.moon moons.d/
  • 重启moon服务service zerotier-one restart
  • 下载moons.d文件夹scp -r yourserver:/var/lib/zerotier-one/moons.d ./
  1. openwrt连接moon服务器
  • 修改配置文件
vim /etc/config/zerotier

# /etc/config/zerotier
option enabled '1'
option config_path '/etc/zerotier'
list join 'your Network ID'
option nat '1'
  • 在/etc中创建zerotier文件夹,将moons.d文件夹复制到/etc/zerotier下,重启zerotier服务
/etc/init.d/zerotier restart
  • 执行命令zerotier-cli listpeers | grep MOON,如果有自己服务器公网ip显示表示配置成功
  1. 客户端连接moon服务器
  • 执行命令sudo zerotier-cli orbit xxxxxxx xxxxxxx加入服务器(这里的xxxx就是000000xxxxxxxx.moon)
  • 或者将moon.d文件夹转移到配置文件目录中: mv ./moons.d "/Library/Application Support/zerotier/one/"
  • 查看是否连上节点:zerotier-cli listpeers,如下图所示,显示云服务器地址和moon标识表示连接成功

zerotier docker配置 搭建zerotier moon_服务器_09

  1. 测速
brew install iperf3
# 确保路由器端开启了测速服务,这边openwrt已经开启的iperf3测速服务
iperf3 -c 192.168.77.1(路由器后台ip)
  1. 其他
  • 在mac中卸载ZeroTier one,执行命令sudo "/Library/Application Support/ZeroTier/One/uninstall.sh"

最后