一.介绍

我之前介绍了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呢?这就要轮到中继(Relay)服务器出手了,要么是辅助实现打洞,要么是转为C/S模式。总之,中继服务器就是为了在特殊网络环境下(但是在国内很多家庭宽带就是这样的)的正常使用而存在的。

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

GitHub——>传送门

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

二.安装

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

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

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

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

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

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

-debug 启用调试输出

-ext-address=

可选的外部地址(将被上报),能够通过端口转发来监听高权限端口(0-1024)然后外部可以连接这个端口

-global-rate= 全局限速,单位 bytes/s

-keys=

-listen= 协议监听的地址,默认是 ":22067"

-message-timeout= 等待消息到达的最大时间(默认 1m0s)

-nat 使用UPnP/NAT-PMP来取得外部端口映射

-nat-lease= NAT租赁时间,单位分钟(默认 60)

-nat-renewal= NAT刷新频率,单位分钟(默认 30)

-nat-timeout= NAT发现超时,单位秒(默认 10)

-network-timeout= 客户端和中继之间网络操作的超时,如果在这个时间段内客户端和中继之间没有数据被接收到,那么连接将被终止。此外,如果在这段时间内任何被中继的客户端没有数据发送,这个会话也会被终止(默认 2m0s)

-per-session-rate= 每个会话的限速,单位 bytes/s

-ping-interval= ping的发送间隔(默认 1m0s)

-pools= 中继服务器池的地址,使用逗号分隔多个(默认 "http://relays.syncthing.net/endpoint")。留空(-pools "")来禁止公布这个服务器到池中,以便作为私有中继。

-protocol= 监听协议,"tcp"来监听IPv4和IPv6,"tcp4"来监听IPv4,"tcp6"来监听IPv6(默认 "tcp")

-provided-by= 一个可选的描述字段来表示谁提供了这个中继(可以打打广告啥的)

-status-srv= 提供状态服务的监听地址(默认 ":22070"),用于中继服务器池页面来展示服务器状态(传输了多少数据,有多少客户端在线等等),留空(-status-srv="")来禁用这个功能

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

-debug启用调试输出

-ext-address=

可选的外部地址(将被上报),能够通过端口转发来监听高权限端口(0-1024)然后外部可以连接这个端口

-global-rate=全局限速,单位bytes/s

-keys=

-listen=协议监听的地址,默认是":22067"

-message-timeout=等待消息到达的最大时间(默认1m0s)

-nat使用UPnP/NAT-PMP来取得外部端口映射

-nat-lease=NAT租赁时间,单位分钟(默认60)

-nat-renewal=NAT刷新频率,单位分钟(默认30)

-nat-timeout=NAT发现超时,单位秒(默认10)

-network-timeout=客户端和中继之间网络操作的超时,如果在这个时间段内客户端和中继之间没有数据被接收到,那么连接将被终止。此外,如果在这段时间内任何被中继的客户端没有数据发送,这个会话也会被终止(默认2m0s)

-per-session-rate=每个会话的限速,单位bytes/s

-ping-interval=ping的发送间隔(默认1m0s)

-pools=中继服务器池的地址,使用逗号分隔多个(默认"http://relays.syncthing.net/endpoint")。留空(-pools"")来禁止公布这个服务器到池中,以便作为私有中继。

-protocol=监听协议,"tcp"来监听IPv4和IPv6,"tcp4"来监听IPv4,"tcp6"来监听IPv6(默认"tcp")

-provided-by=一个可选的描述字段来表示谁提供了这个中继(可以打打广告啥的)

-status-srv=提供状态服务的监听地址(默认":22070"),用于中继服务器池页面来展示服务器状态(传输了多少数据,有多少客户端在线等等),留空(-status-srv="")来禁用这个功能

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

#获取程序并解压

wget https://github.com/syncthing/relaysrv/releases/download/v0.14.46/strelaysrv-linux-amd64-v0.14.46.tar.gz

tar xzf strelaysrv-linux-amd64-v0.14.46.tar.gz

#换个地方方便直接运行(顺便改个名)

mv strelaysrv-linux-amd64-v0.14.46/strelaysrv /usr/bin/relaysrv

#清理下

rm -rf strelaysrv-linux-amd64-v0.14.46 strelaysrv-linux-amd64-v0.14.46.tar.gz

#为了安全创建一个单独的用户

