使用Zerotier实现内网穿透和异地组网
前言
Zerotier 是一款开源工具,可以用来构建点对点(P2P)虚拟网络
当你不在家的时候想访问家里的nas或者其他设备,但是没有公网的时候
当你想跟朋友们一起局域网联机打游戏,但是你们并不在一起的时候
Zerotier 就可以帮你解决这个问题了
注册Zerotier
官网地址:https://www.zerotier.com/
注册登录之后点击Create A Network创建网络
创建好后下面会出现一条记录
Netwrok Id我们组网的时候需要用到
安装
Linux系统安装
curl -s https://install.zerotier.com | sudo bash
Windows安装
直接去官网下载安装包进行安装
客户端加入虚拟网络
Linux加入虚拟网络
将命令中的
xxxxxxxx
替换成上面的Netwrok Idzerotier-cli join xxxxxxxx
Windows加入虚拟网络
右下角图标,右键-Join New Network,在弹出出口输入你的Network Id,然后点join
使用云服务器搭建Zerotier Moon 节点
为什么要搭建Zerotier Moon节点?
因为Zerotier 服务器在国外我们组网进行p2p连接的时候延迟比较大,官方服务器用的人很多高峰期很拥堵
我们使用国内服务器可以降低延迟,服务器不需要太大宽带,因为p2p是设备间通信不经过服务器流量,服务器宽带不会影响组网的速度
服务器安装Zerotier和加入虚拟网络(服务器也需要加入到虚拟网络)可以参考上面的Linux的操作
配置Moon
#进入 zerotier-one 程序所在的目录 cd /var/lib/zerotier-one #生成 moon.json 配置文件 zerotier-idtool initmoon identity.public >> moon.json #编辑 moon.json 配置文件 vim moon.json #将配置文件中的 "stableEndpoints": [] 修改成 "stableEndpoints": ["IP/9993"],IP是云服务器的公网IP #服务器需要开放 9993 的UDP端口 #生成 moon 文件 zerotier-idtool genmoon moon.json #将生成的 000000xxxxxxxxxx.moon 移动到 moons.d 目录 mkdir moons.d mv 000000xxxxxxxxxx.moon moons.d #000000xxxxxxxxxx.moon其中的xxxxxxxxxx是本机的节点ID #重启 zerotier-one 服务 systemctl restart zerotier-one
使用 Moon
Linux和Windows使用命令使用Moon节点,Wondows建议使用管理员权限启动Power Shell
#xxxxxxxxxx为Moon节点Id 就是上述生成的moon文件的文件名中的xxxxxxxxxx zerotier-cli orbit xxxxxxxxxx xxxxxxxxxx
查看moons
zerotier-cli listpeers
配置路由
给哪台组网设备配置路由就可以访问哪台设备内网所有设备
Destination 是 内网ip段/24 Via是组网的那台设备在Zerotier的内网ip
还需要给组网那台设备开启路由转发和防火墙设置
开启路由转发
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
防火墙设置
#查看网卡信息
ip a
#这里zt8u6z2kio为zerotier虚拟网卡
iptables -A FORWARD -i zt8u6z2kio -j ACCEPT
iptables -A FORWARD -o zt8u6z2kio -j ACCEPT
iptables -t nat -A POSTROUTING ! -o lo -j MASQUERADE
#保存配置
iptables-save
Zerotier常用命令
#加入网络
zerotier-cli join xxxxxxxx
#离开网络
zerotier-cli leave xxxxxxxx
#获取本机节点Id和查看服务状态
zerotier-cli status
#加入Moon节点
zerotier-cli orbit xxxxxxxxxx xxxxxxxxxx
#查看moons
zerotier-cli listpeers
#查看所有的网络
zerotier-cli listnetworks
2 comments
大佬 666
123123