Nuxtstop

For all things nuxt.js

自己的 VPN 自己建,用 ZeroTier 建構自己的虛擬內網

自己的 VPN 自己建,用 ZeroTier 建構自己的虛擬內網
4 0

目前全球遭受新冠病毒的威脅,許多企業紛紛開始採用遠端工作模式減少人際接觸,然而對一些小型企業來說,遠端工作難以施行的原因可能是因為它們的 IT 環境尚未建置 VPN,對這樣的需求來說,我們可以利用 ZeroTier 來建構自己的 VPN,ZeroTier 不需要太多的網路技術知識,對一般人而言也可以輕鬆架好架滿。

下載與安裝

ZeroTier 安裝在本地的客戶端稱為 ZeroTier One,ZeroTier One 支援多個平台,包括 macOS、Linux、Windows、iOS、Android 等等,以 Debian 系的 Linux(elementary OS、Debian、Ubuntu)來說,可以透過執行下面這行指令自動幫我們設好 APT 庫與金鑰:

curl -s https://install.zerotier.com | sudo bash
Enter fullscreen mode Exit fullscreen mode

其它作業系統的安裝方式可以參照 ZeroTier 網站。

ZeroTier Network

ZeroTier Network 就是虛擬區網,用戶可以自行建立多個 ZeroTier Network 供不同的目的使用(公司網、親友網、老司機網等等),必須先建立至少一組的 ZeroTier Network 後再為每台裝置(電腦、手機)加入那個 Network。

ZeroTier Network 的建立與管理是透過 ZeroTier Central 這個網站來操作,註冊的過程我們快速跳過,快轉進入到 ZeroTier Central 的 Networks 頁面:

ZeroTier Central

按左上角的「Create a Network」會幫我們建立一組 ZeroTier Network,每個 Network 由十六碼的 ID 與名稱組成,ID 是 Network 的獨立識別碼,建立後就不可被更改,ID 也是之後我們要在本機端加入 Network 的依據,名稱則只是便於在 ZeroTier Central 操作時識別而已,可隨意命名。

進入剛剛建立的那個 Network,裡面看起來很複雜,可是其實以簡單的用戶端能互聯這樣的需求來看,要設定的地方不多。

ZeroTier Central

Settings

Network 的基礎設定。

  • Network ID:Network 獨立識別碼,用於之後加入該 Network 所使用。
  • Name:Network 名稱,可自行取名。
  • Access Control:請選 PRIVATE,確保每個加入的裝置都是你認得的。

下面 Advanced 那邊是一些 IP 的技術參數,可以不用動。

Members

加入本 Network 的裝置,目前應該是空白,到後面在本機端加入這個 Network 後就會有裝置清單與簡單的管理介面出現。

Flow Rules

更細節的流量規則,一樣不用動。

Sharing

把本 Network 的管理頁面分享給其它 ZeroTier 帳號。

最單純的情境下,四大區塊其實什麼也不用動。

把裝置加入 Network

前面我們已經建立了一組 ZeroTier Network,要把一部已經裝好 ZeroTier One 的 Linux 加入那個 Network,首先把 Network ID 記下來,然後搭配 ZeroTier One 的命令工具 zerotier-cli 使用:

sudo zerotier-cli join ################
Enter fullscreen mode Exit fullscreen mode

後面的井字號用 Network ID 填上。

因為前面在 ZeroTire Central 的 Network 的設定我們用了 private 的存取控制,所以每當有新裝置加入這個 Network 時,我們必須再回到 Network 的管理介面去授權這台新裝置加入我們的 Network。

回到 ZeroTier Central 的 Network 管理介面,在 Members 區段下應該可以發現有剛加入的新裝置,在 Auth? 位置打勾對它進行授權即可。另外也可以幫這個裝置命名方便之後的識別。

只要重複上面的步驟把每台裝置都加入 Network 後,就可以透過 ZeroTier 幫我們建構的虛擬區網互連了。

進階應用

橋接網路,可以透過在公司的那台電腦當作跳板存取公司內網的網站,或是身陷中國 GFW 內也可以透過家裡的電腦當跳板存取自由的網路。

ZeroTier 安全嗎?

ZeroTier 的安全機制是建立在端對端的加密連線上,在 A、B 兩台電腦間是直接連線的,並不透過 ZeroTier 作為中介,並且這兩端的連線是加密的,僅有彼此能為訊息解密,而端點間的加密與認證機制也是可以信賴的。在某些情況下當兩端無法直接連線時,可能會透過 ZeroTier 的中介機台作為溝通的媒介,但由於前面提到的端對端的加密連線機制,中介機台是無法看到原始的資料的,所以總的來說,ZeroTier 是安全的,不過也還是要保有「世界上沒有絕絕對對的安全」的觀念,有疑慮、有芥蒂、覺得沒花錢就是不安心、不爽快、手會癢,那就不要用。

關於詳細的 ZeroTier 的安全機制,參見〈Protocol Design Whitepaper〉的 Cryptography 一節