useradd relaysrv -s /bin/false

#创建存储配置用的目录并修改所有者

mkdir /etc/relaysrv

chown relaysrv /etc/relaysrv

#安装supervisor

wget https://bootstrap.pypa.io/get-pip.py

python get-pip.py

rm -rf get-pip.py

pip install supervisor

#配置supervisor

echo_supervisord_conf > /etc/supervisord.conf

echo "supervisord" >> /etc/rc.local

cat >>/etc/supervisord.conf<

[program:relaysrv]

command=relaysrv -keys /etc/relaysrv -provided-by="Hi, Senra http://www.senra.me/"

autostart=true

autorestart=true

startsecs=10

stdout_logfile=/var/log/relaysrv.log

stdout_logfile_maxbytes=1MB

stdout_logfile_backups=10

stdout_capture_maxbytes=1MB

redirect_stderr=true

user = relaysrv

EOF

#启动supervisor

supervisord

#查看日志

supervisorctl tail -f relaysrv stdout

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

#获取程序并解压

wgethttps://github.com/syncthing/relaysrv/releases/download/v0.14.46/strelaysrv-linux-amd64-v0.14.46.tar.gz

tarxzfstrelaysrv-linux-amd64-v0.14.46.tar.gz

#换个地方方便直接运行(顺便改个名)

mvstrelaysrv-linux-amd64-v0.14.46/strelaysrv/usr/bin/relaysrv

#清理下

rm-rfstrelaysrv-linux-amd64-v0.14.46strelaysrv-linux-amd64-v0.14.46.tar.gz

#为了安全创建一个单独的用户

useraddrelaysrv-s/bin/false

#创建存储配置用的目录并修改所有者

mkdir/etc/relaysrv

chownrelaysrv/etc/relaysrv

#安装supervisor

wgethttps://bootstrap.pypa.io/get-pip.py

pythonget-pip.py

rm-rfget-pip.py

pipinstallsupervisor

#配置supervisor

echo_supervisord_conf>/etc/supervisord.conf

echo"supervisord">>/etc/rc.local

cat>>/etc/supervisord.conf<

[program:relaysrv]

command=relaysrv-keys/etc/relaysrv-provided-by="Hi, Senra http://www.senra.me/"

autostart=true

autorestart=true

startsecs=10

stdout_logfile=/var/log/relaysrv.log

stdout_logfile_maxbytes=1MB

stdout_logfile_backups=10

stdout_capture_maxbytes=1MB

redirect_stderr=true

user=relaysrv

EOF

#启动supervisor

supervisord

#查看日志

supervisorctltail-frelaysrvstdout

大概是这样滴

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

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

relay://[:port]/?id=

1

relay://[:port]/?id=

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

relay://private-relay-1.example.com:443/?id=ITZRNXE-YNROGBZ-HXTH5P7-VK5NYE5-QHRQGE2-7JQ6VNJ-KZUEDIU-5PPR5AM

1

relay://private-relay-1.example.com:443/?id=ITZRNXE-YNROGBZ-HXTH5P7-VK5NYE5-QHRQGE2-7JQ6VNJ-KZUEDIU-5PPR5AM

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

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

状态端口: 22070/tcp 能被 -status-srv 覆盖指定

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

iptables -I INPUT -p tcp --dport 22067 -j ACCEPT

iptables -I INPUT -p tcp --dport 22070 -j ACCEPT

1

2

iptables-IINPUT-ptcp--dport22067-jACCEPT

iptables-IINPUT-ptcp--dport22070-jACCEPT

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

