WireGuard 是一個開源的 VPN 協議和軟件,特點是快、省電、代碼量小。它只用一種現代加密組合,沒有可選項可挑,一份配置檔案不到二十行,手機上一個二維碼就能導入。Linux 內核從 5.6 起原生內置它,Windows、macOS、iOS、Android 都有官方客戶端。缺點同樣明確:它跑在 UDP 上,流量特徵固定,在識別並干擾 VPN 的網絡裏很容易被限速或斷連。所以它是「網絡正常時的首選」,而不是「任何環境的萬能鑰匙」。

WireGuard 的工作原理

WireGuard 用公鑰密碼學做身份:每一端生成一對密鑰,把公鑰交給對方。客戶端和伺服器各自持有對方的公鑰,握手時互相驗證,然後用協商出的會話密鑰加密之後的所有數據包。整個過程像 SSH 的密鑰登入,沒有用戶名稱密碼,沒有證書鏈。

它的路由規則叫 AllowedIPs:寫在客戶端配置裏,表示「哪些目標地址走隧道」。寫 0.0.0.0/0, ::/0 就是全部流量都走,寫某個網段就只有那個網段走。同一個字段在伺服器端表示「允許這個客戶端使用哪些源地址」。理解了這一個字段,WireGuard 就基本理解了。

配置檔案逐行解釋

一份典型的客戶端配置:

``` [Interface] PrivateKey = 客戶端私鑰 Address = 10.0.0.2/32 DNS = 10.0.0.1

[Peer] PublicKey = 伺服器公鑰 Endpoint = 伺服器域名或IP:51820 AllowedIPs = 0.0.0.0/0, ::/0 PersistentKeepalive = 25 ```

  • PrivateKey:本機私鑰,只存在本機,泄露等於帳戶泄露。
  • Address:隧道里本機的虛擬地址。
  • DNS:隧道建立後使用的 DNS。填隧道內的地址,否則域名解析會繞過隧道,見DNS 泄露是什麼意思
  • PublicKey:伺服器公鑰,用來驗證對面確實是你的伺服器。
  • Endpoint:伺服器地址和端口,預設 51820,可以改成任意端口。
  • AllowedIPs:走隧道的目標範圍,0.0.0.0/0, ::/0 表示 IPv4 和 IPv6 全走。
  • PersistentKeepalive:每隔多少秒發一個空包,手機在 NAT 後面必須設,一般 25。

服務商給的配置或二維碼已經包含這些字段,自己不用改;自建伺服器則需要在伺服器端為每個客戶端加一段 [Peer]

Windows 和 macOS

  1. 從官網 wireguard.com 下載安裝客戶端(macOS 也可在 App Store 安裝)。
  2. 開啟客戶端,「導入隧道」選擇 .conf 檔案,或者「新建空隧道」把配置粘進去。
  3. 點「連接」。任務欄圖標變綠,狀態裏的「最近握手」有時間,就説明通了。
  4. 開啟我的 IP 是什麼確認顯示的是伺服器地址。

Windows 上有一個常見坑:客戶端預設開啓 Kill Switch 一類的「阻止未經隧道的流量」選項,隧道斷開時會完全斷網,這是正確行為,不是故障。另一個坑是 IPv6:如果伺服器不支持 IPv6 卻寫了 ::/0,IPv6 站點會打不開,刪掉 ::/0 即可。

iOS 和 Android

  1. 安裝官方 WireGuard 應用(App Store / Google Play)。
  2. 點「+」,選「從二維碼創建」掃描服務商提供的二維碼,或「從檔案導入」。
  3. 首次連接時系統會請求添加 VPN 配置,允許。
  4. Android 上建議在系統設定的 VPN 項裏開啓「始終開啓的 VPN」和「屏蔽未使用 VPN 的連接」,相當於系統級 Kill Switch。
  5. 手機在流動網絡下如果頻繁斷線,把 PersistentKeepalive 設為 25,並在電池設定裏把應用設為「不受限制」。

按需隧道(On-Demand):iOS 客戶端可以設定「連接到某些 Wi-Fi 時自動開啓」,適合公共 Wi-Fi 場景。

OpenWrt 路由器

適合讓電視、遊戲機這類裝不了客戶端的設備一起走隧道。

  1. 安裝軟件包:opkg update && opkg install wireguard-tools luci-proto-wireguard
  2. 網絡 → 接口 → 添加新接口,協議選 WireGuard VPN,填入私鑰和 Address
  3. 在「對端」標籤添加伺服器公鑰、Endpoint、AllowedIPs 和 Keepalive,勾選「路由允許的 IP」。
  4. 防火牆裏把新接口放進 wan 區域(或新建區域),確保 lan → 該區域允許轉發並開啓 IP 動態偽裝。
  5. DNS:在 DHCP/DNS 設定裏把上游 DNS 改為隧道內地址,否則全屋 DNS 泄露。
  6. 重啓網絡,從內網設備開啟我的 IP 是什麼驗證。

路由器的 CPU 決定速度。入門級路由器跑 WireGuard 大約幾十到一兩百兆,夠看影片;想跑滿千兆需要 x86 或高端 ARM 平台。

WireGuard 還是 VLESS

兩者解決的是不同問題。WireGuard 追求最快、最省電;VLESS + Reality 追求讓隧道看起來像普通 HTTPS。經驗規則:

  • 家庭寬帶、正常的流動網絡、海外:WireGuard,速度和續航都最好。
  • 會識別並干擾 VPN 的網絡(部分校園網、企業網、某些地區的電訊商):VLESS + Reality,WireGuard 在這種環境裏往往連不上或被限速。
  • 不確定:先試 WireGuard,連不上或明顯限速就換 VLESS。

VLESS 為什麼更難被識別,在VLESS 與 Reality裏有詳細解釋。如果你用的是機場訂閲,它通常同時給出兩種節點,客戶端裏切換即可。

排錯速查

  • 「最近握手」一直為空:伺服器地址或端口不通、公鑰填錯、或者本地時間偏差太大。
  • 握手成功但打不開網頁:AllowedIPs 沒包含目標、DNS 沒走隧道、或 IPv6 配置與伺服器不匹配。
  • 手機幾分鐘後斷線:沒設 Keepalive,或系統把應用後台凍結了。
  • 速度只有幾兆:換一個更近的伺服器,或者路由器 CPU 到頂了。

404 VPN 的客戶端同時內置 WireGuard 和 VLESS + Reality,按網絡情況自動選擇,DNS 在隧道內解析,並帶 Kill Switch;需要在路由器上用的話也可以導出 WireGuard 配置。連接方式見工作原理,開始使用請到首頁