本文轉載自 Leon 的網誌
目前全球遭受新冠病毒的威脅,許多企業紛紛開始採用遠端工作模式減少人際接觸,然而對一些小型企業來說,遠端工作難以施行的原因可能是因為它們的 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
其它作業系統的安裝方式可以參照 ZeroTier 網站。
ZeroTier Network
ZeroTier Network 就是虛擬區網,用戶可以自行建立多個 ZeroTier Network 供不同的目的使用(公司網、親友網、老司機網等等),必須先建立至少一組的 ZeroTier Network 後再為每台裝置(電腦、手機)加入那個 Network。
ZeroTier Network 的建立與管理是透過 ZeroTier Central 這個網站來操作,註冊的過程我們快速跳過,快轉進入到 ZeroTier Central 的 Networks 頁面:
按左上角的「Create a Network」會幫我們建立一組 ZeroTier Network,每個 Network 由十六碼的 ID 與名稱組成,ID 是 Network 的獨立識別碼,建立後就不可被更改,ID 也是之後我們要在本機端加入 Network 的依據,名稱則只是便於在 ZeroTier Central 操作時識別而已,可隨意命名。
進入剛剛建立的那個 Network,裡面看起來很複雜,可是其實以簡單的用戶端能互聯這樣的需求來看,要設定的地方不多。
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 ################
後面的井字號用 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 一節。