frp 很多人都了解,是一个用于内网穿透的高性能的反向代理应用,简单点说就是可以把 NAT 后面的某台机器的端口转发到公网 IP上去,类似 ngrok 或者花生壳内网版,好处是可以自建。
UDP 打洞是一种 NAT 穿透技术,与上面 frp 的区别在于,frp 的转发模式本质是通过具有公网 IP 的服务器 M
来进行流量转发(frp 也提供 xtcp 模式来进行 NAT 穿透,但是成功率太低,效果不佳),这样如果服务器 M
的带宽有限,就会成为传输时的瓶颈,无法有效利用全部带宽。
Zerotier 就是利用 UDP 打洞来实现内网穿透的工具,而且相比其他工具成功率更高、部署更简单
zerotier专业名词有
PLANET 行星服务器,Zerotier 根服务器
MOON 卫星服务器,用户自建的私有根服务器,起到代理加速的作用
LEAF 网络客户端,就是每台连接到网络节点。
由于 ZeroTier 的官方 moon 中转服务器在国外,国内客户端可能出现使用延迟大,甚至出现访问不了的问题。可以自己搭建 moon 中转服务器,来实现稳定的服务(需要公网ip)。
注意:
- 1.2.4 版本之后的 ZeroTier 才支持 moon 服务器。
moon 安装 ZeroTier 并加入虚拟网络#
请参阅:ZeroTier 内网穿透 。
moon 服务器配置#
- 进入 ZeroTier 配置文件目录。
cd /var/lib/zerotier-one
- 生成 moon.json 签名文件。
sudo -s zerotier-idtool initmoon identity.public >>moon.json
- 编辑
vim moon.json
可以看到如下信息:
moon.json
注意:记录下 moon.json 文件中的 id 。
- 修改信息。找到
"stableEndpoints": []
。添加"IPv4地址/9993"
或者"IPv4地址/9993","IPv6地址/9993"
。示例:
"stableEndpoints": ["1.2.3.4/9993","2001:abcd:abcd::1/9993" ]
- 生成 .moon 签名文件
zerotier-idtool genmoon moon.json
显示:
wrote 0000006xxxxxxxxx.moon (signed world with timestamp 15xxxxxxxxxx7)
- 创建 moon 结点文件夹。
mkdir /var/lib/zerotier-one/moods.d
- 将签名文件复制到 moods.d 文件夹中
cp 0000006xxxxxxxxx.moon moons.d/
- 重启 ZeroTier 服务
/etc/init.d/zerotier-one restart
设备连入 moon 服务器#
自动配置#
- 输入命令:
sudo zerotier-cli orbit [moon.json 文件中的 id] [moon.json 文件中的 id]
- Windows 有一点不同,需要使用管理员权限的 PowerShell 输入:
zerotier-cli orbit [moon.json 文件中的 id] [moon.json 文件中的 id]
手动配置#
各个系统平台下 ZeroTier 目录位置 :
Windows: C:\ProgramData\ZeroTier\One
Macintosh: /Library/Application Support/ZeroTier/One (在 Terminal 中应为 /Library/Application\ Support/ZeroTier/One)
Linux: /var/lib/zerotier-one
FreeBSD/OpenBSD: /var/db/zerotier-one
- 在对应系统平台下的 ZeroTier 目录位置,创建 moods.d 文件夹。
sudo mkdir /var/lib/zerotier-one/moods.d
- 将 moon 服务器生成的 0000006xxxxxxxxx.moon 拷贝到 moods.d 文件夹下。
- 重启 zerotier-one 服务。
- Linux :
/etc/init.d/zerotier-one restart
- Windows :
- 按下 windows键+r ,打开 “运行” 窗口。
- 输入 services.msc 回车。
- 找到 ZeroTier One 服务,右键选择 “重新启动” 。
- Linux :
检测生效#
- 在非 moon 的客户端,输入命令:
zerotier-cli listpeers
- Windows 有一点不同,需要使用管理员权限的 PowerShell 输入:
zerotier-cli listpeers
如果出现如下情况:
- moon 服务器的 ID 、IP 地址出现在列表中,证明联通 moon 服务器。
200 listpeers <ztaddr> <path> <latency> <version> <role>
...................
200 listpeers 6xxxxxxxxx [moon IPv4地址]/60723;11450;11405 -1 1.4.6 MOON
...................