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

WireGuard 的工作原理

打個比方:這就像你和朋友各自留了一把只有對方認得的鑰匙,見面時互相亮一下就算認證完了。具體說,WireGuard 用公鑰密碼學做身份:每一端生成一對金鑰,把公鑰交給對方。你的客戶端和伺服器各自拿著對方的公鑰,握手時互相驗一遍,然後用協商出的會話金鑰加密之後的所有資料包。整個過程跟 SSH 的金鑰登入一個路數,沒有使用者名稱密碼,也沒有證書鏈。

它的路由規則叫 AllowedIPs,寫在你的客戶端配置裡,意思是「哪些目標地址走隧道」。你寫 0.0.0.0/0, ::/0 就是全部流量都走,寫某個網段就只有那個網段走。同一個欄位放在伺服器端,意思變成「允許這個客戶端用哪些源地址」。你把這一個欄位吃透,WireGuard 就基本吃透了。

工作原理說明
雙方各有一對金鑰私鑰留在自己手裡
公鑰交給對方用於驗證
收到的包沒有已知金鑰簽名就直接丟棄

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。

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

配置行含義
PrivateKey你的私鑰
Address你在隧道里的地址
DNS由誰解析域名
AllowedIPs哪些流量走隧道
Endpoint伺服器地址和埠
MTU資料包大小

WireGuard Windows 和 macOS 配置

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

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

WireGuard iOS 和 Android 配置

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

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

WireGuard 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 平臺。

AllowedIPs 的值結果
0.0.0.0/0全部流量進隧道
某個網段只有這個網段進隧道

一行決定這是完整隧道還是通往某個網路的線路。

WireGuard 還是 VLESS

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

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

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

症狀原因
沒有握手金鑰或地址
有握手但沒流量AllowedIPs
IP 能開、域名打不開DNS
行動網路下斷MTU

配置在手但每行看不懂時,把金鑰刪掉再問。

給 AI 的提示詞
逐行解釋我的 WireGuard 配置。

金鑰我已經刪掉了,如下:

[Interface]
Address = (你的值)
DNS = (你的值)
MTU = (如果有)

[Peer]
AllowedIPs = (你的值)
Endpoint = (城市,或寫「隱去」)
PersistentKeepalive = (如果有)

告訴我每一行的作用、按這個 AllowedIPs 是不是
全部流量都走隧道,以及在行動網路下斷線時改哪裡。
不要編造我配置裡沒有的行。

PrivateKey 和 PublicKey 兩行不要粘到任何地方:私鑰就是你的全部訪問許可權。

WireGuard 連不上:排錯速查

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

404 VPN 的客戶端同時內建 WireGuard 和 VLESS + Reality,按網路情況自動選擇,DNS 在隧道內解析,並帶 Kill Switch;路由器沒有我們提供的配置檔案,需要從帳戶取金鑰再填進支援它的路由器。連線方式見工作原理,開始使用請到首頁