我的烏拉拉練功坊

請來參觀移植到 Google Firebase 的成績 https://oolala.xyz/ken73chen/

2025年6月27日

WireGuard!

WireGuard 當然是 VPN,可是:

  1. 它是 Peer-to-Peer 的連接,不是 Client-Server
  2. 它使用的是 UDP 的一個 port,所以並沒有 TCP 那種意義上的連接

你不妨把它想像成 WiFi,只要公鑰/私鑰 (也就是 WiFi 的 PSK) 對了,就直接開始加密傳輸。

這代表什麼?

那些搞死你的 IPSec 設定,這邊全都沒有,甚至從金鑰交換、資料驗證、雜湊運算、加密,各自都只有一種演算法,沒的挑,所以也不需要設定。

WireGuard: fast, modern, secure VPN tunnel

為什麼用 WireGuard

自己去 Google 或 promte,以下是可能還會有的疑問。

UDP 可靠嗎?

UDP 是種「盡力而為」的傳輸方式,不過:

  1. 在如今的網路環境下,你不需要擔心 UDP 的存活率。
  2. 而且就算被丟棄了,VPN 上頭的 TCP 協定,還是會修正這個問題。

話說回來,真的送不達的時候,UDP 雖然是直接放棄,但 TCP 也只是掙扎時間比較久而已,這個大家都很有經驗。

UDP 天生就對 port scan 有抗性,再加上 WireGuard 天生低調,只對正確且加密的封包回應,即使是把 WireGuard 服務暴露到 Internet 後,也非常難被偵測到。

Peer-to-Peer 代表什麼?

不是 client-server 的架構,雙方是對等的,只看 public keyprivate key,只有像是 PSK 的認證,沒有更複雜的身分認證,也不會有 DHCP 或更複雜的東西要設定。

雙方就各是一個  AllowedIPs 的設定,在 AllowedIPs 範圍內的 IP,就往對方丟,如果設定成 0.0.0.0/0,就是全部都往對方丟,就那麼簡單。

輕量是什麼意思?

WireGuard 總共大約只有 4000 行程式,只專注於最核心、最有效的加密傳輸,並且已經被整合進 Linux Kernel 5.6+ 和 Android 11+/Kernel 5.6+,這意味著:

  • 核心層次的運行,overhead 極低,更省記憶體,更省電。
  • 不需要「安裝」,WireGuard 已經是作業系統的一部分了。你只需要一個介面來管理它的設設定。

WireGuard 安全嗎?

都已經進 Linux kernel 了,這件事大家眼睛看著,輪不到你操心。

使用 WireGuard

WireGuard 不用安裝,但如果不是 Linux 為基礎的系統,或者 2020 年以前的 Linux 或 Android 版本,才需要安裝 WireGuard,在 WireGuard 網站有提供下載或安裝說明,還有些分享器會內建 WireGuard,例如華碩TP-Link

我個人推薦這兩個管理 WireGuard 的程式:

再提醒你一次,WireGuard 是 P2P 的架構,所以沒有 server、client 的版本分別,大家都是一樣的 WireGuard,你連 Linux server 的同時,Linux server 也可以連你,不過後者通常是沒設定 AllowedIPs 。

wireguard-ui

建議你根據 wireguard-ui 的文件設定 WireGuard,這樣之後透過 Web 設定會省事很多,尤其是可以為 peer 產生 QR code 或設定檔案:

wireguard-ui 啟動時設定 base-path,就可以讓它和你既有的 nginx、httpd 之類透過 proxy_pass 共存;此外,我是不建議放在 container 裡面,太多此一舉。

WG Tunnel

非常推薦在 Android 手機上使用 WG Tunnel,它同時也是活躍的 open source 專案。

推薦 WG Tunnel 的主因,就是它可以在手機離開信任的 WiFi (如家裡) 後,自動啟用 WireGuard;回到信任的 WiFi 時,也會自動關掉 WireGuard。

沒有留言:

張貼留言