两台 OpenWrt 通过ZeroTier插件实现异地组网配置教程

ZeroTier是一款非常简单易用的新手小白都会的内网穿透工具,只需要简单几步的配置,就能实现虚拟局域网的组建,相信不少朋友的路由器内都有这个插件,但是应用的不多。Zerotier是一个开源,免费,跨平台,而且适合内网穿透互联的傻瓜配置虚拟 VPN LAN,支持Windows、MacOS、Linux、IOS、Android及常见NAS等多平台。

实现原理非常简单,只要需在访问端和被访问端安装上ZeroTier应用就行,支持多平台。本文是使用 OpenWrt 演示,通过两台OpenWrt软路由实现异地组网。


# 环境

异地两台 OpenWrt 软路由:实现异地组网

  • 软路由A:网段192.168.1.0/24
  • 软路由B:网段10.10.10.1/24

第一步 创建zerotier账号

账号注册

先注册一个帐号, ZeroTier 注册地址:https://my.zerotier.com/network

OpenWrt通过ZeroTier插件实现异地组网配置教程 - 科学上网 IYIO.NET

点击 Sign Up 进行注册,也可以用第三方账号登录(Google、GitHub、Microsoft)


创建一个网络

登陆账号之后出现的界面如下,点击 Create A Network 创建一个网络

OpenWrt通过ZeroTier插件实现异地组网配置教程 - 科学上网 IYIO.NET
OpenWrt通过ZeroTier插件实现异地组网配置教程 - 科学上网 IYIO.NET

ZeroTier 管理端设置

点击刚创建的Network ID进入开始配置,Name 随便设置。默认的访问控制是 Private 模式

OpenWrt通过ZeroTier插件实现异地组网配置教程 - 科学上网 IYIO.NET
  • Private(必须授权节点成为成员)设备请求加入后,需要在管理端通过设备请求
  • Public(任何节点都可以成为成员。成员不能被取消授权或删除。)任何设备都可随意加入网络,不推荐

设置页面继续往下看,在 Advanced 这里,选择一个 虚拟网段,我这里选择 192.168.192.0/24 其它地方默认即可。

OpenWrt通过ZeroTier插件实现异地组网配置教程 - 科学上网 IYIO.NET

Managed Routes 设置里对应上文路由器插件中的自动允许客户端NAT,意思也就是允许访问是通过路由器上网的设备 (PC、NAS等).

IPv4 Auto-Assign 是一个虚拟的自动分配的内网网段 可以理解成虚拟的dhcp 图中可以看到,允许自己设置自己喜好的ip范围 设备接入zerotier之后 会被分配一个虚拟的ipv4地址.

到这里 管理端主要的设置都已经完成了.


第二步 OpenWrt 端设置

ZeroTier 安装

如果还没安装ZeroTier,打开 istore 搜索安装,安装完打开 服务 ZeroTier。

OpenWrt通过ZeroTier插件实现异地组网配置教程 - 科学上网 IYIO.NET
安装 iStore 到 OpenWRT 官方固件

只支持 x86_64 和 arm64 设备。

opkg update || exit 1
cd /tmp
wget https://github.com/linkease/openwrt-app-actions/raw/main/applications/luci-app-systools/root/usr/share/systools/istore-reinstall.run
chmod 755 istore-reinstall.run
./istore-reinstall.run

启用 ZeroTier

OpenWrt通过ZeroTier插件实现异地组网配置教程 - 科学上网 IYIO.NET
  1. 点击启动ZeroTier按钮
  2. 根据自己需要选择自动允许客户端NAT(访问接入路由器的其他设备),这里点击允许
  3. 输入在管理端创建网络后得到的id
  4. 点击应用设置

接口信息栏查看

OpenWrt通过ZeroTier插件实现异地组网配置教程 - 科学上网 IYIO.NET

创建接口与防火墙

进入Openwrt控制面板 网络 > 接口 > 添加新接口 创建一个叫 ZeroTier 的接口

OpenWrt通过ZeroTier插件实现异地组网配置教程 - 科学上网 IYIO.NET

保存后,为 ZeroTier 创建一个专属的防火墙区域,在 防火墙设置 > 创建/分配防火墙区域 > 自定义 输入ZeroTier 回车后保存。

OpenWrt通过ZeroTier插件实现异地组网配置教程 - 科学上网 IYIO.NET

配置防火墙

进入Openwrt控制面板 网络 > 防火墙 > 区域 编辑 ZeroTier防火墙

  • 入站数据、出站数据、转发 全部接受
  • 允许转发到目标区域:lan
  • 允许来自源区域的转发:lan
OpenWrt通过ZeroTier插件实现异地组网配置教程 - 科学上网 IYIO.NET

另一台OpenWrt软路由进行一遍同样的操作。


第三步 Zerotier 网页配置

返回 ZeroTier 网站,配置页面会出现你连入的主机的信息,点击勾选授权,zerotier会自动给这两台连入网的异地主机分配一个虚拟ip,到这里直接保存配置的话你会发现两台异地的机子已经可以通过虚拟ip互相ping通了。

OpenWrt通过ZeroTier插件实现异地组网配置教程 - 科学上网 IYIO.NET

完成上面的配置后,网络就打通了,无需使用 iptables 进行 NAT。

需要直接通过内网ip互相ping通和连入openwrt的设备都ping通的话还需要如下设置,增加两条路由规则,使得本地和异地的网络都能通过分配的虚拟ip互通

OpenWrt通过ZeroTier插件实现异地组网配置教程 - 科学上网 IYIO.NET

配置完后本地192.168.1网段已经能互连异地10.10.10网段了。

OpenWrt通过ZeroTier插件实现异地组网配置教程 - 科学上网 IYIO.NET