2026年9月更新:補充各 VPN 供應商對 WireGuard 的私隱處理方式,及 App 內的協議選項。
WireGuard 是一個開源的 VPN 協議,用 UDP 傳送加密後的 IP 封包,設計目標是程式碼少、容易審核、連線快。它由 Jason A. Donenfeld 設計,2020 年進入 Linux 核心,現時 Windows、macOS、iOS、Android 都有官方版本。
如果你只是用 Surfshark、NordVPN 這類 VPN App,大多數情況下不需要自己設定:App 已內建 WireGuard(NordVPN 稱為 NordLynx),在協議選項揀它,或者交俾 App 自動揀,就已經在用。
WireGuard 是一個 VPN 協議,意思是它規定兩部機器之間如何建立加密連線和傳送資料。你可以把它想像成兩地之間的一條加密專線:你的裝置和 VPN 伺服器各持一對密鑰,互相認證之後,所有經過的 IP 封包都先加密,再用 UDP 傳送。
它的官方網站這樣描述自己:使用 Noise 協議框架、Curve25519、ChaCha20、Poly1305、BLAKE2、SipHash24 和 HKDF 等現代加密技術((WireGuard 官方網站,2026))。設計者 Jason A. Donenfeld 在 2017 年的 NDSS 研討會論文中提出,它的目標是在大多數情況下取代 IPsec,以及 OpenVPN 這類使用者空間或 TLS 為本的方案((NDSS Symposium,2017))。
時間線可以這樣記:2017 年發表論文;2020 年初 Linus Torvalds 把它併入 Linux 網絡代碼的上游((The Register,2020)),成為 Linux 核心 5.6 的一部分((WireGuard 安裝頁,2026))。之後它擴展到 Windows、macOS、BSD、iOS 和 Android,所以現在大部分商業 VPN 都提供 WireGuard 選項。
如果你還未清楚 VPN 本身是什麼,先看 VPN是什麼?點樣運作、有咩用。想同時比較其他協議,見 VPN協議比較。
「快」要分開講。WireGuard 有幾個結構上的原因,但本頁不放任何速度數字,因為 top-vpn.hk 沒有自己的實驗室,而 WireGuard 官方效能頁自己也註明,頁內的基準測試「old, crusty, and not super well conducted」,正在等待新數據取代((WireGuard 效能頁,2026))。以下是可以查證的設計原因。
論文指 WireGuard 在 Linux 上可以用不足 4,000 行程式碼實現((NDSS 2017 論文摘要,2017))。NordVPN 在自己的支援頁把它與 OpenVPN 比較,說是約 4,000 行對約 400,000 行((NordVPN 支援,2026)),這是供應商的說法,但方向與 WireGuard 官方一致:代碼愈少,愈少地方出錯,也愈少地方拖慢。
WireGuard 的握手基於 Noise_IK,只需兩個訊息,而且它是「無連線」設計:裝置換了 Wi-Fi 或轉用 5G,協議會自動重新協商,不需要用戶手動重連((WireGuard 協議頁,2026))。Proton VPN 指它通常不到一秒就連上伺服器((Proton VPN,2026))。對經常在港鐵、商場、住家之間轉網絡的香港手機用戶,這點比紙面上的速度更有感覺。
WireGuard 用 ChaCha20-Poly1305。RFC 8439 指出,在沒有專用 AES 硬件的平台上,ChaCha20 在純軟件下比 AES 快得多,約為三倍((RFC 8439,2018))。不過要平衡地看:WireGuard 官方的已知限制頁承認 ChaCha20-Poly1305 缺乏廣泛的專用硬件支援,但現代 CPU 的向量指令通常能追平甚至超越 AES-NI((WireGuard 已知限制,2026))。結論是:在平價路由器和舊手機上優勢最明顯,在新電腦上差距細得多。
Linux 上的 WireGuard 在核心內處理封包,少了使用者空間和核心之間來回搬資料的開銷。Windows、macOS、iOS、Android 上則用使用者空間實現,所有版本必須遵守同一份協議規格((WireGuard 跨平台說明,2026))。所以「核心內運作」的優勢主要體現在 Linux 伺服器端,手機和電腦上的 App 未必享有同樣的加成。
WireGuard 的協議頁列出固定的一組加密原語((WireGuard 協議頁,2026)):
| 用途 | 算法 | 白話解釋 |
|---|---|---|
| 握手框架 | Noise_IK | 雙方用各自的公鑰互相認證,一個來回完成 |
| 密鑰交換 | Curve25519 | 雙方在不公開私鑰的情況下算出同一個共用密鑰 |
| 封包加密與認證 | ChaCha20-Poly1305 | 加密之餘同時驗證封包沒有被改動 |
| 雜湊 | BLAKE2s | 用來核對資料和派生密鑰 |
| 密鑰派生 | HKDF | 從共用密鑰產生實際使用的多把密鑰 |
協議頁還提到幾個重要性質:具備前向保密(即使日後私鑰外洩,過去的通訊也不能被解開)、避免密鑰洩露偽裝攻擊、會每隔幾分鐘自動更換會話密鑰,並且對未通過認證的人保持「沉默」,不回應陌生封包。
這套組合的取捨是:WireGuard 不像 OpenVPN 可以由用戶挑選加密算法,協議頁只列出這一組。好處是不會有人被誘導去用較弱的設定,壞處是日後算法出問題時,要發佈新版本協議才能更換。加密的更多背景見 VPN加密是什麼?AES-256點保護你。
WireGuard 要求伺服器為每個用戶記住一組公鑰和固定內部位址,這在自架伺服器時沒問題,但對商業 VPN 來說,等於要把「誰用哪個位址」存起來,與「不保留記錄」的承諾有衝突。供應商各有解法:
換句話說,「用了 WireGuard」不等於「私隱做得好」,要看供應商怎樣處理這個設計上的缺口。這也是 不記錄日誌的 VPN 值得看獨立審核的原因。
WireGuard 的已知限制頁列出幾項((WireGuard 已知限制,2026)):
| 項目 | WireGuard | OpenVPN |
|---|---|---|
| 程式碼規模 | 不足 4,000 行(論文) | 大得多,NordVPN 稱約 400,000 行 |
| 傳輸 | 只有 UDP | UDP 與 TCP 皆可 |
| 連線速度 | 握手一個來回 | 握手步驟較多 |
| 穿越嚴格防火牆 | 較弱,特徵明顯 | TCP 443 可混入一般網頁流量 |
| 加密選擇 | 固定一組 | 可配置,預設清單含 AES-256-GCM |
| 審核 | Linux 版獨立審核,另有形式化驗證 | OSTIF 與 QuarksLab 獨立審核過 |
| 歷史 | 2017 年論文,2020 年進入 Linux | 2001 年首度發佈 |
上表的審核、TCP 與防火牆比較來自 Proton VPN 的文章((Proton VPN,2026))。簡單的選擇規則:
在 VPN App 入面,操作大同小異:打開設定,找到「協議」,揀 WireGuard。
各供應商的協議名單和各平台的支援情況常有改動,例如 Proton VPN 現時在支援頁把 OpenVPN 列為只限 Linux,Surfshark 亦已從 Windows App 移除 IKEv2,揀之前請以 App 內顯示為準。
如果供應商提供手動設定檔(Surfshark 是其中之一),你也可以直接用 WireGuard 官方 App:Windows 從官方下載頁取得安裝程式,macOS 和 iOS 用 App Store,Android 用 Google Play 或官方 APK((WireGuard 安裝頁,2026))。步驟大致是:
.conf 檔或掃描 QR 碼。要留意,手動設定通常不會享有 App 內的額外功能,例如上文提到的 Surfshark 後量子保護。自己在電腦上產生金鑰的做法見官方快速入門頁,但那是給技術人員的,普通用戶用供應商的 App 就夠了。
想知道 VPN 在日常還有什麼用,見 VPN有咩用?10個實際用途;覺得速度未如理想,見 VPN好慢點算?提速方法及測速;其餘疑問可翻 VPN常見問題。
WireGuard 是一個開源的 VPN 協議,透過 UDP 傳送加密封包,程式碼不足 4,000 行,已納入 Linux 核心 5.6,亦有 Windows、macOS、iOS、Android 官方版本。
一般較快,主因是程式碼精簡、握手只需一個來回、加密組合固定。不過實際速度視乎伺服器距離和負載,官方自己也說舊基準測試已過時。
協議設計和加密組合獲密碼學界分析,Linux 版本亦經獨立審核。它的弱點在私隱處理和易被封鎖,前者要靠供應商補救,後者可改用 OpenVPN TCP。
協議本身要求伺服器記住每個用戶的固定內部位址,供應商要自行處理。NordVPN 用雙重 NAT,Proton VPN 也說採用雙重 NAT,都是為避免儲存用戶身份。
打開 App 的設定頁,找到「協議」或「Protocol」一欄,揀 WireGuard 或 NordLynx 就得。Proton VPN 預設用智能協議,Surfshark 預設自動揀,通常已經揀到它。
有時不行。它只用 UDP,流量特徵明顯,容易被防火牆封鎖。網絡管理員有權限制 VPN,先確認規則,再考慮改用 OpenVPN TCP 或供應商的抗封鎖協議。