中继服务器:直连不通时加密数据如何被摆渡
中继是什么
两台设备无法建立直连时(双方都在严格 NAT 后、端口被墙、防火墙不放行),可以经官方提供的公共中继服务器转发流量。官方文档的定位:它让「原本连不上」变成「能连上」,代价是速率远低于直连。
关键性质:
- 默认启用,但只在直连失败时才使用;
- 持续尝试直连:经中继连接期间程序定期重试直连,一旦直连成功自动切回、离开中继;
- 数据仍然是端到端加密的——中继只是转发密文,「像路由器一样」,读不了内容。
识别与代价
判断当前是否走中继:设备列表双击设备卡片,Connection Type 以 Relay 开头即中继(这个排查动作也写在[同步慢先看连接类型(../10-常见问题/01-faq-slow.md))。
代价有两层:
- 速率:公共中继是志愿者/项目方跑的服务器,带宽共享;
- 隐私边界:中继运营者能看到「你的设备 ID 经由它连接、流量多大」——内容看不到,元数据看得到。与发现服务器的信息暴露同级,详见[全局发现与本地发现(03-discovery.md)。
什么时候该动手消灭中继
中继是「兜底可用」,不是「长期方案」。看到关键设备长期走中继,按顺序处理:
- 在路由器上为 22000/TCP+UDP 做端口映射(或确认 UPnP 生效);
- 本地防火墙放行(见[防火墙放行与 UPnP(04-firewall.md));
- 确认全局发现开启(跨网找到对方的前提);
- 一方有公网可达地址即可——连接是双向尝试的。
私有中继
不想依赖公共池的用户可以自建中继服务(官方提供独立的服务端程序),并在客户端的 Sync Protocol Listen Address 里指定私有中继地址,格式(官方文档示例):
relay://private-relay-1.example.com:443/?id=中继的设备ID
也可在设置里把中继整体关闭——代价是直连彻底不通的设备对从此无法同步。自建服务端的部署见官方文档 Syncthing Relay Server 一节。