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
- 從官網 wireguard.com 下載安裝客戶端(macOS 也可在 App Store 安裝)。
- 開啟客戶端,「導入隧道」選擇
.conf檔案,或者「新建空隧道」把配置粘進去。 - 點「連接」。任務欄圖標變綠,狀態裏的「最近握手」有時間,就説明通了。
- 開啟我的 IP 是什麼確認顯示的是伺服器地址。
Windows 上有一個常見坑:客戶端預設開啓 Kill Switch 一類的「阻止未經隧道的流量」選項,隧道斷開時會完全斷網,這是正確行為,不是故障。另一個坑是 IPv6:如果伺服器不支持 IPv6 卻寫了 ::/0,IPv6 站點會打不開,刪掉 ::/0 即可。
iOS 和 Android
- 安裝官方 WireGuard 應用(App Store / Google Play)。
- 點「+」,選「從二維碼創建」掃描服務商提供的二維碼,或「從檔案導入」。
- 首次連接時系統會請求添加 VPN 配置,允許。
- Android 上建議在系統設定的 VPN 項裏開啓「始終開啓的 VPN」和「屏蔽未使用 VPN 的連接」,相當於系統級 Kill Switch。
- 手機在流動網絡下如果頻繁斷線,把
PersistentKeepalive設為 25,並在電池設定裏把應用設為「不受限制」。
按需隧道(On-Demand):iOS 客戶端可以設定「連接到某些 Wi-Fi 時自動開啓」,適合公共 Wi-Fi 場景。
OpenWrt 路由器
適合讓電視、遊戲機這類裝不了客戶端的設備一起走隧道。
- 安裝軟件包:
opkg update && opkg install wireguard-tools luci-proto-wireguard。 - 網絡 → 接口 → 添加新接口,協議選 WireGuard VPN,填入私鑰和
Address。 - 在「對端」標籤添加伺服器公鑰、Endpoint、AllowedIPs 和 Keepalive,勾選「路由允許的 IP」。
- 防火牆裏把新接口放進 wan 區域(或新建區域),確保 lan → 該區域允許轉發並開啓 IP 動態偽裝。
- DNS:在 DHCP/DNS 設定裏把上游 DNS 改為隧道內地址,否則全屋 DNS 泄露。
- 重啓網絡,從內網設備開啟我的 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 配置。連接方式見工作原理,開始使用請到首頁。