Syncthing 将普通客户端作为中继节点

文章主要目的是介绍“使用中介人替代自建发现、中继服务器”这种想法,不包含具体的搭建方法。

Syncthing 同步多台设备时,最麻烦的地方通常不是安装,而是设备之间怎么找到彼此。笔记本、家里的台式机和手机不在同一个局域网里,还各自躲在 NAT 后面,直连经常不稳定。

通常,解决方案有三种:

  1. 依赖公共服务器:这是默认选项。简单,但速度和隐私可能受限于第三方。
  2. 自建发现(Discovery)和中继(Relay)服务器:这是“硬核”玩家的选择。通过运行 stdiscosrvstrelaysrv,你可以拥有一个完全私有的网络。但这需要复杂的配置、证书管理和服务器维护。
  3. 普通客户端中枢方案:使用一个普通的 Syncthing 客户端作为“中枢节点”。

对多数个人或小团队用户来说,第三种方案更省事,也更符合日常使用方式。

问题的核心:发现与连接

要理解为什么“客户端即中枢”可行,先看 Syncthing 面临的两个问题:

  • 设备发现 (Discovery):设备 A 如何知道设备 B 的 IP 地址?在局域网中,它们可以通过本地广播找到彼此。在互联网上,它们需要一个像电话簿一样的“发现服务器”来交换地址信息。
  • NAT 穿透与中继 (Relaying):即使 A 和 B 知道了对方的地址,它们也可能因为处在路由器(NAT)之后而无法直接建立连接。这时,就需要一个公共的“中继服务器”来转发它们的流量。

自建 stdiscosrvstrelaysrv 就是为了将“电话簿”和“中转站”私有化。这能用,但个人使用往往没必要。

“客户端即中枢”方案如何工作?

这个方案的思路很简单:

在一台拥有公网 IP 且 24/7 在线的设备(比如一台廉价的 VPS、家里的树莓派或 NAS)上,安装一个标准的 Syncthing 客户端,并让你的所有其他设备都与它连接。

这个“中枢节点”同时解决发现和中转问题:

  1. 作为“介绍人” (Introducer),解决发现问题

    • 你的笔记本(A)和手机(C)都添加了中枢节点(B)的设备 ID。
    • 当 A 和 C 都连接到 B 时,B 会告诉 A:“嘿,我认识 C,它的地址是 xxx”。同时告诉 C:“嘿,我认识 A,它的地址是 yyy”。
    • 这样,A 和 C 就通过 B 这个共同的朋友互相认识了。Syncthing 的“介绍人”功能让设备可以互相发现其他已连接的设备。你的中枢节点,就是你所有设备的超级介绍人。
  2. 作为“数据仓库”,解决中继问题

    • 如果 A 和 C 尝试直接连接失败(NAT 穿透失败),它们的数据同步并不会中断。
    • 因为 A 会将文件变更同步到中枢节点 B。
    • 随后,C 会从中枢节点 B 拉取这些变更。
    • 数据流动路径从 A <--> C 变成了 A --> B --> C。这虽然不是严格意义上的“中继”(Relay),因为它在 B 上存储了数据,但它完美地实现了数据在不同设备间传递的最终目的。

为什么这个方案更胜一筹?

相比搭建专用发现/中继服务器,“客户端即中枢”更适合个人使用。

I. 配置更简单

专用服务器方案 客户端中枢方案
安装 下载 stdiscosrvstrelaysrv 二进制文件 apt install syncthing 或从官网下载
配置 复杂的命令行参数、生成密钥、配置 systemd 服务 熟悉的 Web GUI,像配置其他客户端一样
防火墙 需要为发现和中继服务打开特定端口(如 22067, 22070) 只需打开 Syncthing 默认端口(22000/TCP)
维护 手动更新服务,确保服务持续运行 通过 Web GUI 一键更新

你不需要学习任何新的命令行工具或配置文件语法。你只需要在你最熟悉的 Syncthing Web 界面上点几下鼠标。

II. 功能更强:它不仅是中介,还是一个备份节点

这是最关键的优势。一个纯粹的中继服务器不存储你的任何文件,它只负责转发流量。

而你的“客户端中枢”节点,因为它是一个全功能的 Syncthing 客户端,它会完整地保存你共享的文件夹。这意味着:

  • 天然的数据冗余:你的文件现在至少有三个副本(例如:台式机、笔记本、VPS)。任何一台设备离线或损坏,数据都不会丢失。
  • 异步同步:你的笔记本在咖啡馆修改了文件并同步到 VPS 后,就可以关机了。当你晚上回到家打开台式机,它会自动从 VPS 上拉取最新的版本,而不需要笔记本保持在线。

这台中枢节点也顺手成了一个常在线的异地备份点。

III. 同样安全

把文件完整放在 VPS 上,安全性要单独看。中继服务器不存文件,看起来更安全,但这里有个前提。

Syncthing 的核心安全设计是端到端加密(E2EE)

  • 数据传输中始终加密:任何两个 Syncthing 节点之间传输的数据都使用 TLS 加密。无论是你的笔记本连接到 VPS,还是你的笔记本尝试直连你的手机,信道都是加密的。
  • 你的 VPS 就是一个受信任的节点:在使用“客户端中枢”方案时,你并不是将数据暴露给了一个不受信任的第三方。恰恰相反,你明确地将这台 VPS 添加为你的一个受信任设备。数据在 VPS 上是解密后存储的,这与数据在你自己的台式机或笔记本上是一样的。

真正的安全问题在于:你对这台 VPS 的控制力有多强?

方案 安全责任
公共服务器 你信任 Syncthing 基金会和社区运营者。
自建中继服务器 你需要保护 strelaysrv 进程和服务器本身不被入侵。
客户端中枢方案 你需要保护 syncthing 进程和服务器本身不被入侵。

无论是自建中继还是客户端中枢,安全责任都在服务器管理员身上。基本的服务器安全措施还是要做:使用密钥登录 SSH、配置防火墙(ufw)、及时更新系统。从这个角度看,两种自建方案的安全责任差不多。

IV. 成本效益更高

再看成本。

  • 硬件成本:运行一个专用的发现/中继服务器和运行一个标准的 Syncthing 客户端,对服务器资源(CPU、内存)的需求几乎没有差别。一台每月 5 美元的入门级 VPS 绰绰有余,甚至可以使用 Oracle Cloud 的免费套餐来零成本实现。
  • 时间成本:这是差异最大的地方。配置和维护专用服务器需要投入更多的时间和精力去学习和排错。而“客户端中枢”方案的配置时间几乎为零,因为它就是你已经熟悉的标准客户端。时间也算成本。
  • 附加价值:这是“客户端中枢”方案完胜的地方。花同样的钱(甚至更少的时间),你得到的不仅仅是一个同步中介,还包括:
    • 一个永远在线的异地备份节点
    • 一个可以让你实现异步同步的数据仓库。
    • 一台可以用于托管个人博客、Git 仓库、VPN 或其他小项目的全功能 Linux 服务器