NAT打洞组网软件的使用体验(ZeroTier)
总结了近期使用 ZeroTier 等 NAT 打洞组网软件的折腾历程,内容包括官方服务使用效果及自建 Planet + Moon 的使用感受。
缘由
之前曾说过移动取消了出租屋的公网 IPv6:
春节期间回老家,为了保持对出租屋设备的管理并满足数据传输需求,遂调研了一波常见的内网穿透、NAT打洞组网软件方案,最终选择了两款成熟的方案部署互为备份,同时增加了一个 Fallback:
- 方案1:ZeroTier 组网
- 方案2:Tailscale 组网
- Fallback:花生壳
初期测试时,Tailscale 打洞效果不佳,因此便被放弃了,后续主要在折腾 ZeroTier。
最近工作日都在公司宿舍居住,同样使用 ZeroTier 与出租屋进行虚拟组网,因此本文覆盖了如下应用场景:
- 外地电信/联通与北京移动打洞组网
- 本地北京移动互相打洞组网
我将使用情况记录下来,以供其他人参考。
拓扑结构
这是我在出租屋的网络设备简易拓扑图:
我在 OpenWrtVM 上安装了 ZeroTier 客户端,并把 NAT、防火墙之类的该开的开,该放行的放行,使其具备转发流量到内网其他设备的能力。
为了实现流量转发,还需要在 ZeroTier 管理面板的 router 设置中,将 192.168.5.0/24 的流量转发到 OpenWrtVM ZeroTier 的 IP 上。
使用结果
外省联通/电信
春节期间,组网第一天,老家的联通和出租屋的北京移动并没有打通,二者通过 ZeroTier 的官方 Planet 和 Moon 交换数据,延迟很高。
组网第二天,联通和北京移动互相打通了(原因不明),数据交换可以跑到一方上行的最大值:
使用 AppStore 商店的 ZeroTier,借由中国电信移动数据,手机也可以和出租屋的北京移动打通。
北京移动互访
最近住在公司宿舍,宿舍内同样是北京移动。
在宿舍的北京移动下,尝试 ZeroTier 与出租屋北京移动组网,死活打不通,只能走官方的直连,延迟 500+ms,且数据交换带宽只有 200 多 KiB。
多次尝试组网以及更换其他类型软件(如 Tailscale、自建 Headscale 等)均无果。
最终选择了自建 ZeroTier Planet + 自建 ZeroTier Moon 的方案,Planet 使用海外服务器,Moon 使用国内服务器。
通过国内服务器 Moon 中转,两个物理上相距不过 40 公里的北京移动延迟如下:
因原理所致,带宽受限于国内 Moon 节点的最大上/下行带宽。
当然,自建 Planet 服务器并不是必须的,降低延迟只需要自建 Moon 即可。