設定 WireGuard 時,先分清本機身分、對端身分與公網入口,再檢查隧道位址和流量範圍。本文適合已取得服務商或自建端點設定的使用者,說明如何在 Shadowrocket 對應參數、測試連線,並依序從握手、路由、DNS、MTU 著手排查問題。範例位址僅用於說明欄位,並非可連線的服務。
一、加入前先分清 Interface 與 Peer
Shadowrocket(小火箭)的 WireGuard 設定不能只靠一個伺服器位址完成。常見的 WireGuard 設定分為 [Interface] 與 [Peer]:前者描述本機的金鑰與隧道位址,後者描述通訊對端的公鑰、入口及允許的位址範圍。若把兩邊的金鑰填反,即使位址和連接埠正確,也無法完成正常驗證。
本文以使用者已備妥服務商提供或自行建立的設定為前提。開始前應取得完整且彼此相符的參數;只有 Endpoint,沒有本機 PrivateKey 或對端 PublicKey,無法組成可用設定。Shadowrocket 是閉源商業應用,客戶端買斷不等於線路方案;購買客戶端不會自動產生可用的 WireGuard 對端。
參數所屬:本機與通訊對端
Interface:本機
PrivateKey:本機私鑰,必須妥善保密。Address:指派給本機的隧道 IP,通常包含前綴長度。MTU:隧道介面的封包大小設定。DNS:部分設定檔內含的解析器設定,不屬於 WireGuard 握手參數。
Peer:通訊對端
PublicKey:遠端公鑰,不是本機公鑰。Endpoint:遠端可連線的網域名稱或 IP,以及 UDP 連接埠。AllowedIPs:與此 Peer 關聯的位址範圍。PresharedKey:選用的預先共用金鑰,雙方必須一致。
先依角色整理原始設定,再逐項填寫;不要只因欄位名稱相似就互換金鑰。
二、在 Home 加入 WireGuard 並保留原始參數
手動加入請從 Home → 右上角「+」→ Type → WireGuard 開始。選好協定後再填寫,避免將 WireGuard 參數填進其他協定的表單。以下以 WireGuard 設定檔的標準欄位名稱說明對應方式;應用程式表單可能會將 Endpoint 拆成位址與連接埠,實際欄位請以目前應用程式內顯示為準。
-
整理設定
保留一份原始設定,分別標出 Interface 的 PrivateKey、Address,以及 Peer 的 PublicKey、Endpoint、AllowedIPs。若有 PresharedKey,也一併記下,但不要放進公開筆記或截圖。
-
選擇協定
前往 Home →「+」→ Type → WireGuard。先確認 Type,再輸入參數;不要把整份設定檔文字貼進伺服器位址欄。
-
填寫入口
將 Endpoint 的主機與連接埠分別填入。例如
192.0.2.10:51820代表主機192.0.2.10、連接埠51820;此文件中的範例位址不可作為實際入口使用。 -
填寫身分
填入本機 PrivateKey、對端 PublicKey 和已指派的 Address,再依原始設定處理 AllowedIPs 與選用參數。金鑰內容不要附帶引號、欄位名稱或換行。
-
儲存並測試
儲存後返回 Home,選取該設定並確認 Global Routing,再開啟連線。首次出現系統 VPN 設定授權提示時,確認是此應用程式後依系統指示操作。使用已知可存取的目標發出請求,並檢查連線結果。
三、PrivateKey 與 PublicKey:長度正確不代表配對正確
PrivateKey 用於驗證本機身分,其對應的本機 PublicKey 必須登記在遠端的 Peer 設定中。Shadowrocket 內填寫的 Peer PublicKey 則應取自遠端。雙方不是互換私鑰,而是各自保管私鑰,並使用對方的公鑰辨識通訊對端。
上述長度只能用來檢查明顯的複製錯誤,無法證明金鑰有效或屬於同一連線。結尾的 = 可能是 Base64 填充,不應任意刪除;聊天排版帶入的空格、引號和換行則不屬於金鑰。也不要憑外觀相似的字元手動補齊缺漏內容。
- 誤填本機公鑰:若 Peer PublicKey 填成本機公鑰,請從原始設定重新取得遠端公鑰,不要反覆重建連線。
- 只更換本機私鑰:新的 PrivateKey 會對應新的本機 PublicKey,遠端也必須同步登記,否則身分將不相符。
- 遺漏預先共用金鑰:原始設定啟用 PresharedKey 時,不能只填寫雙方的公私鑰;此值不一致同樣會使驗證失敗。
- 多台裝置共用身分:不同裝置同時使用同一組身分時,遠端可能依收到的驗證資料更新端點,造成連線互相干擾。請由設定管理方指派獨立的 Peer 與隧道位址。
四、Endpoint、Address 與 AllowedIPs 各自控制什麼
Endpoint 是建立通訊時連線的外層入口,Address 則是本機在隧道內使用的位址,兩者不可互換。例如遠端公網入口使用連接埠 51820,不代表本機 Address 也要包含該連接埠。WireGuard 使用 UDP;若入口只允許 TCP,即使填入相同的連接埠號碼,也無法取代 UDP 連通性。
| 欄位 | 範例或格式 | 檢查要點 |
|---|---|---|
| Endpoint | 192.0.2.10:51820 | 文件範例。實際主機與 UDP 連接埠必須由設定提供方提供;51820 是常見選擇,並非固定要求。 |
| IPv6 Endpoint | [2001:db8::10]:51820 | 組合格式以方括號區分 IPv6 位址與連接埠;分欄表單則填入對應的位址與連接埠欄位。 |
| Address | 10.20.0.2/32 | 隧道位址範例。必須使用實際指派的值,避免與其他裝置重複。 |
| AllowedIPs | 10.20.0.0/24 | 僅宣告此網段,不代表所有公網位址都能透過此 Peer 傳輸。 |
| AllowedIPs | 0.0.0.0/0, ::/0 | 分別涵蓋所有 IPv4 與 IPv6 位址;仍須配合對端的轉送能力及應用程式流量策略。 |
在 WireGuard 協定層,AllowedIPs 會參與選擇要將輸出資料送往哪個 Peer,也用於驗證該 Peer 傳來的資料所宣告的來源位址。它不是網站網域清單,不能填入 example.com,也不能直接放進 DOMAIN-SUFFIX 規則。只有 IPv4 預設範圍而沒有 IPv6 範圍時,不應因此認定 IPv6 目標也已涵蓋。
- Endpoint 使用網域名稱時,必須先能解析該網域,才有機會向遠端送出握手流量。
- Address 的前綴長度不能只憑習慣更改;
/32與/24代表的位址範圍不同。 - 擴大 AllowedIPs 不會賦予遠端原本不具備的轉送或存取權限,應先確認對端允許的用途。
五、Global Routing 與 WireGuard 並非同一層的設定
Shadowrocket 會先依自身的流量策略決定請求的去向,WireGuard 參數則會限制選用此連線後的通訊。Global Routing 中的 Proxy、Direct、Config、Scene 不能與 AllowedIPs 畫上等號:Proxy 用於代理路徑,Direct 用於直接連線,Config 依設定規則處理,Scene 則依已設定的情境處理。實際結果也會受選取的策略與設定影響。
首次測試時,可在了解影響範圍的前提下短暫使用 Proxy,並選取待測的 WireGuard 連線,減少規則分流對判斷的干擾;測試後再恢復原本設定。在 Config 模式下,即使 WireGuard 本身可用,若請求符合 DIRECT 規則,也不會因為 AllowedIPs 設定了預設範圍,就自動改走該 Peer。
DOMAIN-SUFFIX,example.com,PROXY
GEOIP,CN,DIRECT
IP-CIDR,192.0.2.0/24,DIRECT
FINAL,PROXY
這段僅用來示意規則關鍵字,不是 WireGuard 設定,也不是要求覆蓋現有的 Config。DOMAIN-SUFFIX 會比對網域後綴,GEOIP 依 IP 地理資料庫比對,IP-CIDR 會比對 IP 網段,FINAL 則接收未符合前面規則的請求。範例中的 PROXY 代表代理策略;實際使用時還要確認設定中的策略指向,不能只看規則最後的文字。
六、MTU 與 PersistentKeepalive 的調整範圍
MTU 控制隧道介面傳送的 IP 封包大小。WireGuard 封裝還需要額外的外層 IP、UDP 等開銷,因此不能直接將底層連線的 MTU 原值照搬到隧道。1420 是常見的排查參考值,但不適用於所有路徑;應優先採用既有設定提供的數值,或使用應用程式的預設處理方式。
- 先確認基本連線。若尚未建立握手,應先檢查 Endpoint、UDP 網路與金鑰,不要把 MTU 當成首要原因。
- 記錄可重現的狀況。例如小型請求成功,但較大的回應一再停滯,才需要進一步懷疑路徑 MTU、封包遺失或相關網路限制。這只是排查線索,不能僅憑現象就下定論。
- 每次只修改一個數值。可在設定提供方允許的範圍內,分別以 1420、1380 進行比較;每次儲存並重新連線,以相同目標和請求再次測試,並記下原值以便還原。
- 避免一味降低數值。若降低後沒有改善,應回頭檢查 DNS、路由與對端狀態,而非持續調低數值。使用 IPv6 時,也須符合其鏈路 MTU 限制。
PersistentKeepalive 用於定期傳送保活資料,協助維持 NAT 對應。25 秒是常見設定範例,並非協定要求必須啟用;0 代表關閉定期保活。若閒置一段時間後回程通訊中斷,可將其納入排查,但它無法修正錯誤的公鑰、無法連線的連接埠或未獲允許的目標網段。
- 設定檔使用的單位是秒,請勿將 25 秒誤填為毫秒。
- 並非所有網路都需要相同的保活頻率,應依設定提供方的要求與實際測試結果決定。
- 切換行動網路後應重新測試;保活無法保證網路位址變更期間所有請求都不中斷。
七、依據現象排查,不要反覆重建設定
每輪排查只變更一個項目,並記錄測試網路、Global Routing 模式、存取目標與結果。Home 顯示的延遲或連線結果,只能反映對應測試項目的狀況;不同測試方式涵蓋的環節各不相同,不能用單一延遲數值證明金鑰、DNS、AllowedIPs 與所有業務請求都正常。
連線開關已開啟,為什麼仍然沒有流量?
先在 Home 確認選取的是剛儲存的 WireGuard 連線,再檢查 Global Routing。接著確認 Endpoint 的主機與 UDP 連接埠,以及 PrivateKey 和對端 PublicKey 的歸屬。若可管理對端,請在發出請求後確認握手時間;系統 VPN 已啟動不代表對端已完成驗證。
只有部分位址能存取,是 AllowedIPs 設定錯誤嗎?
先確認無法存取的目標 IP 是否落在 AllowedIPs 範圍內,再檢查 Config 是否將其分配給其他策略。若原始設定只允許 10.20.0.0/24,不要直接改成預設範圍,期待取得公網轉送;應向設定管理方確認允許的範圍與遠端轉送設定。
Wi-Fi 可以使用,行動網路不行,該先檢查哪裡?
保持金鑰、目標與策略不變,先分別在兩種網路手動連線。檢查 Endpoint 網域的解析結果、IPv4 或 IPv6 可達性及 UDP 通訊條件,再查看 Settings → On Demand 是否設定了不同網路下的觸發條件。不要同時修改連接埠、金鑰與 MTU。
將同一份設定複製到 iPad 後,iPhone 連線變得不穩定?
先停用其中一台裝置,再重新測試。若單台使用正常、同時使用時異常,請確認兩台是否共用相同的 PrivateKey 與 Address。向設定管理方申請獨立的 Peer 與隧道位址,並分別儲存;只更改顯示名稱不會改變協定身分。
提供截圖尋求協助時,哪些內容需要遮蔽?
遮蔽 PrivateKey、PresharedKey、QR Code 及任何訂閱驗證資訊。保留已去識別化的欄位名稱、連接埠、MTU、AllowedIPs 範圍與錯誤狀況即可。若私鑰已外洩,應更換金鑰並同步更新遠端登記;只刪除截圖不足以撤銷舊身分。