syncthing
此项目主要用于文件的同步,支持文件版本管理等。
相关文档和下载链接:https://github.com/syncthing
优点
- 轻量
- 不受网络环境限制,社区有丰富的发现服务器和中继服务器节点池
- 全平台适用Windows,macos,Android
在文件同步的过程中会经过他人搭建的中继服务器,安全性和速度都难保证,而且在文件同步时需要要求两端的设备要同时在线。
解决
- 搭建一个自己的发现服务器和一个中继服务器
- 由于服务器是长期不会关机的,我们可以在服务器中也部署一个syncthing的客户端
在服务器中部署客户端
我使用的是Ubuntu,可以根据你的系统来更改,还是熟悉的下载解压环节。
wget https://github.com/syncthing/syncthing/releases/download/v1.27.5/syncthing-linux-amd64-v1.27.5.tar.gz
tar -zxvf syncthing-linux-amd64-v1.27.5.tar.gz
打开一个会话来运行
screen -R syncthing
./syncthing
你可能会看到类似的一下日志
start] 2024/04/04 22:00:48 INFO: syncthing v1.27.5 "Gold Grasshopper" (go1.22.1 linux-amd64) builder@github.syncthing.net 2024-03-25 03:45:14 UTC
[CB4YL] 2024/04/04 22:00:49 INFO: My ID: CB4YLTI-TI2JHA2-PLBCMBI-UY6PTUY-455FFHQ-DLNXIR4-YOZQEIA-JA5F5AR
[CB4YL] 2024/04/04 22:00:50 INFO: Single thread SHA256 performance is 332 MB/s using crypto/sha256 (332 MB/s using minio/sha256-simd).
[CB4YL] 2024/04/04 22:00:50 INFO: Hashing performance is 270.22 MB/s
[CB4YL] 2024/04/04 22:00:50 INFO: Overall send rate is unlimited, receive rate is unlimited
[CB4YL] 2024/04/04 22:00:50 INFO: Using discovery mechanism: global discovery server https://discovery.syncthing.net/v2/?noannounce&id=LYXKCHX-VI3NYZR-ALCJBHF-WMZYSPK-QG6QJA3-MPFYMSO-U56GTUK-NA2MIAW
[CB4YL] 2024/04/04 22:00:50 INFO: Using discovery mechanism: global discovery server https://discovery-v4.syncthing.net/v2/?nolookup&id=LYXKCHX-VI3NYZR-ALCJBHF-WMZYSPK-QG6QJA3-MPFYMSO-U56GTUK-NA2MIAW
[CB4YL] 2024/04/04 22:00:50 INFO: Using discovery mechanism: global discovery server https://discovery-v6.syncthing.net/v2/?nolookup&id=LYXKCHX-VI3NYZR-ALCJBHF-WMZYSPK-QG6QJA3-MPFYMSO-U56GTUK-NA2MIAW
[CB4YL] 2024/04/04 22:00:50 INFO: Using discovery mechanism: IPv4 local broadcast discovery on port 21027
[CB4YL] 2024/04/04 22:00:50 INFO: Using discovery mechanism: IPv6 local multicast discovery on address [ff12::8384]:21027
[CB4YL] 2024/04/04 22:00:50 INFO: Ready to synchronize "Default Folder" (default) (sendreceive)
[CB4YL] 2024/04/04 22:00:50 INFO: TCP listener ([::]:22000) starting
[CB4YL] 2024/04/04 22:00:50 INFO: Relay listener (dynamic+https://relays.syncthing.net/endpoint) starting
[CB4YL] 2024/04/04 22:00:50 INFO: QUIC listener ([::]:22000) starting
[CB4YL] 2024/04/04 22:00:50 INFO: Completed initial scan of sendreceive folder "Default Folder" (default)
[CB4YL] 2024/04/04 22:00:50 INFO: GUI and API listening on 127.0.0.1:8384
[CB4YL] 2024/04/04 22:00:50 INFO: Access the GUI via the following URL: http://127.0.0.1:8384/
[CB4YL] 2024/04/04 22:00:50 INFO: My name is "iZt4n5e86mbo1v20qu9cesZ"
[CB4YL] 2024/04/04 22:00:50 WARNING: Syncthing should not run as a privileged or system user. Please consider using a normal user account.
[CB4YL] 2024/04/04 22:01:09 INFO: quic://0.0.0.0:22000 detected NAT type: Port restricted NAT
[CB4YL] 2024/04/04 22:01:09 INFO: quic://0.0.0.0:22000 resolved external address quic://47.236.184.156:22000 (via stun.syncthing.net:3478)
[CB4YL] 2024/04/04 22:01:10 INFO: Detected 0 NAT services
[CB4YL] 2024/04/04 22:01:34 INFO: Listen (BEP/tcp): TLS handshake: EOF
[CB4YL] 2024/04/04 22:01:46 INFO: Listen (BEP/tcp): TLS handshake: EOF
[CB4YL] 2024/04/04 22:02:48 INFO: Joined relay relay://118.172.178.77:2206
将防火墙的8384端口开放
看到GUI和API这行ip地址为:127.0.0.1:8384,此时你可以尝试使用你的服务器公网IP+端口号8384的形式来访问,但是会发现是一片空白。这是因为,127.0.0.1:8384是在本地监听的地址,我们要将监听地址改为:0.0.0.0:8384对公网监听。
解决访问GUI一片空白
编辑 Syncthing 的配置文件(通常位于 ~/.config/syncthing/config.xml
),将 <gui enabled="true" tls="false">
部分中的 address
属性更改为您的公网 IP 地址和端口,例如:<address>0.0.0.0:8384</address>
。
这时你再访问时就可以了。
安全问题
在前面的日志中你会看到一行警告,翻译过来就是不要使用root用户来运行此程序,具体会发生什么安全问题我也不太清楚。但是我可以防止别人的字典攻击,使用fail2ban来限制密码试错的次数
使用 fail2ban
工具来监控登录失败的尝试,并在达到一定次数后临时封禁攻击者的 IP 地址。你可以通过以下步骤来安装和配置 fail2ban
:
- 安装
fail2ban
:
sudo apt update
sudo apt install fail2ban
创建一个针对 Syncthing Web 服务的 fail2ban
配置文件。你可以在 /etc/fail2ban/filter.d/
目录下创建一个新的配置文件,例如 syncthing.conf
,内容如下:
[Definition]
failregex = .* <HOST> .* POST /rest/system/config .* 401
编辑 /etc/fail2ban/jail.local
文件,在其中添加以下内容,以设置针对 Syncthing 的规则:
[syncthing]
enabled = true
port = http,https
filter = syncthing
logpath = /var/log/syncthing/syncthing.log
maxretry = 3
重新启动 fail2ban
服务:
sudo systemctl restart fail2ban
这样配置后,fail2ban
将监视 Syncthing 的登录尝试,并在达到 3 次失败尝试后临时封禁攻击者的 IP 地址。
部署发现服务器
https://github.com/syncthing/discosrv/
下载解压后在后台运行,会有一串ID
在各个客户端中设置-》连接-》全局发现服务器(default)中填写
https://《你的服务器公网IP地址》:8443/?id=<你发现服务器id>
部署中继服务器
https://github.com/syncthing/relaysrv/
下载解压后在后台运行,会有一串relay协议开头的URL
复制并在各个客户端中设置-》连接-》协议监听地址(default)中填写
总结
这个东西我找了好几个教程,都会出现在服务器部署客户端时可以访问web页面但是一片空白,应该多去看文档和报错日志才能更好的解决问题
如果syncthing部署在局域网几台机器,会访问外网同步吗?怕IT查