[點晴永久免費OA]無公網IP搞定群暉NAS機+ZEROTIER ONE實現內網穿透
當前位置:點晴教程→點晴OA辦公管理信息系統
→『 經驗分享&問題答疑 』
前言最近剛開始折騰群暉,從5.2到6.0再到5.2再到6.1,期間過程曲折復雜,血淚交融,參考了無數文章,重啟了無數次機器,拷貝了無數文件,以及損失了無數數據。再次提醒大家,數據一定要做好備份,一定要備份。不能有僥幸心理。還好基本都有備份,只是分布在各個公共網盤上,找起來特別麻煩,這也是想要搭建一個私有云的最初動因。 搜索學習過程中發現網上關于群暉的文章很多很多,但敘述詳盡對學習者非常有用的文章大部分都在張大媽這里,所以把自己第一篇原創也發在張大媽。 搭建群暉怎么搭建基本的群暉系統,已經有很多文章,就不再詳細敘述。 簡單說一下我自己的最終方案,是在一臺sony筆記本上搭建了6.1.4系統,然后升級到了6.1.7。i5迅馳cpu,512G硬盤,8G內存,光盤位換成了ssd硬盤,這樣一共512G+512G=1T空間。原本想用一臺十年前的臺式機來搭,但是安裝6.x的系統一直出錯,安裝5.2然后嘗試升級到6也失敗了(數據也丟了),參考了很多文章之后結論是主板不支持,于是最終放棄了。 搭好的系統如下,內網IP 192.168.x.x 在內網把一些基本功能玩了一遍之后,自然就有了在外網訪問這臺群暉的需求。一樣也是查閱了無數文章,研究了無數個方案,最終試驗成功用ZeroTier實現了內網穿透,實現在外網訪問家里的這臺群暉系統。 進入正題為什么是Zerotier One要想外網/公網上訪問家里的群暉,大致方案有兩個:一個是動態域名+公網IP+端口映射。相關文章也很多,限于本文主題就不涉及了。另一個就是內網穿透了,網上常見的方案有很多,比如frp,ngrok,n2n等等,說實話都是沒聽過的名字(雖然算是相關專業從業人員,但也是很久沒有折騰各種黑科技了)。 由于之前有使用hamachi的經驗,所以第一個念頭就是使用hamachi,搜了一圈發現這個軟件已經淡出市場了,而且好像還在墻外,于是就放棄了,不禁還有些唏噓。搜索新近的方案,如上述那些一看到要搭建各種服務器就本能的孩怕,沒有去仔細研究了。 內心還是傾向于找類似hamachi的方案。也就是點對點vpn,只用安裝客戶端,就可以秒互聯。因為我的主要需求是自己在外面拿個手機連自己家里的群暉,也不用對大眾提供服務,所以這種點對點的方式最適合我。更重要的,我也并不希望家里的機器暴露在公網上,而基于vpn的方案恰好能提供這方面的安全性。這么一來就選中了ZeroTier。 ZeroTier方案內網穿透原理ZeroTier One的原理跟hamachi基本一樣,就是虛擬出一塊網卡,連上一個虛擬網絡,安裝了ZeroTier One客戶端的設備可以連入這個網絡,經過授權連接成功之后彼此都在同一網段,可以像在局域網一樣互相訪問,例如訪問共享文件夾,web server,ftp server,聯機游戲(例如打星際),當然也就包括訪問群暉。所以如果你的群暉和你的手機連上了這個網絡,不論兩臺設備具體在哪里,都像同一局域網內,從而實現內網穿透,達到從外網訪問內網群暉的目的。 用畫圖畫了個簡陋的原理圖 主機1可以是群暉主機,主機2可以是手機或平板。只要主機1和主機2都能連到互聯網,安裝上ZeroTier One的客戶端后,就會在本機虛擬出一塊網卡,并獲得對應IP,圖例中是172.28.x.x網段。經過網絡所有人授權后(后面會詳細講解),這兩個主機就可以通過172.28.x.x網段互相訪問了,由于就像在局域網一樣,所以基本沒有任何限制,任何基于TCP/IP的網絡服務都可以訪問到,自然也就可以訪問到群暉了。 注:圖中省掉了公網IP,因為公網IP多少不重要,只要主機能上公網,能連上ZeroTier,就能獲得172網段IP了,也就可以互聯互通了。 ZeroTier One的優勢相比其他流行方案,ZeroTier One有這么幾個優勢:
最重要的是支持多種平臺。支持win、mac、安卓、蘋果,以及多種發型版Linux,比如群暉系統(這也是選擇ZeroTier One的重要原因),如下圖,可以下載spk文件直接在群暉中部署(這里有一個大坑,后面會說到) ZeroTier 直接提供的群暉的安裝版 實際操作過程1. 申請網絡前文提到安裝好ZeroTier One后會虛擬出一塊網卡,得到一個虛擬網絡網段IP,那么如何讓兩臺或者多臺客戶端連入同一虛擬網絡呢,這就需要先申請一個虛擬網絡了。事實上申請這個網絡先于安裝ZeroTier One的客戶端,這是和hamachi不同的地方。 你需要在ZeroTier One網站注冊一個賬號,注冊了賬號即可獲得這個虛擬網絡,然后在網站的網頁上即可管理訪問權限,許可那些客戶端可以訪問你的虛擬網絡。 由于ZeroTier 網站做的實在不太友好,尤其對英文不太好的同學來說簡直就是災難,所以這個部分會講解的比較詳細。不求甚解的話照做即可,不用去管網站上大量的英文說明信息。 首先訪問ZeroTier網站 ,如果你是百度搜ZeroTier,首先會訪問到這里。是不是找不到創建賬號的地方?然后往下拉就會越看越犯怵。不用看了,直接點擊右上login,或者訪問這里 創建賬號 此時就會出現登錄/注冊頁面,點擊Create An Account(為了寫這篇文章我創建了一個新的賬號),到如下注冊頁面,填入郵箱,密碼。點擊創建賬戶(Create An Account按鈕)。 之后會進入下圖所示頁面。什么都不用改,重點的兩個信息我圈出來了:一個是你的內部ID(Internal ID,此例中是 f7578543-394a-489a-a7be-ef08d1850b75,基本用不到;另一個就是下面訂閱選項,默認免費(Free)即可。免費的最多支持100個客戶端,應該夠用了。 創建好賬號 接下來直接點擊最上面菜單中的Network,然后點擊Create,即可創建前述之虛擬網絡——也就是一串id號 創建虛擬網絡 所謂ZeroTier網絡/虛擬網絡,就是后面你的群暉以及手機等設備要連入的虛擬網絡。連到同一個網絡的客戶端互相可以直接訪問。這一串數字id就是這個網絡的本體,上面那個furious_rosenbaum是隨機生成的網絡名,用來描述網絡,當你有多個網絡的時候方便記憶和識別。 注:上圖中右側藍色的數字即表示當前連入這個網絡的客戶端數量。新建網絡沒有客戶端連接,所以是零。 點擊My Networks,進入如下頁面 理論上這里也是不用修改任何地方,幾處重點信息也圈出來了:
此頁面也是管理和監控頁面,也就是后面添加或刪除客戶端,控制那些客戶端能加入此網絡都可以在此處完成。任何可以聯網的設備只要有用戶名和密碼即可登錄ZeroTier One,然后進入此頁面對網絡進行管理,比如手機,平板,從任何位置都可以訪問管理。 注:所謂“客戶端”即安裝了ZeroTier One客戶端軟件的設備。本文到目前為止還沒有涉及到客戶端安裝,也就是說,創建自己的帳號/創建虛擬網絡不依賴于具體客戶端設備或軟件安裝,以及之后的權限管理也都不涉及特定客戶端,任何一個可以聯網的系統都可以操作。這個在你實際使用之后會發現非常有用且方便 將頁面拉到下面,圈出的部分便是監控和管理的主要操作區域。當前沒有客戶端連接的時候如下圖 網絡管理和監控 詳細解釋如下,因為剛剛創建網絡還沒有客戶端加入,所以顯示“No devices have joined this network",當有客戶端加入之后便會在此處看到狀態,離線,在線,離線時間等等;后面Manually Add Member就是加入其他成員,也就是一開始注冊賬號時,你得到的那個內部ID可以用來加入其他人創建的網絡,或者邀請其他人加入你的網絡。其他的部分都可以忽略掉,不用看,沒用,越看越暈。 注:ZeroTier的世界主要有兩個概念,一個是用戶一個是網絡,都是一串數字表示。一個用戶可以加入多個網絡,多個用戶可以加入一個網絡。在本文應用實例中,是只有一個人一個網絡,所有的設備都是我用自己賬號登錄ZeroTier后加入自己的網絡而連接在一起的。 2.安裝Windows客戶端為了演示方便我先在PC電腦上下載ZeroTier的windows客戶端安裝,然后加入上面創建的網絡。 回到ZeroTier網站頂端,點擊最上面菜單第一項Download,進入下載頁面 下載頁面 找到windows客戶端下載,點擊ZeroTier One.msi下載安裝文件到本地。大約12M 下載windows客戶端 一路按默認設定安裝即可(我只好又裝了一遍) 一路next即可 安裝軟件的過程可以看做往系統插了一張新網卡,并把網卡連了一根網線,此網線通往ZeroTier的專有網絡,邏輯上獨立于你當前局域網之外。如果彈出如下窗口,點擊是。 安裝結束后可能會出現的提示,表示新建立了一個以太網口 然后查看系統設備會看到新出現的虛擬網卡ZeroTier One Virtual Port 安裝后ZeroTier網卡出現在設備管理器中 安裝好后,從菜單運行,不會出主程序窗口,而是在任務欄出現ZeroTier One的小圖標,右鍵點擊會出現彈出菜單,在此處點擊Join Network...加入剛剛申請的網絡 加入網絡 注:因為我這臺Windows主機已經安裝過ZeroTier One,所以已已經有節點信息,和曾經加入的網絡(id號),為了安全起見就涂抹掉了(我嘗試過卸載重裝還是會有這些信息,暫時不管了),但不影響你加入新的網絡。在此例中就是新申請的網絡 1d7193******63d387 點擊 Join Network...會彈出一個小窗,填入新申請這個網絡id號,再點擊Join即可 加入網絡 重點來了,此時回到頁面 刷新一下(或者直接從客戶端系統欄圖標上右鍵點出菜單,點擊"ZeroTier Central"進入此頁面),將頁面拉下來,此時就會看之前No Devices have joined this network的地方出現這個客戶端,顯示online 客戶端已經可見 但是別急,此時客戶端并未連上這個虛擬網絡,需要進一步授權。在此管理頁面勾選前面的復選框(auth?列),此時這個客戶端就終于連上這個網絡了。 可以看到,勾選之后,左側虛線變成了綠色實線,表示客戶端已經連上這個網絡(1d7193******63d387)。另外客戶端在此虛擬網絡中的IP也已經得到,為10.147.18.99。中間short name和description的部分,我也填入了相應短名稱和描述,這樣方便在多個客戶端連入后,明確知道各個客戶端分別是什么。這個很有用,整個ZeroTier世界里面全是數字,就靠這個描述和名稱來標識各個客戶端了。 在網頁端授權之后,用ipconfig查看一下,這個IP就是網頁上那個IP。 方法:win+r,輸入cmd,出現命令行終端,打“ipconfig"回車即可看到當前系統的網絡配置情況。 查看本機IP,多了一個以太網2的連接 詳細說明在Windows的安裝過程是為了大家理解ZeroTier One客戶端的工作原理,網頁管理配置的方法。這樣在群暉上安裝時理解起來就簡單了。 3. 在群暉上安裝ZeroTier One客戶端前述內容雖然看起來復雜, 但是如果理解了再回頭看就會覺得非常簡單。 整個過程真正的難點是在群暉安裝ZeroTier One 客戶端。前面提到過,這里有一個大坑——找不到安裝文件!!
如果你點對應的按鈕下載,會出現404錯誤。試了ZeroTier群暉下面所有的下載鏈接,全都是404 官網下載不到安裝文件,接著用文件名全網搜也沒有搜到別的下載源,這下就傻眼了。讓我一度以為是不是ZeroTier也跟群暉鬧翻了之類。把所有應用都下架了。。 萬般無奈之下只好硬著頭皮研究怎么直接在群暉上用源碼編譯,翻遍了git和zerotier的各種文檔,反復嘗試才知道,如果要編譯,不能直接在群暉系統上操作,只能搭建專門的開發環境,需要自己裝一個linux系統了。。 在這里卡了兩天,付出時間精力最多,卻沒有什么可寫的,因為
然后奇跡出現了 是不是很眼熟,當下的心情就是——那畫面太美不敢看啊。 熱淚盈眶啊 所有帶syn字段,spk結尾的都是ZeroTier One 給群暉的安裝包,有種老鼠掉進米缸的感覺了。 但是如何確定哪個版本還要費一點周折。方法一,可以在這個平臺支持列表查詢自己cpu類型,決定下載哪個版本。但在這個列表,我卻找不到我筆記本i5 cpu對應的版本,所以用方法二:網上下一個putty.exe,然后ssh連到自己群暉的終端。 啟動putty 在hostname處輸入群暉的IP,點擊open。彈出窗口輸入群暉用戶名密碼 用戶密碼同群暉用戶密碼 登錄后打命令uname -ar,就會出現cpu版本信息,大概長這樣: 查詢cpu/系統版本號 這就很明顯了,我這個安裝在筆記本上的群暉6.1.7,是64位系統,bromolow的版本,下載zerotier-1.2.8r0-syn-bromolow-6.1.spk就可以了,這回終于沒有404了,美滋滋啊。 再發一遍就是圖中這個東西,看到了吧。 在群暉端安裝就相對簡單了。登錄DSM,打開套件中心,選擇手動安裝,找到剛剛下載的spk文件,點擊下一步 手動安裝 然后會出現ZeroTier One的版本信息 因為我系統里早已安裝了ZeroTier One的套件,所以這幾步只是演示,可能和第一次安裝界面稍有不同。安裝過程大約幾分鐘。安裝完成后可以在主菜單找到,點擊運行。 運行后主界面 運行后主界面基本沒有內容, 唯一的操作就是在右下角[Network ID]填入網絡id號,然后點擊join。 加入后,刷新ZeroTier 點擊網絡id進入管理頁面 客戶端已上線 和第一個windows客戶端一樣,可以看群暉的ZeroTier One客戶端已經在線online,但未授權,左側為虛線。點擊復選框勾選授權,此時群暉連入虛擬網絡 提示: “在線”("online")的意思就是客戶端那一側ZeroTier One軟件已經啟動正常運行,在ZeroTier網絡上可以看到這個客戶端;"授權"是指客戶端能不能連入當前這個網絡,默認是"未授權"("Not Authorized")狀態,需要網絡所有者(即創建相應網絡的注冊賬號,此賬號登錄ZeroTier后才能訪問此頁面)授權——勾選左邊的復選框 群暉客戶端上線入網 同Windows客戶端一樣,給群暉客戶端填入短名稱DSM home表示是家中的群暉主機,在描述中輸入Synoloty DSM host,這個可以隨便寫,只要自己看了知道是那臺機器就行。 授權之后群暉就應該已經介入此虛擬網,在PC端打開cmd,命令行ping一下看通了沒有。如ZeroTier管理頁面所示群暉的ZeroTier網IP是10.147.18.172 ping值很低,可見鏈路沒有經過服務端,兩臺機器是直接交換數據的(基于ZeroTier那個虛擬網卡) 在此虛擬網測試下群暉,訪問10.147.18.172:5000 登錄后一切正常 正如前面反復提到,連上ZeroTier One的虛擬網絡(加入同一個網絡id)后,經過擁有者授權,所有客戶端就像在一個局域網里,所有的端口都是開放可以互相訪問的。 https可以訪問 Photo Station可訪問 Video Station可訪問 外網連接測試上面的測試雖然走的ZeroTier網絡,但是Windows主機和群暉主機實際都在同一內網。所以還需要測試真正外網連接。模擬在外面用手機連接家里的群暉,看ZeroTier One的內網穿透是否真正實現。 手機端安裝ZeroTier One客戶端推薦用蘋果,安卓系統正常安裝流程需要訪問google play。為了測試兩個系統都安裝,現在用安卓系統演示。 在手機上安裝ZeroTier One安卓客戶端,裝好之后大概這個樣子 我是科學上網用google play安裝的 用google play裝,啟動之前先把手機wifi關掉,使用數據上網 啟動ZeroTier One應用,點擊主界面上方的加號,出現如下界面。輸入網絡id號,點擊Add Network 運行ZeroTier One App 回到主界面會看到新添加的網絡。上面那個網絡是我之前創建的,也是我實際在用的,暫時可以忽略掉。 下面是今天新申請的用來做演示的網絡,現在加入的是這個網絡。 點擊開關打開網絡 點擊網絡id號右下的小開關,會彈出創建VPN連接請求,確認即可 手機端的ZeroTier One 安裝配置就完成了,接著在網頁管理端授權這個客戶端使之最終連入虛擬網絡。 管理頁面配置讓手機連入虛擬網絡打開https://my.zerotier.com/network/1d71*****387 刷新,會看到新的手機客戶端已經上線,但未被授權。 手機客戶端已成功運行 如法炮制,給手機客戶端授權,并輸入短名稱和描述。勾選授權之后,刷新網頁如下: 將手機客戶端授權連入ZeroTier網絡 提示: 隨著客戶端增多,就能發現短名稱和描述的作用。在這個頁面通過名稱和描述就能很清楚分辨各個客戶端是什么。不然對著一串數字很容易搞不清楚誰是誰了。 此時手機、群暉、Windows電腦就像連入同一個路由器wifi下,各自的IP都都在網段10.147.18.*。 測試手機從外網連接家里的群暉此時人和手機物理上仍然是在家里,但因為手機已經斷開家里的寬帶,使用數據上網,所以場景等同于手機現在是從外網對家里的群暉進行連接。可以看到手機端已經連上了VPN,打開群暉官家,添加現有設備,即家里的群暉。 小提示要輸入端口號 連接群暉 登錄(穿透)成功 切換到桌面模式可以看到更詳細狀態。DSM mobile中點擊齒輪圖標,選擇桌面模式 可以看到各個套件 至此已經證明穿透成功,從外網通過ZeroTier的虛擬網絡連上了家里的群暉。 小結第一次發文,沒想到寫了這么多,寫了這么久。一張圖一張圖的改上傳,還老傳錯,最后花了近八個小時才算基本完成。如果用過softether VPN或者hamachi玩過聯網游戲(年齡暴露),那么應該很快可以上手ZeroTier One,基本原理完全一樣,ZeroTier的改進是管理虛擬網絡是獨立于客戶端的,可以完全通過網頁完成。安裝好之后,所有客戶端都加入同一個網絡id,則如同連入同一個路由器,處于同一個局域網。那么互相訪問就跟在局域網一樣,在外連接群暉就跟在家連接一樣了,只需要通過ZeroTier網絡里的IP連接即可。至于其他幾種方案,frp,ngrok等,只是看了下文章,沒有實際使用所以也不能評判好壞。如果只是從文章的描述來看,個人更傾向于ZeroTier,最大的兩個優點,一是不用搭建服務器,二是有一定安全防護機制,一定要虛擬網絡擁有者授權,新的客戶端才能連入網絡。 整個過程看起來很復雜, 理解之后應該很簡單。真正的大坑是ZeroTier 官網的spk文件下載鏈接不對,導致沒有安裝文件安裝。幸好誤打誤撞找到了文件,spk手動安裝還是很順利的。 補充: 群暉端在DSM里面起ZeroTier One可能起不來,或者加入網絡加入不了,點擊沒反應。可能是跟我切換了網絡有關。解決辦法是通過putty連接到終端,然后再執行命令行命令離開原有網絡加入新網絡即可。加入成功后網頁管理端就能看到新的客戶端。授權時候群暉就連入你創建的ZeroTier的網絡了 該文章在 2021/3/13 20:04:14 編輯過 |
關鍵字查詢
相關文章
正在查詢... |