一、资源准备

1.1 简介

ZeroTier 是全球的智能可编程以太网交换机。它允许所有联网设备、虚拟机、容器和应用程序进行通信,就好像它们都位于同一物理数据中心或云区域一样。

1.2 构建网络

  • 注册:在官网进行注册,本文直接通过 Google 账户进行登录.
  • 创建网络:登陆后点击网页中央的 Create A Network 按钮构建网络,默认为私有网络,需要手动确定成员.
  • 设置网络:在下方的虚拟局域网列表中找到刚创建的网络,修改名称,在 IPv4 Auto-Assign 中修改局域网网段,防止和真实地址冲突.
  • 记录 Network ID ,以供后续部署使用.

二、部署

2.1 服务器端部署

  • 在服务器中安装并配置网络
1
2
3
4
5
6
7
8
9
# install
curl -s https://install.zerotier.com/ | sudo bash

# config auto start
sudo systemctl start zerotier-one.service
sudo systemctl enable zerotier-one.service

# join Zerotier Network
sudo zerotier-cli join abfd31bd47a5b0bd Your-Network-ID

2.2 用户端部署

  • 下载并安装 Zerotier windows 客户端
  • 在托盘中右键 Zerotier 图标, join network ,输入 Network ID.
  • 官网个人页面中允许添加并给定 IP 地址.

2.3 moon 节点添加

  • 与服务器配置相同,首先将中转节点作为局域网成员添加.

  • 配置端口和 moon 信息.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# config moon.json
cd /var/lib/zerotier-one/
touch moon.json
sudo chmod 777 moon.json
sudo zerotier-idtool initmoon identity.public > moon.json
vi moon.json # 添加服务器公网IP "stableEndpoints": [ "xxx.xxx.xxx.xxx/9993" ]
sudo zerotier-idtool genmoon moon.json # 生成xxxxxxxx.moon文件
sudo chmod 644 moon.json

# enable firewall
sudo ufw allow 9993/udp

# enable moon
sudo mkdir moons.d
sudo mv xxxxxxxx.moon moons.d/
sudo service zerotier-one restart
scp -r moons.d username@serverZerotierIP:/home/username
  • 在服务器中激活 moon 节点
1
2
3
4
5
6
# 激活
sudo mv moons.d /var/lib/zerotier-one/
sudo service zerotier-one restart

# 验证
sudo zerotier-cli listpeers # 看到role 为 moon 的节点即可

2.4 (参考)内网单机代理

  • 通过 ip addr 获取联网的物理网卡地址 PHY_IFACE 和 zerotier 的虚拟网卡地址 ZT_IFACE.
1
2
3
4
5
6
7
8
PHY_IFACE=; ZT_IFACE=

sudo iptables -t nat -A POSTROUTING -o $PHY_IFACE -j MASQUERADE
sudo iptables -A FORWARD -i $PHY_IFACE -o $ZT_IFACE -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i $ZT_IFACE -o $PHY_IFACE -j ACCEPT

sudo apt install iptables-persistent
sudo bash -c iptables-save > /etc/iptables/rules.v4

三、参考