新闻详情

新闻详情

首页 / 资讯中心 / 详情

手把手部署 Syncthing 中继服务器 strelaysrv:从端口放行到私有上线的完整流程

发布时间:2026/10/1 9:30:45来源:尧图网络
手把手部署 Syncthing 中继服务器 strelaysrv:从端口放行到私有上线的完整流程
手把手部署 Syncthing 中继服务器 strelaysrv从端口放行到私有上线的完整流程【免费下载链接】syncthingOpen Source Continuous File Synchronization项目地址: https://gitcode.com/GitHub_Trending/sy/syncthing当两台 Syncthing 设备都躲在 NAT 之后时P2P 直连经常握手失败同步任务就此卡住。strelaysrvSyncthing 中继服务器就是为这种场景准备的绕行通道它只在两端之间转发字节、不看数据内容。下面按真实操作的顺序带你把私有中继部署完整跑一遍先定公共还是私有、放行端口、拿到连接地址、接入客户端、验证连通性最后做到长期稳定运行。一、先做决定你的中继是公共的还是私有的 敲任何命令之前先回答一个问题这台中继为谁服务默认行为是公开的。不带任何参数启动 strelaysrv 时它会自动加入默认的公共中继池并对外通告任何互联网上的 Syncthing 客户端都可能借用你的机器转发流量消耗的是你的公网带宽。默认池地址在代码里是写死的defaultPoolAddrs https://relays.syncthing.net/endpoint启动时检测到这一默认值日志会打印一整屏横幅不可能错过!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! Joining default relay pools, this relay will be available for public use. !! !! Use the -pools command line option to make the relay private. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!所以两条路线很清晰回馈社区无参数直接跑注册进公共池只服务自己的设备启动时务必显式加上-pools池列表为空就不会执行任何注册动作。另外记住一个前提中继功能要求客户端为Syncthing v0.12 及以上版本更老的客户端用不上。对比维度公共池模式私有模式启动参数无需传-pools必须传-pools可用对象任何能发现它的客户端只认识 URI 的客户端带宽去向被公网流量共享仅自己的设备/status 端口建议开放池要采集指标可开可关二、开机前准备放行 22067 端口并配置防火墙中继对外只需要两个 TCP 端口22067中继主协议端口客户端从这里接入必须放行22070/status指标端口只供中继池读取运行数据私有部署可以完全不开放。仓库里自带了 UFW 防火墙规则模板 cmd/strelaysrv/etc/firewall-ufw/strelaysrv两条规则分别放行 22067/tcp 与 22070/tcp可以直接照抄。如果机器在路由器后面需要在路由器上做端口转发22067 是刚需22070 按需再在防火墙放行。公共池模式下端口真实可达是硬门槛——池服务器会反向连接你的中继做验证连不通就不会接收你。三、启动私有中继并拿到 relay:// URI先准备可执行文件。strelaysrv 在 syncthing 仓库的 cmd/strelaysrv/ 目录里克隆源码后用 Go 编译即可git clone https://gitcode.com/GitHub_Trending/sy/syncthing cd syncthing/cmd/strelaysrv go build然后一条命令完成最小化启动./strelaysrv -pools首次启动时它会在-keys指定的目录默认当前目录发现没有密钥对于是自动生成一份cert.pem和key.pem有效期 20 年。之后每次启动都复用这对证书中继的设备 ID 也就固定了。启动成功后日志会打印一行URI:URI: relay://:22067/?idEZQOIDM-6DDD4ZI-DJ65NSM-4OQWRAT-EIKSMJO-OZ552BO-WQZEGYY-STS5RQMpingInterval1m0snetworkTimeout2m0ssessionLimitBps0globalLimitBps0statusAddr:22070注意relay://后面主机部分是空的——没指定-listen时程序不知道你面向公网的地址需要把主机部分替换成你的公网 IPrelay://192.0.2.1:22067/?idEZQOIDM-6DDD4ZI-DJ65NSM-4OQWRAT-EIKSMJO-OZ552BO-WQZEGYY-STS5RQMpingInterval1m0snetworkTimeout2m0ssessionLimitBps0globalLimitBps0statusAddr:22070查询参数逐个拆解参数含义来自哪个开关id中继的设备 ID客户端拿它做证书固定防冒用由证书自动生成pingInterval心跳间隔-ping-interval默认 1 分钟networkTimeout网络操作超时超时即断开-network-timeout默认 2 分钟sessionLimitBps单会话限速字节/秒非零才出现-per-session-rateglobalLimitBps全局总限速字节/秒非零才出现-global-ratestatusAddr/status 监听地址未禁用才出现-status-srv如果你不打算做证书固定、也不想给客户端一串参数只保留主机部分就是合法地址relay://192.0.2.1:22067。不过推荐用完整形式既更安全客户端也能据此感知限速与超时设置。日常最常用的几个参数先列在这里参数默认值什么时候要动它-listen:22067不想用默认中继端口时-pools公共池地址私有中继必须传-token空限定特定客户端才能用设置后自动禁止入池-status-srv:22070传彻底关掉 /status-keys.指定证书存放目录-debugfalse排查问题、看更多日志四、把 URI 填入 Syncthing 客户端完成接入打开 Syncthing 的网页界面进入操作 → 设置把最终的中继 URI 粘贴到Sync Protocol Listen Address字段。这个字段支持逗号分隔的多个地址你的私有中继就作为其中的一个备选通道生效了。私有中继强烈建议加一道访问控制./strelaysrv -pools -token你的访问令牌这里有两个连带效果要知道一是设置令牌后程序会自动清掉池配置等价于强制私有化二是客户端提交的令牌与服务器不一致时中继会直接回应令牌错误并断开连接——只有知道口令的设备才进得来。五、验证中继连通性testutil 自检 /status 观察别等真实的同步任务出问题了才来排查。仓库自带一个专用工具 cmd/strelaysrv/testutil/三种模式覆盖所有验证需求-test一键自检结果只有 OK 或 FAIL最省事-join以等待方身份加入中继等别人来连-connect设备ID以发起方身份主动经中继连接指定设备。用两个终端做双向验证。先准备两套密钥对各含key.pem与cert.pem分开放certs/client/ certs/server/终端 A 先加入它会打印自己的设备 ID./testutil -relayrelay://192.0.2.1:22067 -keyscerts/client/ -joinID: BG2C5ZA-W7XPFDO-LH222Z6-65F3HJX-ADFTGRT-3SBFIGM-KV26O2Q-E5RMRQ2终端 B 拿着这个 ID 发起连接./testutil -relayrelay://192.0.2.1:22067 -keyscerts/server/ -connectBG2C5ZA-W7XPFDO-LH222Z6-65F3HJX-ADFTGRT-3SBFIGM-KV26O2Q-E5RMRQ2✅ 连上后两边都会出现交互式提示符在任意一端敲字内容都会经中继转发到另一端显示。能看到回显就说明转发链路通了。用 /status 看运行指标。默认:22070上挂着这个端点浏览器或 curl 直接看curl http://127.0.0.1:22070/status返回 JSON几个字段值得盯住bytesProxied累计中转字节数中继在干活时它应该持续上涨numActiveSessions/numProxies活动会话数与正在转发的代理通道数numPendingSessionKeys待加入的会话密钥数。每个会话随机生成两把密钥、两端各一把所以这个值最高可以是待加入会话数的两倍numConnections已建立的 TLS 控制连接数kbps10s1m5m15m30m60m最近 10 秒 / 1 / 5 / 15 / 30 / 60 分钟的吞吐率每 10 秒采一个点最长覆盖 60 分钟options启动参数的回显远程核对服务器到底跑在什么配置下很方便。完全用不到这个端点就传-status-srv关掉反过来加-pprof同一个 HTTP 服务上还会多出/debug/pprof/路径做内置性能剖析。六、生产化限流、连接上限与 systemd 长期运行要长期跑起来需要敲定三件事给多少带宽、能扛多少连接、崩了怎么自愈。用两个速率参数限定带宽./strelaysrv -pools -per-session-rate1048576 -global-rate10485760两个参数单位都是字节/秒0表示不限-per-session-rate管单个会话避免一对设备霸占全部带宽-global-rate管机器总量保护你的公网出口。底层是令牌桶实现突发容量设为限速值的两倍两者同时设置时会话限流与全局限流并行生效以等待更久的一方为准。理解连接上限的自我保护机制启动时程序会先把文件描述符上限提到最高再扣掉约 20% 的未知泄漏余量用剩下的 80% 作为连接上限启动日志里的Connection limit就是这个数。之后每分钟检查一次超限就对新连接回应中继已满、清退空闲连接回落之后自动恢复接纳。高并发时它会优雅降级而不是崩溃。用 systemd 单元长期运行仓库提供了现成的单元模板 cmd/strelaysrv/etc/linux-systemd/strelaysrv.service核心片段[Service] WorkingDirectory/var/lib/syncthing-relaysrv EnvironmentFile/etc/default/syncthing-relaysrv ExecStart/usr/bin/strelaysrv -nat${NAT} $RELAYSRV_OPTS Usersyncthing-relaysrv Groupsyncthing ProtectSystemstrict ReadWritePaths/var/lib/syncthing-relaysrv NoNewPrivilegestrue PrivateTmptrue MemoryDenyWriteExecutetrue所有运行时开关-pools、限速等都通过环境文件/etc/default/syncthing-relaysrv里的$RELAYSRV_OPTS注入证书放在/var/lib/syncthing-relaysrv配合独立用户与一系列加固项直接套用即可。进阶参数一览按需取用参数默认值作用-network-timeout2m该周期内无数据则断开连接或会话-ping-interval1m心跳发送间隔-message-timeout1m等待关键消息到达的最长时间-network-buffer65536每条被代理连接占用两个该大小的缓冲区-ext-address同-listen对外通告地址可监听普通端口再从 443 转发接入-protocoltcptcp双栈tcp4/tcp6单栈-natfalse用 UPnP/NAT-PMP 自动申请外部端口映射-nat-lease/-nat-renewal/-nat-timeout60/30/10租约时长分/ 续约频率分/ 发现超时秒-pproffalse在状态服务器上开启内置剖析-provided-by空提供方说明超过 30 字符会直接报错退出七、故障排查按日志现象对号入座 上线后出问题先看日志里是哪种腔调日志或现象原因与对策启动即打印公共池横幅漏了-pools私有部署补上Failed to join ...: under load (rate limiting)池端限流HTTP 429一分钟后自动重试持续出现多半是池侧负载高IP address not matching external address池服务器发现你的出口 IP 与通告地址对不上常见于 NAT/转发配置错误此分支会直接放弃加入先修网络客户端连不上中继确认 22067 公网可达、防火墙已放行、URI 主机是真实公网地址反复出现Joined pool ..., rejoining in 48m0s正常现象池给出驱逐倒计时中继在 80% 时间点主动续注册不是故障最后一行其实是好消息——看到它说明公共池注册链路已经跑通。写在最后整个部署其实就四件事定好公共还是私有-pools、放行 22067、拿到 URI 填进客户端、用 testutil 与 /status 验证。后续再遇到异常用-debug启动看日志对照 /status 的指标字段和上面的现象表绝大多数问题都能在几分钟内定位。【免费下载链接】syncthingOpen Source Continuous File Synchronization项目地址: https://gitcode.com/GitHub_Trending/sy/syncthing创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Paperclip:轻量级AI Agent编排中间件实战指南 2026/10/2 0:01:20

