Tailscale + ZeroTier + FRP:11 台跨国设备三种组网工具的分工

2026年3月21日| 更新于 2026年8月30日| Ruichen Zhou| 约 5 分钟阅读

2026-08-30 更新:后来我不再用 ZeroTier 传文件,日常管理、SSH 和数据同步都改用 Tailscale,客户端通过自建 Headscale注册。FRP 仍运行在 vps-hk 上,保留公网入口。本文保留早期配置,说明三种工具当时分别解决了什么问题,以及后来为什么可以删掉一部分。

当时共有 11 台设备,分布在德国、中国和香港,包括笔记本、工作站、mac-mini、两台路由器、一台香港 VPS 和两部手机。不同地点的 NAT 和运营商网络差异很大,有些路由器和手机只能安装这三种工具中的一部分。

我最初同时使用三种工具:Tailscale 负责 SSH,ZeroTier 承载 Syncthing 和大文件传输,FRP 提供公网入口。三种工具的功能有重叠,这个分工是在使用过程中逐步形成的。

三种工具当时怎样使用

Tailscale 安装在需要日常管理的设备上。设备名、访问规则和 SSH 入口都放在这里,平时可以直接使用 ssh serverssh thinkpad

ZeroTier 当时用于 Syncthing 和大文件传输。一部分应用依赖局域网地址或发现功能,把这些流量放在另一张虚拟网卡上,修改 SSH 配置时不会影响正在进行的同步。

FRP 通过香港 VPS 暴露少量端口。它的延迟和转发距离都比直连长,因此只在 Tailscale 和 ZeroTier 无法使用,或者设备没有合适客户端时启用。

这三项配置增加了维护量:每台设备可能有多个地址,防火墙要分别放行,故障时还要先确认程序使用的是哪张虚拟网卡。后来 Tailscale 在这些设备上能够稳定承担同步流量,继续保留 ZeroTier 已经没有实际收益。

SSH 名字怎样区分入口

同一台设备可能同时有 Tailscale 和 FRP 地址。SSH 别名使用设备名作为默认入口,FRP 入口增加 -frp 后缀:

Host thinkpad
  HostName thinkpad
  ProxyCommand nc -X 5 -x router-de:1080 %h %p

Host thinkpad-frp
  HostName my-frp-server.example.com
  Port 6001
  User ruichen

ssh thinkpad 连接日常使用的地址,ssh thinkpad-frp 明确表示经过公网转发。router-de:1080 是路由器上运行的 SOCKS5 代理,nc -X 5 表示经过它转发。设备后来统一改过名,新旧名对照和改名规则见统一设备命名与 SSH 配置

服务监听地址也要对应

三张虚拟网卡同时存在时,我没有让每个服务监听所有地址:

  • SSH 和管理端口监听 Tailscale 地址;
  • Syncthing 在早期配置中监听 ZeroTier 地址;
  • 只有需要公网入口的端口才交给 FRP。

这样检查故障时可以先看服务监听地址,再看对应的客户端和路由。如果一个服务监听所有地址,防火墙规则要同时覆盖虚拟网卡和物理网卡,也无法从监听地址直接判断流量来自哪个网络。

本机代理曾经截走虚拟网络流量

Clash Verge 等透明代理如果接管了 Tailscale 或 ZeroTier 地址,设备会表现为虚拟网络不可达。检查时要先看系统路由表,再看代理规则是否排除了:

100.64.0.0/10       # Tailscale IPv4

ZeroTier 的地址段取决于控制器配置,需要把实际使用的网段同样加进代理的直连规则。那次故障的完整过程记录在 OpenClaw 运维复盘中。

后来怎样简化

2026 年 8 月以后,日常 SSH、远程管理和数据同步都通过 Tailscale 完成。Headscale 管理设备注册和地址,FRP 继续提供独立的公网入口。

保留 FRP 的原因与保留第二个虚拟网络不同。FRP 不依赖 Tailnet 客户端和 Headscale 注册状态,当 Tailscale 客户端损坏或设备从 Tailnet 下线时,它仍可能提供登录入口。

评论