自建服务器同步软件,自建Syncthing中继服务器(私密传输或造福大众)相关推荐

  1. mt4交易软件云服务器_MT4软件要选择什么样的服务器?

    什么是MT4平台?事实上,MT4并不能算"平台",而是一款被大量应用的"软件".MT4全称MetaTrader 4,它是MetaQuotes公司制作的行情接收软 ...

  2. 剑网三服务器同步设置文件夹,剑三服务器同步设置在哪

    剑三服务器同步设置在哪 内容精选 换一换 目录: 一.安装环境介绍 二.安装与配置 VMware vSphere 6.7 1.安装 vsphere 6.7 2.配置密码 3.配置 DNS.主机名和 I ...

  3. 云服务器挂软件用哪个系统,云服务器挂软件用什么系统

    云服务器挂软件用什么系统 内容精选 换一换 镜像是一个包含了软件及必要配置的弹性云服务器模板,至少包含操作系统,还可以包含应用软件(例如,数据库软件)和私有软件.通过镜像,您可以创建弹性云服务器.镜像 ...

  4. dns服务器易语言,易语言dns中继服务器源码

    易语言dns中继服务器源码系统结构:读取中转数据,取端口,数据包处理,处理请求,查询数据接收,生成dns数据,分析域名,分析ip,分析数据包头,调转字节序_短整,分析数据包,取NAME,调转字节序_整 ...

  5. 服务器里面发邮件,通过SMTP中继服务器发送邮件的问题

    昨天写了一篇 SMTP中继服务器部署的文章,有朋友问我本地多个应用使用了不同的邮件通知地址,但发邮件的时候只能使用SMTP中继服务器上配置的地址才能发送,如下图: 所有的业务应用都必须配置成上图中的地 ...

  6. 自建服务器同步软件,黑群晖自建anki服务器电脑anki软件设置同步

    写于2020年9月,因为网上很多资料不全,我就整理一下,给有群晖的朋友们一些建议, anki版本 2.0或者anki版本 2.1.15(没成功,等我更新哈.) 黑群晖6.1 群晖自建anki服务器流程 ...

  7. dellr服务器性能测试软件,戴尔Poweredge R740服务器使用感受 | 小迪的生产力工具室...

    戴尔Poweredge R740服务器是戴尔第14代服务器产品的主流型号,是R730的升级替代品,这个机器怎么样呢,今天借着安装调试的机会感受了下. 戴尔 Poweredge R740 服务器是戴尔第 ...

  8. 网众无盘不能和主服务器同步,网众无盘数据服务器无法打开怎么办

    网众是一款很不错的网吧无盘软件,但用户使用中难免会遇到一些问题,比如网众无盘数据服务器无法打开之类的问题,下面我们就针对此类问题来详细说说其解决办法了. 这里要介绍的处理办法除了可以解决网众无盘数据服 ...

  9. 微信备份显示服务器,同步助手/微信备份助手遇到服务器访问异常怎么办?

    如果在使用助手的过程中,遇到"服务器访问异常"的情况,请先生成错误日志,根据日志里提示的信息来解决. 1.首先,需要查看错误日志.打开助手(比如你使用同步助手发生异常,请运行同步助 ...

最新文章

  1. 个人怎么发表期刊具体细节
  2. Nanopore sequencing technology and tools for genome assembly: computational analysis of the current
  3. 利用OpenSSH实现基于秘钥的认证
  4. 服务机器人产品---避障设计
  5. mysql中与null值不能比较
  6. Acer 4750 安装黑苹果_黑苹果系统安装通用教程图文版
  7. 用STATSVN统计公司SVN代码修改
  8. oracle+资料类型不一致吗,oracle数据库中,字段类型不一致,导致查询慢
  9. Outlook2010怎么关联邮箱 Outlook邮箱关联的教程
  10. tensorflow has no attribute logging
  11. UVA10427 Naughty Sleepy Boys【数学】
  12. Http第三方接口实现/异步Http请求
  13. C++17 Any类
  14. D. Powerful array 莫队算法或者说块状数组 其实都是有点优化的暴力
  15. <EDEM 常见问题01>EDEM 2018-Fluent 17.0 耦合接口编译(快速上手版)
  16. Unity 自定义standard shader
  17. 制作谷歌浏览器 Google Chrome 免安装绿色版!
  18. 神经元振荡中相位幅值耦合的量化:锁相值、平均向量长度、调制指数和广义线性模型交叉频率耦合
  19. 妹妹呀,哥也是第一次当哥哥!
  20. C8051F C2/JTAG接口

热门文章

  1. 并发重复请求及幂等场景的实现总结
  2. JZOJ 5914. 盟主的忧虑
  3. 新手 Spring 疑惑
  4. Spring+CXF的WebServices简单示例
  5. 《java系统性能调优》--1.发现瓶颈
  6. hdu 2149+hdu 1846(巴什博弈)
  7. Google C++ Testing Framework之断言
  8. android和网络连接相关的类URL,URLConnection,HttpURLConnection,HttpClient
  9. 测试AS3的性能9800粒子
  10. 关于servlet类,继承HttpServlet,但是无法导入HttpServlet包的原因和解决方法