最近遇到一个需要在A、B、C三个不同的局域网之间互相打通的问题,目标是使这三个局域网下的设备,都能通过内网ip互相访问。
调研后发现,通过在三个网络的路由设备上安装Zerotier可以比较优雅的实现此功能。
A、B、C三个局域网中都有安装了zerotier的路由设备
本例中路由器操作系统以OpenWrt为例,假设A网段192.168.1.0/24
,B网段192.168.2.0/24
,C网段为192.168.3.0/24
在my.zerotier.com官网上创建并登录账号;
Create A Network
创建一个网络,点击生成的网络id进入设置页面,
Advanced
——IPv4 Auto-Assign
中设置zerotier的网段,
在Advanced
——Managed Routes
——Add Routers
中提前分配好A、B、C网段对应的zerotier网段
下图区域内的信息为网络ID,复制下来后面填到OpenWrt中
在OpenWrt系统下打开zerotier
管理页面,填入上面复制的网络ID,勾选启用
和自动允许客户端NAT
,然后保存&应用
网络
——接口
——添加新接口...
协议选择DHCP客户端
保存&应用
,查看接口信息,记录接口名称(下图红框部分)
网络
——防火墙
进入到基本设置
编辑区域
基本规则
点击修改
按钮,修改zerotier转发规则
自定义规则
中添加如下信息(zthxxxx替换为刚才获取到的接口名称):
iptables -I FORWARD -i zthxxxx -j ACCEPT
iptables -I FORWARD -o zthxxxx -j ACCEPT
iptables -t nat -I POSTROUTING -o zthxxxx -j MASQUERADE
登录到zerotier页面配置设备授权。勾选前面的auth复选框,进行设备允许授权
查看接口信息
,是否已经正确获取到了配置的地址
或者通过命令行执行,查看返回结果
zerotier-cli listnetworks
200 listnetworks
200 listnetworks 80xxxxxx000001 xx:xx:xx:00:00:00 OK PRIVATE zthxxxx 192.168.192.1/24
至此,第一台路由已经配置完成,另外多台类似方式设置。
在A局域网下分别ping
B、C路由的网关地址,可以看到已经打通:
ping 192.168.2.1
64 bytes from 192.168.2.1: seq=0 ttl=64 time=36.784 ms
ping 192.168.3.1
64 bytes from 192.168.3.1: seq=0 ttl=64 time=36.784 ms
至此,所以设置&验证完成~