syncthing设备无法直连时需配置stun服务器以提升p2p成功率:一、确认是否需stun;二、替换为公共stun如stun.l.google.com:19302;三、docker自建stun服务;四、udp受限时禁用stun改用中继;五、通过日志验证配置效果。

如果您在使用 Syncthing 时遇到设备间无法直连、同步延迟高或连接状态长期显示“正在中继”等问题,则很可能是 NAT 类型导致的穿透失败。STUN 服务器可协助 Syncthing 准确获取公网 IP 和端口映射信息,从而提升 P2P 连接成功率。以下是配置 STUN 服务器的具体方法:
一、确认当前网络环境是否需要 STUN
Syncthing 默认使用内置的全局 STUN 服务(stun.syncthing.net:3478),但在某些严格限制 UDP 出站、存在多层 NAT 或防火墙拦截的环境中,该默认服务可能不可达或响应缓慢。此时需手动指定更稳定、低延迟的第三方 STUN 服务器,以增强设备发现与连接能力。
1、打开 Syncthing Web 管理界面(http://localhost:8384)。
2、点击右上角「操作」→「设置」→ 切换至「连接」标签页。
3、向下滚动至「STUN 服务器」输入框,查看当前值是否为 stun.syncthing.net:3478 或为空。
4、若状态栏中「全局发现」显示「失败」或「超时」,且设备连接长期依赖中继,则需替换 STUN 地址。
二、使用公共 STUN 服务器(无需自建)
此方法适用于快速验证与临时增强连接,不涉及任何服务器部署,仅修改客户端配置即可生效。所有选用的 STUN 服务均为公开、无认证、UDP 协议兼容的可靠节点。
1、在「STUN 服务器」输入框中,清除原有内容。
2、粘贴以下任一可用地址(每次仅填一个):stun.l.google.com:19302。
3、点击「保存」按钮。
4、等待约 10 秒后,刷新页面,观察「全局发现」状态是否变为「成功」。
5、检查设备连接状态:若此前为「中继中」,现变为「直接」或「本地」,说明 STUN 配置已起效。
三、配置自定义 STUN 服务器(Docker 方式部署)
当公共 STUN 服务因地域或策略受限时,可在自有 Linux 服务器上通过 Docker 快速部署轻量级 STUN 服务(如 coturn 的简化模式或 stund)。该方式提供可控性与低延迟,且不依赖外部服务稳定性。
1、确保服务器已安装 Docker 并运行正常。
2、执行以下命令拉取并启动 stund 容器:docker run -d --name stun-server -p 3478:3478/udp -p 3478:3478/tcp --restart=always pionstun/stund。
3、验证服务可达性:在另一台设备上执行 stunclient your-server-ip:3478(需提前安装 stunclient 工具)。
4、若返回包含 XOR-MAPPED-ADDRESS 的响应,则表示服务运行正常。
5、将 Syncthing「STUN 服务器」字段改为 your-server-ip:3478,保存设置。
四、禁用 STUN 并强制使用中继(备用方案)
在部分企业网络或教育网环境中,UDP 流量被完全屏蔽,STUN 探测必然失败。此时可绕过 STUN,直接启用中继模式保障基础同步功能,但会牺牲速度与带宽效率。
1、进入「设置」→「连接」标签页。
2、将「STUN 服务器」字段留空或填入无效地址(如 127.0.0.1:1)。
3、勾选「启用中继」选项。
4、在「中继服务器」字段中填入可信中继地址,例如:relay://relay.syncthing.net:443。
5、点击「保存」,Syncthing 将自动降级至中继传输模式。
五、验证 STUN 配置效果
配置完成后需通过日志与连接状态双重确认实际生效情况,避免误判。Syncthing 不提供图形化 STUN 测试工具,须依赖后台输出判断。
1、在 Web 界面右上角点击「操作」→「显示日志」。
2、在日志过滤栏输入关键词 stun,回车筛选。
3、查找含「STUN lookup succeeded」或「NAT type: Full Cone」等字样的条目。
4、若出现「STUN lookup failed」或「no response from STUN server」,则说明所填地址不可达,需切换其他 STUN 地址重试。











