WireGuard 當然是 VPN,可是:
- 它是 Peer-to-Peer 的連接,不是 Client-Server
- 它使用的是 UDP 的一個 port,所以並沒有 TCP 那種意義上的連接
你不妨把它想像成 WiFi,只要公鑰/私鑰 (也就是 WiFi 的 PSK) 對了,就直接開始加密傳輸。
這代表什麼?
那些搞死你的 IPSec 設定,這邊全都沒有,甚至從金鑰交換、資料驗證、雜湊運算、加密,各自都只有一種演算法,沒的挑,所以也不需要設定。
為什麼用 WireGuard
自己去 Google 或 promte,以下是可能還會有的疑問。
UDP 可靠嗎?
UDP 是種「盡力而為」的傳輸方式,不過:
- 在如今的網路環境下,你不需要擔心 UDP 的存活率。
- 而且就算被丟棄了,VPN 上頭的 TCP 協定,還是會修正這個問題。
話說回來,真的送不達的時候,UDP 雖然是直接放棄,但 TCP 也只是掙扎時間比較久而已,這個大家都很有經驗。
UDP 天生就對 port scan 有抗性,再加上 WireGuard 天生低調,只對正確且加密的封包回應,即使是把 WireGuard 服務暴露到 Internet 後,也非常難被偵測到。
Peer-to-Peer 代表什麼?
不是 client-server 的架構,雙方是對等的,只看 public key 和 private 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 的程式:
- Linux server 上:wireguard-ui
- Android 手機:WG Tunnel
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。
沒有留言:
張貼留言