搭建zerotier互联互通

接上一篇文章打通路由实现异地组网

Posted by 浅唱 on January 28, 2024

需求背景

继上一篇文章自建 zerotier 的 Planet 服务器,疯狂安利朋友一起使用。
被我打动之后,他实现了我之前一直未能实现的需求:与终端内部网络进行互联互通
简单说就是 类似 npx,frp 等,实现内网穿透功能,但 Zerotier 更倾向于网络路由的互通与桥接共享

历史探究

原先的构思在路由规则上,假若数据包到达了路由器之后,通过路由器到达内网的 IP,内网 IP 响应之后到达路由器,通过路由器再传送到 Zerotier 虚拟网。
之前一直纠结在末端的内网 IP 响应之后,由于没有正确的路由表导致数据包无法回到路由器,或者回到路由器之后无法进入 Zerotier 虚拟网。

再无限次失败的尝试后,我们分析了重点如下:
中间设备,核心(NAT 转发,IP 转发)

  1. 子网路由要配置回程路由
  2. 中间设备要动态 NAT(Linux、Win)

非路由设备内网互通的尝试

第一种

第二种

https://www.nuomiphp.com/t/6446232d4a9f51010c3e5424.html

  1. 真实网卡 (Wifi 或以太网) 适配器 属性 共享 允许其他 XX 选 Zerotier One 的虚拟网卡 确定
  2. Zerotier One 的虚拟网卡 设置 Ipv4 为控制台的 IP 地址

成功解决

非路由设备内网互通

Windows

  1. 开启路由转发功能 (并不需要)
  2. 开启路由服务 RemoteAccess
  3. 真实网卡 (Wifi 或以太网) 适配器 属性 共享 允许其他 XX 选 Zerotier One 的虚拟网卡 确定
  4. Zerotier One 的虚拟网卡 设置 Ipv4 为控制台的 IP 地址 Linux
  5. 打开路由转发功能
  6. 开启某网卡的 NAT 功能 iptables -t nat -A POSTROUTING -o ovs_eth0 -j MASQUERADE 自行持久化
  7. 套件安装
  8. dokcer 安装

局限:转发设备并不是路由器网关,所以路由器没有回程路由,该方式转发的内部网络无法访问 Zerotier 虚拟网,而反之则可以访问。 路由效果示例: 正向访问:192.168.1.2(本地网络)->192.168.1.1(本地路由器)/10.0.0.2(本地路由器在虚拟网中)->10.0.0.3(对端桥接设备)/192.168.2.2(不一定是路由器)->192.168.2.3(对端内网设备) 反向访问:192.168.2.3(对端内网设备)->192.168.2.1(对端网络路由器)->发送到公网中,无法路由

路由设备内网互通

Openwrt

  1. 安装配置好 Zerotier 服务
  2. 创建接口 不配置协议 Ip 地址在ifconfig查看
  3. 创建新的区域 必须打开 IP 动态伪装
  4. 在 Zerotier 控制台配置好路由

最终效果:全网段互联互通,路由器下的设备无需加入虚拟网络,即可通过路由器访问虚拟网络中的任意位置,而虚拟网络也可以访问到本路由下的任意位置。
路由效果示例:192.168.1.2(本地网络)->192.168.1.1(本地路由器)/10.0.0.2(本地路由器在虚拟网中)->10.0.0.3(对端桥接设备)/192.168.2.1(路由器)->192.168.2.3(对端内网设备) 响应:192.168.2.3(对端内网设备)->192.168.2.1(对端路由器)/10.0.0.3(该路由器在虚拟网中)->10.0.0.2(本地路由器)/192.168.1.1->192.168.1.2(本地网络)

最终效果

参考文章

https://zhuanlan.zhihu.com/p/383471270 https://post.smzdm.com/p/adwgkopd/ https://blog.csdn.net/weixin_44647835/article/details/109616688