有關nas中(zhong)使(shi)用(yong)zerotier實(shi)現(xian)內網穿透的(de)配(pei)置說(shuo)明
一、背景介紹
由于工作變動,很(hen)久不(bu)寫博客了。
新入坑nas(群暉 220+),原(yuan)因不闡(chan)述,經過一段時(shi)間折(zhe)騰,陸續實現以下用途(tu):
1、手(shou)機(ji)照片自動備份。
2、工作資料多機器自動同(tong)步(bu)。(家、單位(wei)、常駐出差地(di)點(dian))
3、網盤本(ben)地化(把存儲在某度(du)云上(shang)大(da)概200G的照片、資料全部挪(nuo)到nas上(shang))
4、nas部署(shu)qt,遠程下載
中間踩了不少(shao)坑,趟雷(lei)的(de)過程(cheng)很有共(gong)性,供大家參考,本(ben)文重(zhong)點說(shuo)zerotier實現內網穿透。
1、zerotier內網穿透效果:
1、把分散在廣域(yu)網(wang)上的多(duo)個設備(pc、手機(ji)、nas等),通過虛擬組(zu)網(wang)技(ji)術,實現局域(yu)網(wang)化,提升訪問(wen)和傳輸(shu)速度。
2、不(bu)需要固(gu)定(ding)ip,不(bu)需要域名,不(bu)需要端口映射之類。
3、需(xu)要在各(ge)設備(bei)上安(an)裝并運行(xing)zerotier 的客戶端。
2、zerotier內網穿透原理:
先說明下,沒太細研究,純(chun)猜測(只(zhi)吃(chi)豬肉就好,不(bu)關心(xin)豬吃(chi)啥飼料)。
1、由zerotier客戶(hu)端向zerotier中(zhong)心端(zerotier官方(fang)服務器)提交運行zerotier客戶(hu)端設備的外(wai)網ip,端口(kou)。
2、中心端分配(pei)虛擬局域(yu)網ip。
3、客戶端通過虛擬局域網ip直接通訊,這里(li)提升速(su)度的核心,是繞開中心端的數據轉發。
4、中間應該有(you)些(xie)加密、隧道打通之類的東(dong)西(xi)。
3、環境:
設備:
1、群暉 220+ ,放在家里(DSM7.0版(ban)本)。
2、公(gong)司pc (win10)。
3、家pc(win10) 。
4、N臺手機(小(xiao)米)。
5、電視(shi)盒子(小米)……
網絡:
1、家,北方某省移動寬帶100M外網出口,光貓撥(bo)號,小米(mi)路由(you)器(qi)做無(wu)線AP。
ps:曾經探討光(guang)貓做(zuo)橋接,小米(mi)路由器(qi)負責撥(bo)號,鐵通的安裝(zhuang)人員死(si)活(huo)不同意,懶得(de)廢話,放棄
2、公司(si) 中國電信100M 出口(kou)。
3、出差地,聯通出口,帶寬不詳。
4、手機,移動4G
5、沒有申請固(gu)(gu)定域名,沒有固(gu)(gu)定ip,也沒研究ipv6地址之類。
二、具體配置方法
1、zerotier官網注冊賬號,申請虛擬組網ID
這一部分都是常規申請(qing)操(cao)作(zuo),目的是到zerotier官網(wang),申請(qing)一個zerotier虛擬(ni)組網(wang)id,后續(xu)新加(jia)入(ru)客戶端,也需(xu)要(yao)在官網(wang)主頁上要(yao)進行(xing)授權審(shen)批。
具體這(zhe)一部分的操作流程,可以查看這(zhe)個鏈接:
2、在NAS上利用docker安裝運行zerotier
具(ju)體這一部分的操作流程,還是查看這個鏈接:
這里需要說明(ming)的(de),我下載(zai)和安(an)裝(zhuang)的(de)是zerotier/zerotier-synology,比較(jiao)小一共27M(1.81版本zerotier),配(pei)置(zhi)什么的(de)都是一樣(yang)的(de)。
關于運行zerotier-cli join 233ccaa88751182c ,這一命令(ling)有(you)以下幾點(dian)補充內容:
a)后頭這(zhe)一(yi)串(chuan)字(zi)符,要改成你在zerotier申請到虛擬(ni)組網id。
b)這個(ge)命令(ling)只需要(yao)運(yun)行(xing)一次。
c)執行該(gai)命(ming)令只是向zerotier服(fu)務端發出申請,需要登(deng)錄(lu)到(dao)zerotier官網里去(qu)審批同意,審批同意之(zhi)后才算正式加入。
d)pc端(duan)同樣要運行zerotier的(de)客戶端(duan),申請(qing)加入(ru)虛擬(ni)組網(wang)id,并且在服(fu)務端(duan)審(shen)批(pi)同意(yi)之(zhi)后,才能(neng)正式加入(ru)到虛擬(ni)網(wang)中。
3、判斷組網是否成功
組網成功之后,在pc端瀏覽器用**.quickconnect.to域名訪問nas,會發現quickconnect會(hui)自(zi)動解析出(chu)虛擬組網(wang)分(fen)配的IP。
這時候無論是用synology driver client,還(huan)是ds file ,ds phtoto,ds video同步(bu)文件還(huan)是電影,速度都提高了(le)一個層級。
對比我本人實測的數據,使用(yong)zerotier之(zhi)前,synology 同步文件速度約30K/s,使用(yong)zerotier之(zhi)后,synology速度穩定在2M/s左右(you)。
三、有關持久化
非IT人員對持久化理解起來有點累,說說實際情況吧,不做持久化,只要NAS一不小心(xin)掉電重(zhong)啟(qi),或(huo)者NAS里的docker異常(chang)重(zhong)啟(qi),都會導(dao)致zerotier組(zu)網(wang)失敗。
表現(xian)形式,就是quickconnect訪問無法解析出(chu)ip,手工在(zai)docker中(zhong)執行zerotier-cli join *** 的(de)時(shi)候,反饋500錯(cuo)誤(wu)。
解決辦法:
參看這個材料。
1、NAS開啟ssh
2、用putty之類telnet軟件訪問NAS
3、訪問成功之后,用(yong)sudu -i 切換到root權限(xian)。
4、安裝(zhuang)和配置tun.ko
特別說(shuo)明的是(shi),他這(zhe)個有錯誤(wu),稍(shao)微懂點腳本都知(zhi)道,#是(shi)注釋(shi)符號,第一句話那么寫根本不會執(zhi)行,沒有任何意義。
所(suo)以n應(ying)該(gai)是(shi)\n ,估計博主也(ye)是(shi)轉(zhuan)來轉(zhuan)去,不同編輯器導致信息就失(shi)真了。
#錯誤寫法 echo -e '#!/bin/sh -e ninsmod /lib/modules/tun.ko' > /usr/local/etc/rc.d/tun.sh #正確寫法 echo -e '#!/bin/sh -e \n insmod /lib/modules/tun.ko' > /usr/local/etc/rc.d/tun.sh
5、關閉ssh
重啟之后(hou),一切正(zheng)常。
臨時解決辦法:
在找(zhao)到上述解決(jue)方案之前,我找(zhao)到一個傻辦法(fa),就是(shi)刪掉docker,重新配置zerotier ,發現竟然可以。
以上(shang)。。。。
