一.介紹

我以前介紹了Syncthing,做爲一款開源的文件同步程序,它的功能仍是很是強大的,我也很高興能看到它被愈來愈多的人知道和使用,前幾天有位朋友留言說讓我介紹下Syncthing的中繼服務器的搭建,在這以前的一段時間我在網上偶爾看到過有朋友介紹過一次。python

首先來科普一下? 不一樣於Resilio Sync(BT Sync)使用BT協議進行數據傳輸,Syncthing使用了BEP對等自由塊交換協議(Block Exchange Protocol),這兩個卻是沒啥優劣的問題,主要是BT Sync在老版本的時候支持DHT,然後來刪掉了,這也是致使它的官方服務器在被幹擾以後幾乎徹底沒法使用的緣由之一,因此當初有人說老版本(支持DHT)的依舊可以使用。而Syncthing不同的是它沒有使用DHT,可是也沒有像BT Sync同樣只有官方服務器(通告+中繼服務器),因爲開源,因此Syncthing的服務器都是能夠本身部署的,這也就是說,即便官方的服務器出了問題,也可以隨時有服務器去代替它。linux

那麼爲何要有這兩種服務器呢? 這主要是由於P2P的原理,通告(Announcement)/發現(Discovery)服務器用於發現和索引用戶,就和你BT的Tracker(這個其實也是通告服務器)同樣,你接入了就等於在裏面掛了名,而後服務器會把其餘人告訴你,這樣大家纔可以連上。這個是公網IP的狀況,若是沒有公網IP呢?這就要輪到中繼(Relay)服務器出手了,要麼是輔助實現打洞,要麼是轉爲C/S模式。總之,中繼服務器就是爲了在特殊網絡環境下(可是在國內不少家庭寬帶就是這樣的)的正常使用而存在的。git

咱們本次就不說通告服務器(Syncthing官方實際上是叫作Global Discovery服務器的),由於目前官方的服務器還正常運做,不過感興趣的或者想創建企業內部的本地Discovery服務器能夠本身研究下github

GitHub——>傳送門
文檔——>傳送門bootstrap

PS.以前寫的Syncthing的搭建和使用——>傳送門sublime-text

二.安裝

好了,讓咱們開始嘗試下搭建安全

首先,你得先確認一點,你搭建的中繼服務器是私人(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——>傳送門