Paperclip:轻量级AI Agent编排中间件实战指南

1. 项目概述:Paperclip 不是回形针,而是一个被严重误读的 AI 工程化枢纽“Paperclip”这个词一出来,很多人第一反应是办公桌抽屉里那个弯弯扭扭的金属小物件——回形针。但在这个技术语境下,它完全不是物理世界里的文具&#xff0…

阅读更多 →
Jev模型详解:从本地部署到Codex接入与数据系统构建 2026/10/2 0:01:20

Jev模型详解:从本地部署到Codex接入与数据系统构建

1. Jev到底是什么?先把这个名字背后的定位说清楚这几天不管你刷哪个技术社区,都能看到 Jev 的讨论。热搜词里翻来覆去就是那几组:jev模型官网、jev本地部署、jev在codex中使用、jev密钥、斯坦福教授用jev构建数据系统。老实说,一个…

阅读更多 →
DeepSpeed ZeRO-3 与 MoE 训练实战:显存优化与通信调优 2026/10/2 0:01:13

DeepSpeed ZeRO-3 与 MoE 训练实战:显存优化与通信调优

大模型训练走到今天,单卡单机的时代早就过去了。但凡参数规模上到百亿、千亿,甚至只是想在有限显存里塞下一个稍微像样的模型,你都会撞上同一堵墙:显存不够。DeepSpeed 的 ZeRO 系列就是为解决这堵墙而生的,而 ZeRO-3 …

