OpenWRT使用ZeroTier来实现异地组网的方案
OpenWRT使用ZeroTier来实现异地组网的方案
一般的异地组网方案分有两种,一种是依赖于公网地址,另一种是依赖于中心服务器。
依赖于公网地址的方案,比较常见的有OpenVPN、WireGuard、Nebula、Headscale等这类工具。
这类方案强依赖公网IP,虽然IPv4地址已经枯竭,但靠着NAT续了命,但你愿意交钱(或者交涉)的话,还是会给你分配到一个IPv4。
如果你不想交钱也可以,可以使用IPv6,但目前运营商给的IPv6是会变动的,你可以考虑使用DDNS来解决。
但IPv6还有个问题,就是运营商对此的支持力度不是很足,不够快和稳定(建议你还是交钱)。
该说说另一种方案依赖于中心服务器了,这类工具需要有服务器来支撑运行,比如ZeroTier,其他的类似ToDesk、RustDesk。
文章是基于OpenWRT搭建的,其他情况也可以做个参考,因为文章的方案使用到了ZeroTier的特定功能,没有直接使用更简单的使用方式。
PS:可能有人会对我说的ZeroTier是依赖中心服务器有异议,虽然在打洞穿透成功后流量可能已转向P2P,但没有官方的中心服务器启动都启动不了,所以我认为它是伪去中心化的。去中心的化的有Nebula、Headscale,但它们都刚需拥有公网地址的服务器协助,但所有服务是用户可以自建的,而ZeroTier关键的Planet是不可以的,也没开源。
搭建过程
先接单的介绍一下ZeroTier。
ZeroTier是一个创建虚拟局域网的工具,虚拟局域网可以将不同物理位置的设备连接到一个虚拟网络中,效果如同处于同一个局域网内。
创建虚拟局域网
在ZeroTier的官网上注册一个账号
创建一个虚拟网络
通过点击按钮创建之后,注意这个NETWORK ID,后面需要用到它。
OpenWRT安装ZeroTier
官方源这边我是没有搜索到ZeroTier的luci可视化页面,所以下文的话,有关ZeroTier我还是以全程终端命令行的方式说明。
安装ZeroTier
1 |
|
设置和启动ZeroTier
1 |
|
创建接口
在网络->接口->接口页面中点击添加新接口
可以参考上图,然后填好相关内容后点击创建接口。
配置防火墙
在网络->防火墙->常规设置中点击添加
可以参考上图,然后填好相关内容后点击保存。
将接口加入到防火墙区域
在网络->接口->接口页面中点击刚刚创建的接口的编辑按钮
转到防火墙设置中,选择分配防火墙区域
加入创建的虚拟网络
1 |
|
注意上面的xxx是在上一步在官方网页端创建的NETWORK ID。
在官方网页端添加设备
方式一可以通过查看Auth这一列是否被勾选来判断是否在此网络中验证通过。
添加其他设备到此虚拟网络中
这里以Android设备为例,其他平台的设备都可以去看下ZeroTier的官网找对应的客户端支持。
Android下载ZeroTier One应用,通过点击ADD NETWORK来加入到虚拟网络中(依然是熟悉的NETWORK ID)
小阶段结束
到此阶段,将需要组网的设备统统加入到此虚拟网络就达成了组网目的了。
如果发现网络没ping通,请考虑下是否完成相关网络设置的重启,省事的话这里建议直接重启路由器。
但我还需要实现两个功能:
- 通过OpenWRT去访问其管理下的设备
- 使用OpenWRT来当此虚拟局域网的DNS服务器
接下来再介绍我是如何设置的,可以参考一下。
让OpenWRT来当虚拟局域网的DNS与转发
设置虚拟局域网DNS
打开ZeroTier官网登陆账号点击进入相关虚拟网络
在Settings选项中设置DNS
检查接入的设备中是否使用了虚拟局域网的DNS(以Android为例)
设置虚拟局域网路由转发
这里有个要求,就是OpenWRT子网的网段要与虚拟局域网的网段不同。
打开ZeroTier官网登陆账号点击进入相关虚拟网络
在Settings选项中设置Managed Routes
参考上图的设置,按照自身实际情况去修改配置。
效果测试
效果如上图,proxy.gugu
是我在OpenWRT上设置的主机名映射。
自建流量中转Moon服务器
ZeroTier的理念是优先NAT打洞,失败的话会转向使用服务器进行流量中转。
这里用到的服务器是ZeroTier官方的服务器进行中转,但在国内的原因,速度感人。
下面会讲到自建ZeroTier的中转服务器Moon,使用自己的服务器作为Moon来进行流量中转。
正当我想写下去的时候,看到ZeroTier官网的Moon文档上写着:
warning
Using moons is now discouraged. Please contact us for advice and alternatives.
官方已经在不推荐使用Moon了,那我也不打算详细讲Moon的搭建步骤了,下面贴上官网文档方便自阅:
PS
看到官方Moon文档上的警告,不太理解为什么,在网上检索的时候看到有人说到了ZeroTier的变化…
早年一个网络节点数限制为 1000 ,后来逐步限制到 500 、100 、25 、15 个,连个用户通知都没有,真心是怀疑这个软件是不是故意这么干的(偷偷限制自建 moon 只能用官方的),逼迫用户升级到付费版本。
…五味杂陈,ZeroTier官方不会真的在让用户付费上步步紧逼吧,打算先观察一阵子,看情况再切其他方案吧。