Zerotier + Openwrt异地组网高阶配置
文章介绍了通过Zerotier实现局域网互访的方案。作者最初考虑使用frp+openvpn,但因配置复杂而转向Zerotier。方案包括注册Zerotier、部署Moon服务器、客户端加入网络并连接Moon等步骤,并提供进阶玩法如在Openwrt上安装Zerotier以实现两个局域网的所有主机互相访问。 2025-2-9 06:25:18 Author: zgao.top(查看原文) 阅读量:12 收藏

和朋友一起协同开发,需要打通双方的局域网互访,所以考虑到vpn的场景。一开始考虑frp+openvpn的实现。frp实现点对点穿透,openvpn负责组网。但是感觉这样配置较为繁琐,双方都需要部署frp和openvpn,体验不是很友好。

探索了多种方案最终选择了Zerotier,一个自带P2P打洞的vpn,同时满足需要。只需要自建一台有公网ip的moon服务器就可以高效实现各个zerotier节点之间的打洞。

注册Zerotier

https://my.zerotier.com/network

创建一个网络后,记下network ID。后面其他zerotier的客户端需要先加入这个ID才能进入这个vpn网络中。

部署Zerotier Moon服务器

因为Zerotier官方的根服务器是在国外的,如果不自建Moon服务器,P2P打洞的效率会非常低。这里随便开一台有公网ip的云服务器部署zerotier Moon服务即可。

# 安装
curl -s https://install.zerotier.com | sudo bash

# 启动服务
sudo systemctl start zerotier-one
sudo systemctl enable zerotier-one

# 生成随机的 root 身份令牌
sudo zerotier-idtool generate identity.secret identity.public

配置 controller

# 创建配置目录
sudo mkdir -p /var/lib/zerotier-one/controller.d

# 配置身份信息
sudo cp identity.secret /var/lib/zerotier-one/
sudo cp identity.public /var/lib/zerotier-one/

# 启用 controller 功能
echo '{"settings":{"primaryPort":9993},"controller":true}' | sudo tee /var/lib/zerotier-one/local.conf

# 重启服务
sudo systemctl restart zerotier-one

创建Moon配置

cd /var/lib/zerotier-one
sudo zerotier-idtool initmoon identity.public > moon.json
sudo zerotier-idtool genmoon moon.json
sudo mkdir moons.d
sudo mv *.moon moons.d/
systemctl restart zerotier-one
zerotier-cli info

注意:zerotier默认是9993端口,需要在云控制台放行这个端口。

客户端加入Zerotier网络并连接Moon

https://www.zerotier.com/download/

以Linux / Macos 命令行为例。先在ZeroTier官网获取该网络的16位网络ID,加入网络。

zerotier-cli join <16位网络ID>

让客户端连接到我们自建的moon服务器。这里使用moon ID两次是正确的。

zerotier-cli orbit <MoonID> <MoonID>

如何判断有没有加入成功?大概等待10s左右执行命令。

zerotier-cli listmoons
zerotier-cli listpeers
ifconfig

进阶玩法:Openwrt安装Zerotier

在单台主机上安装Zerotier只能实现两个远程局域网中的节点互相通信,怎么才能实现两个局域网的所有主机互相访问呢?

Post Views: 2

赞赏

微信赞赏支付宝赞赏


文章来源: https://zgao.top/zerotier-openwrt%e5%bc%82%e5%9c%b0%e7%bb%84%e7%bd%91%e9%ab%98%e9%98%b6%e9%85%8d%e7%bd%ae/
如有侵权请联系:admin#unsafe.sh