阅读更多 →
OFDM瑞利信道仿真:从BER曲线跑飞到链路参数与均衡避坑指南 2026/10/2 0:01:06

OFDM瑞利信道仿真:从BER曲线跑飞到链路参数与均衡避坑指南

简介:本资源面向通信工程、电子信息类专业学生及无线通信算法研究者,提供一套完整的OFDM系统仿真源码与实验数据,用于分析AWGN信道与瑞利衰落信道下的误比特率性能。包内共24个文件,以m脚本、fig图形和dat数据文件为主&#xff0c…

阅读更多 →
算法题打卡第9天:剪枝、二分、KMP、BFS四题精讲 2026/10/2 0:01:06

算法题打卡第9天:剪枝、二分、KMP、BFS四题精讲

我不是那种一上来就列一堆题号的人,但今天是《算法题打卡》的第 9 天,我确实想先聊两句“选题逻辑”。坚持到第九天,最大的变化不是手速快了,而是看到热搜词里“暴力枚举算法”“剪枝算法”“kmp算法”“贪心算法”这些词的时候&a…

阅读更多 →
堆数据结构完全拆解:从数组存储到堆排序与TOP-K算法 2026/10/2 0:01:06

堆数据结构完全拆解:从数组存储到堆排序与TOP-K算法

每次讲到堆这一章,总有学生举手问:“老师,这东西不就是个优先队列吗?C 里有现成的priority_queue,Java 里有PriorityQueue,笔试的时候直接调 API 不就行了,为什么还要自己手写一遍?”…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