一.介绍

我之前介绍了Syncthing,作为一款开源的文件同步程序,它的功能还是非常强大的,我也很高兴能看到它被越来越多的人知道和使用,前几天有位朋友留言说让我介绍下Syncthing的中继服务器的搭建,在这之前的一段时间我在网上偶尔看到过有朋友介绍过一次。

首先来科普一下? 不同于Resilio Sync(BT Sync)使用BT协议进行数据传输,Syncthing使用了BEP对等自由块交换协议(Block Exchange Protocol),这两个倒是没啥优劣的问题,主要是BT Sync在老版本的时候支持DHT,而后来删掉了,这也是导致它的官方服务器在被干扰之后几乎完全无法使用的原因之一,所以当初有人说老版本(支持DHT)的依旧能够使用。而Syncthing不一样的是它没有使用DHT,但是也没有像BT Sync一样只有官方服务器(通告+中继服务器),由于开源,所以Syncthing的服务器都是可以自己部署的,这也就是说,即使官方的服务器出了问题,也能够随时有服务器去代替它。

那么为什么要有这两种服务器呢? 这主要是因为P2P的原理,通告(Announcement)/发现(Discovery)服务器用于发现和索引用户,就和你BT的Tracker(这个其实也是通告服务器)一样,你接入了就等于在里面挂了名,然后服务器会把其他人告诉你,这样你们才能够连上。这个是公网IP的情况,如果没有公网IP呢?这就要轮到中继()服务器出手了,要么是辅助实现打洞,要么是转为C/S模式。总之,中继服务器就是为了在特殊网络环境下(但是在国内很多家庭宽带就是这样的)的正常使用而存在的。

我们本次就不说通告服务器(Syncthing官方其实是叫做Global Discovery服务器的),因为目前官方的服务器还正常运作,不过感兴趣的或者想建立企业内部的本地Discovery服务器可以自己研究下

GitHub——>传送门
文档——>传送门

PS.之前写的Syncthing的搭建和使用——>传送门

二.安装

好了,让我们开始尝试下搭建

首先,你得先确认一点,你搭建的中继服务器是私人(Private)用途的还是公开(Public)的,因为公开的话就会自动加入Syncthing官方的Relay服务器池中,供其他人使用,这样会导致你的流量消耗变大,所以请想好,并且也会在官方的Relay服务器列表中显示

Relay服务器列表——>传送门

如果下面没显示出状态请在地址栏右侧点击允许加载不安全的脚本,因为会从各个服务器上拉取状态,这个是HTTP的,默认会被HTTPS页面禁用

首先来讲一下参数,然后根据你的需求在下面supervisor的配置里面修改

参考了官方文档进行翻译——>传送门

比较重要的是-pools(是否作为公开服务器),以及限速设置啥的,这个看你需要设置,如果公开请务必确保流量足够,另外公开也可以用-provided-by打个网站的小广告

其他系统请自行替换下载链接 https://github.com/syncthing/relaysrv/releases

大概是这样滴
PS.用的人不少,我这篇文章写完放了几天流量跑了相当多……

至于如何在私有模式下使用,你可以看到输出的截图里面有一串类似如下的地址

当然这儿是0.0.0.0,你把这个改成你的域名或者IP然后就可以在你的Syncthing里面指定Relay服务器了,改完后地址类似如下

当然,为了保证能够正常使用,请防火墙开放如下两个端口

数据端口: 22067/tcp 能被 -listen 覆盖指定,并且会被 -ext-address 上报
状态端口: 22070/tcp 能被 -status-srv 覆盖指定

iptables命令如下,其他的自己研究

更多内容可以参考下GitHub上的ReadMe说明和上面提到的官方文档 GitHub——>传送门