这个工具是利用 NAT 打洞实现,需要有一台服务器(可以自建也可以用官方提供的)做中介。经测试打洞成功率很高,速度也不错。打洞成功后,异地的机器就像在同一个内网一样方便,访问 smb、家里的 nas、远程桌面等等,并且支持自动对内网网段进行转发(zerotier 需要配置 iptables 转发)自建服务器后感觉比 zerotier 好用。zerotier 的文档可以看 群晖NAS部署zerotier内网穿透访问

自建服务端

这个步骤可以省略,不自建可以用社区提供的免费服务器。

我安装的是 easytier 的 docker 版本。

1
2
3
4
5
6
7
docker rm -f easytier
docker run --name easytier -d \
--network host \
-e TZ=Asia/Shanghai \
--privileged \
registry.cn-hangzhou.aliyuncs.com/iuxt/easytier:v2.1.2 \
--ipv4 10.233.233.1 --network-name iuxt --network-secret 6d062b06-e3bb-40ab-849c-a4e5bc19b7ee --vpn-portal wg://0.0.0.0:11013/10.14.14.0/24

参数说明:

  • –ipv4 给服务器分配的虚拟 IP
  • –network-name 网络名字
  • –network-secret 是网络密钥,我这里使用的是生成的 uuid,这个密钥别人知道了也可以加入你的网络内,所以需要保护好。一个服务器可以让加入多个网络。
  • –vpn-portal 允许 WireGuard 接入,0.0.0.0:11013 是监听地址,10.14.14.0/24 是 WireGuard 的网段。

Windows 机器一

1
2
# -p 参数指定的是服务器的公网IP
easytier-core.exe --ipv4 10.233.233.2 --network-name iuxt --network-secret 6d062b06-e3bb-40ab-849c-a4e5bc19b7ee -p tcp://119.45.171.27:11010

Windows 机器二

1
easytier-core.exe --ipv4 10.233.233.3 --network-name iuxt --network-secret 6d062b06-e3bb-40ab-849c-a4e5bc19b7ee -p tcp://119.45.171.27:11010

群晖 nas 部署

可以加多个 -n 参数指定多个网段。

1
2
3
4
5
6
docker run --name easytier -d \
--network host \
-e TZ=Asia/Shanghai \
--privileged \
registry.cn-hangzhou.aliyuncs.com/iuxt/easytier:v2.1.2 \
--ipv4 10.233.233.11 --network-name iuxt --network-secret 6d062b06-e3bb-40ab-849c-a4e5bc19b7ee -n 192.168.1.0/24 -p tcp://119.45.171.27:11010

参数说明:

  • -n 这里写了内网的网段,意思是这个网段的 IP 通过这台机器来代理转发,在其他机器上可以直接访问这个网段的任意 IP

Windows 安装服务

1
2
3
4
5
# 指定参数安装成服务
easytier-cli.exe service install --ipv4 10.233.233.3 --network-name iuxt --network-secret 6d062b06-e3bb-40ab-849c-a4e5bc19b7ee -n 192.168.22.0/24 -n 192.168.1.0/24 -p tcp://119.45.171.27:11010

# 卸载服务
easytier-cli.exe service uninstall

生成 WireGuard 配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
# 在服务器上执行
docker exec easytier easytier-cli vpn-portal > wireguard.conf


[Interface]
PrivateKey = h3MxzS7aLWDlX6l1xAJA8wooj58N0lg6UPV+n2q7FkM=
Address = 10.14.14.10/32

[Peer]
PublicKey = Mp7H/sHXZW+NqxrtsPnEtHMWIbFWPYjyxEir3uWY3WA=
AllowedIPs = 10.233.233.0/24,10.14.14.0/24
Endpoint = 119.45.171.27:11013
PersistentKeepalive = 25