15 分鐘建立屬於自己的 VPN 伺服器 — 利用 Algo, DigitalOcean 和 Google Cloud Shell | Codybase - Hong Kong Web Developer/Designer Community
a person covering face with frosted glassa person covering face with frosted glass
Photo by Jamie Street on Unsplash

15 分鐘建立屬於自己的 VPN 伺服器 — 利用 Algo, DigitalOcean 和 Google Cloud Shell

Hangindev

Hangindev

最近從友人口中得知,香港被美國人口普查局網站封鎖,令一向對商業化的 VPN 服務沒多大興趣的我終於扚起心肝,試用 Algo 這個開源方案,架設個人 VPN 伺服器。

方案的作者是帶著最簡可行商品 (Minimum Viable Product) 的設計思想開發 Algo 的,簡化架設一個安全可靠 VPN 的步驟,減少可客制化的地方,從而降低安全漏洞出現的風險。用家只需要在 Linux 環境下執行它的指令,回答幾條問題,就可以安裝到自選的雲端伺服器上。

由於筆者使用的是 Windows 系統,又不想設定 Windows Subsystem for Linux,結果決定使用 Google Cloud Shell 連接 Virtual Machine (VM),執行安裝的指令。以下是安裝及部署過程。

Google Cloud Shell 讓使用者幾秒內就可以透過瀏覽器連接至屬於你 Linux 環境, 並預先設定好各種常用的開發與部署工具,包括 python, node, npm 等。 了解更多

部署 VPN 伺服器

1. 連接 Google Cloud Shell

登入(或註冊) Google Cloud Console,點擊右上方 Activate Cloud Shellshell icon按鈕連線至 Cloud Shell。

Google Cloud Shell

2. 下載 Algo

在 Cloud Shell 中輸入以下指令,下載並移動到 algo 資料夾

git clone https://github.com/trailofbits/algo.git && cd algo

輸入指令安裝 dependencies

python3 -m virtualenv --python="$(command -v python3)" .env &&
source .env/bin/activate &&
python3 -m pip install -U pip virtualenv &&
python3 -m pip install -r requirements.txt

(使用 local system 而非 Cloud Shell 的用家需要自行安裝 python3 和 virtualenv, 詳情可參考這裡 Step3)

3. 增減 VPN 用家

按 Open Editor 打開編輯器,在左面的 Explorer 中你會見到剛下載的 algo 資料夾,展開並點選config.cfg。在users下加入會使用這個 VPN 的裝置名稱,最多 250 個,完成後按ctrl+s儲存。

Cloud Shell Editor

4. 準備 DigitalOcean API Key

Google Cloud Shell 只是設定和執行 Algo 安裝指令的地方,實際的 VPN 伺服器需要部署到另外的雲端平台,我在以下將示範使用 DigitalOcean 部署,但你亦可以選擇 AWS, Azure, GCP 等雲端平台。(DigitalOcean 收費最平為每月 5usd, 新註冊有兩個月免費)

開新分頁登入或註冊 DigitalOcean 後, 在左面目錄點選 ACCOUNT 下的 API,按 Generate New Token,輸入 API key 名稱及確保write已被剔選 ✅,按 Generate Token。複製剛產生的 Token,或保持分頁打開。

DigitalOcean generate token

5. 執行 Algo 指令

回到 Cloud Shell,輸入./algo指令,根據個人所需回答問題,以下是我的答案:

  • What provider would you like to use? 1
  • Name the vpn server? algo
  • Do you want macOS/iOS clients to enable "Connect On Demand" when connected to cellular networks? n
  • Do you want macOS/iOS clients to enable "Connect On Demand" when connected to Wi-Fi? n
  • Do you want to retain the keys (PKI)? n
  • Do you want to enable DNS ad blocking on this VPN server? n
  • Do you want each user to have their own account for SSH tunneling? n
  • Enter your API token. 貼上剛生成的 Token。Token 不會顯示出來,貼上後按 Enter 就可以了。
  • What region should the server be located in? 7

等待完成 ☕...

完成後將會看見以下畫面

Algo installation completed

6. 下載客戶端的設置

在 Cloud Shell 輸入以下指令,下載客戶端(config.cfg 中的 users)的設置。

zip -r configs configs
dl configs.zip

7. 刪除 algo 資料夾

下載完成後你就再不需要這個資料夾,輸入cd ../回到上個層目錄,輸入rm -rf algo刪除資料夾。

連接你的 VPN

把剛下載的configs.zip解壓縮,在應用程式平台 (App Store/ Google Play/ Microsoft Store/ Mac App Store) 下載 WireGuard,使用 configs\[ip address]\wireguard 中的 .conf 檔案或 .png QR code 加入 VPN 隧道。成功啟用後可到 whatismyipaddress.com 查看"你的 IP 位址"。🕵️‍♀️

結語

使用 Algo 架設 VPN 比想像中簡單,大部份的時間都是在設置開發環境或註冊雲端服務而非設置 VPN 伺服器本身。日後要使用 VPN 的話,Algo 都會是我的選項之一。始終比起 closed source 的商業軟件,我偏向相信 open source 公開透明的制度。話說回來,筆者是個 Web Developer 而非網絡安全專家,故此一日未能完全明白 Algo 的開源碼及其背後原理,都會對它的安全性持保留態度。總括而言,這次架設可以當成使用這些雲端服務和部署的練習,做資料收集的同時亦加深了我對 VPN 的基本認識和興趣,希望將來有機會繼續研究下去。

感謝閱讀,不要使用免費的 Commercial VPN 服務。

Follow us on Facebook

Let's just say you don't pay with money meme

更多關於 Algo 的設置,可到 Algo Github repo

更多關於 Algo 作者的開發動機,可閱讀 Meet Algo, the VPN that works 一文,或收聽 The Changelog – Ep #377

類似的開源方案: Streisand