说明
zerotier可以作为一款p2p的vlan内网穿透工具,功能强大且易用,同类产品还有frp和LanProxy等。最近有个朋友有创建p2p vlan的需求,在简单调研之后决定使用zerotier作为基础工具。
官方给出的使用方案比较简单。首先需要一个中心的节点用于两个内网节点的握手,该中心节点需要有一个公网IP。zerotier官网提供了中心节点相关服务,免费账户有一定的使用限制,但是由于其节点位于国外,延迟比较高,且可能还需要科学上网才能使用。除此之外,zerotier也支持自己搭建中心节点服务器,也叫做MOON服务器。下面是它的搭建步骤。
MOON服务器配置
操作系统版本是Ubuntu 18.04
, Zerotier One
版本是v1.2.10
,公网(也就是MOON服务器)地址是1.1.1.1
。
1.通过官网文档根据不同操作系统选择不同的安装方式,这里直接通过命令行安装
curl -s 'https://pgp.mit.edu/pks/lookup?op=get&search=0x1657198823E52A61' | gpg --import && \ if z=(curl -s 'https://install.zerotier.com/' | gpg); then echo "z" | sudo bash; fi
如果上述命令运行失败,那么使用下面命令
curl -s https://install.zerotier.com/ | sudo bash
2.将MOON服务器加入Zerotier局域网
虽然搭建了MOON服务器,我们还是需要借助zerotier network,也就是需要先通过zerotier官网创建一个network,并且内网节点需要使用join
命令加入该网络才能实现内网节点的互通,换句话说MOON节点只起到了加速的作用,虚拟网络的分配和管理还是需要zerotier服务端参与。
zerotier-cli join <network id>
2.生成配置文件
sudo chmod 777 /var/lib/zerotier-one # 这里为了有写入文件的权限
cd /var/lib/zerotier-one
sudo zerotier-idtool initmoon identity.public > moon.json
3.修改配置文件moon.json
,主要是添加公网IP,修改内容如下, 9993
是默认端口
"stableEndpoints": ["主机ip1/9993","主机ip2/9993"] #修改为VPS公网IP/9993
还需要注意moon.json
中的 id 值,它是MOON服务器的ID,是一个 10 位的字符串,我的为efe9e9a259
,也可以用sudo zerotier-cli info
查看,后面会用到。
4.生成moon文件
sudo zerotier-idtool genmoon moon.json
5.在/var/lib/zerotier-one
目录下新建 moons.d
文件夹中,并将生成的moon文件放到该文件夹下,我的moon文件名为000000efe9e9a259.moon
mv 000000efe9e9a259.moon moons.d/
6.重启zerotier-one
sudo killall -9 zerotier-one # 这里我们杀死相关进程后会自动重启该服务
内网节点配置
1.在内网节点安装zerotier,安装方法和上面类似,根据文档选择不同操作系统的方法进行安装即可。请参考文章《ZeroTier 无公网IP实现内网穿透》
2.将MOON节点添加到常规节点
sudo zerotier-cli orbit efe9e9a259 efe9e9a259 # 注意这里是两次根节点的ID
如果没返回200 orbit OK
的话,需要手动拷贝生成的moon文件000000efe9e9a259.moon
文件到常规节点的机器上,位置如下:
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-one
3.查看节点列表,出现根服务器的MOON节点表示成功
~ sudo zerotier-cli listpeers
200 listpeers
200 listpeers 3dfa0fd16b - -1 - LEAF
200 listpeers 8841408a2e 45.32.248.87/9993;11749;11453 252 1.1.5 PLANET
200 listpeers 9d219039f3 128.199.197.217/9993;11749;11381 390 1.1.5 PLANET
200 listpeers abfd31bd47 178.128.240.145/35368;6238;14319 509 1.2.5 LEAF
200 listpeers efe9e9a259 1.1.1.1/9993;6238;1184 36 1.2.12 MOON
4.我们再在内网节点上运行ifconfig
(windows是ipconfig
),可以看到zerotier vlan分配给其的内网IP
zt0: flags=8843 metric 5000 mtu 2800
ether 1a:42:9a:39:7d:3f
inet 10.147.18.127 netmask 0xffffff00 broadcast 10.147.18.255
inet6 fe80::1842:9aff:fe39:7d3f%zt0 prefixlen 64 scopeid 0xc
inet6 fcec:2f1a:a769:487e:c00e::1 prefixlen 40
nd6 options=201
media: autoselect
status: active
open (pid 84214)
这里的10.147.18.127
就是其虚拟局域网的IP,在另外一个局域网中通过上述过程配置另外一个节点,它的虚拟局域网IP为10.147.18.30
,两个节点通过ping
可以互相通信,说明配置成功
相关推荐
- n2n实现内网穿透,搭建虚拟局域网
- frp管理面板:FrpMgr安装及使用
- ZeroTier 无公网IP实现内网穿透详细教程(P2P高效传输)
- 关于Frp的加速方案:Nginx反向代理缓存加速HTTP/HTTPS
- Holer - 类Lanproxy内网穿透工具带WEB管理面板
- NPS - 轻量级且高性能内网穿透工具(安装使用教程)
文章作者:喵斯基部落
原文地址:https://www.moewah.com/archives/1498.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。非商业转载及引用请注明出处(作者、原文链接),商业转载请联系作者获得授权。