本文適合已備妥自有服務設定的使用者:先區分裝置端與遠端 Peer 的參數,再依據資料來源填寫 WireGuard 欄位,最後從「是否完成握手、能否傳輸、能否開啟目標位址」三個層次逐步排查。文中的位址與連接埠僅供格式示範,並非可用的連線資訊。
填寫前:先區分兩端資料
WireGuard 設定描述的是裝置與遠端 Peer 之間的加密通道。Shadowrocket 是 Apple 平台上的付費用戶端,iPhone、iPad 使用者可從 App Store 取得;系統需求請以 App Store 頁面標示為準。購買用戶端不會自動取得可用的遠端服務。開始填寫前,請先從自己既有的服務管理頁面或管理員處取得這台裝置專用的設定資料。
最容易混淆的是方向相反的兩把金鑰:PrivateKey 屬於本機裝置,必須由裝置使用並妥善保管;要填入遠端 Peer 的 PublicKey 則由遠端提供。遠端也需要知道與本機 PrivateKey 對應的裝置公鑰,才能識別這個 Peer。請勿將遠端公鑰貼到本機私鑰欄位,也不要以為兩個欄位填入相同字串就能建立連線。
依角色確認設定資料來源
本機裝置
PrivateKey:這台裝置使用的私鑰,不可作為公開資料傳送。Address:分配給這台裝置的通道內位址,通常會帶有前綴長度。DNS:若服務設定指定了解析伺服器,請依照說明填寫。
遠端 Peer
PublicKey:遠端的公鑰,不是本機公鑰。Endpoint:遠端可連線的主機名稱或 IP 位址,以及 UDP 連接埠。AllowedIPs:哪些目標位址可交由該 Peer 處理,依服務設定而定。
結論:將「本機」與「遠端」兩欄逐項對照原始資料;若缺少重要欄位,請先向設定提供者確認,不要自行猜測填入。
若已有標準 WireGuard 設定文字,可先辨識 [Interface] 與 [Peer]:前者通常列出本機參數,後者通常列出遠端參數。介面欄位的排列方式可能與文字分組不同,但參數所屬端不會因顯示位置而改變。請勿將整段文字貼入 PrivateKey 或 Endpoint 欄位。
PrivateKey、PublicKey、Endpoint、MTU 各自的用途
PrivateKey 用於本機參與 WireGuard 握手,對應的公鑰必須登記在遠端設定中。這是敏感憑證:排查時可確認是否填錯欄位,或是否誤用了另一台裝置的資料,但不應在截圖或公開求助內容中揭露原文。更換這把私鑰後,對應的本機公鑰也會改變,遠端的既有登記資料必須同步更新。
PublicKey 指向要連線的遠端 Peer;若填錯,即使主機名稱和連接埠正確,雙方也無法憑錯誤的身分資訊完成有效握手。Endpoint 則是尋找遠端的入口,常見格式為「主機名稱:連接埠」,例如僅供格式示範的 vpn.example.com:51820。其中 51820 只是 UDP 連接埠範例,實際值請以自己的服務設定為準。
MTU 限制通道內單一封包的大小。數值過大時,某些網路路徑可能出現小型請求正常、大型網頁或檔案傳輸停滯的情況;數值過小則會增加傳輸負擔。1420 是常見的起始嘗試值,不代表所有網路都適用。請先使用設定提供者指定的數值;只有在確認已完成握手,且問題集中於大型封包傳輸時,才依照指示逐步調整,並記錄調整前後的結果。
在 Add Server 依資料來源填寫
手動填寫適合已取得 WireGuard 專用參數,並希望逐項檢查的使用者。若現有服務只提供訂閱 URL,請先確認訂閱內容是否包含可用的 WireGuard 設定;訂閱連結本身不是 Endpoint,不能將整條 URL 填入遠端位址欄位。以下步驟適用於手動新增,實際欄位顯示請以目前 App 內介面為準。
開啟新增頁面
進入 Shadowrocket 的
Home,點選右上角的+開啟Add Server;在Type中選擇WireGuard。填寫本機欄位
依照既有設定填入
PrivateKey與分配給本機的Address;若設定明確列出DNS,再填入該值。請勿將示範位址當成實際分配的位址。填寫遠端欄位
將遠端的
PublicKey、Endpoint與AllowedIPs分別填入對應欄位。若設定包含PresharedKey,請依原始資料填寫;若未提供,請勿自行編造。確認 MTU
優先使用設定資料提供的
MTU。若資料未指定,請先保留介面允許的預設設定,避免首次連線前同時變更多個參數。儲存並測試
儲存後返回
Home,選取剛新增的項目並啟用連線。首次啟用時,請依系統提示允許新增 VPN 設定;接著觀察連線狀態,並實際測試網路連線。
AllowedIPs 尤其應與原始設定逐字核對。它表示該 Peer 接收哪些目標位址;0.0.0.0/0 表示整個 IPv4 位址空間,::/0 表示整個 IPv6 位址空間,但是否應使用這些範圍,取決於既有服務設定。它與 Shadowrocket 的 Global Routing 並非同一項設定:前者限制 WireGuard Peer 的目標範圍,後者決定 App 如何依目前模式處理請求。
握手失敗:依序檢查位址、身分與連線路徑
「開關已開啟」與「WireGuard 已完成握手」並非同一回事。請先確認選取的是剛儲存的 WireGuard 項目,再檢查遠端是否有實際回應。若現有管理介面或服務診斷資訊提供最近握手時間,可用來輔助判斷;若介面未顯示這項資訊,不應只憑開關顏色推定握手成功。
一直沒有握手,先檢查哪裡?
先核對 Endpoint 的主機名稱、冒號與 UDP 連接埠,確認填入的是既有服務提供的入口。可改用另一種可用網路再試一次;若只有特定網路失敗,請優先檢查該網路能否連線至對應的 UDP 入口。
位址沒有填錯,為什麼還是失敗?
逐項比對遠端 PublicKey、本機 PrivateKey,以及選填的 PresharedKey。請向設定提供者確認遠端已登記這台裝置對應的公鑰,並檢查裝置的 Address 是否與遠端記錄一致。
換網後偶爾恢復,該如何定位?
記錄失敗時使用的網路,以及相同設定在另一種網路下是否能完成握手。若服務設定指定了 PersistentKeepalive,請確認數值是否完整輸入;這項設定有助於某些經過位址轉換的連線維持對應,但無法修正錯誤的金鑰或連接埠。
已完成握手,網頁仍無法完整載入?
先分別測試小型請求與較大的網頁,再核對 AllowedIPs、DNS 和 Global Routing。若主要問題是較大的傳輸停滯,請先記錄目前的 MTU,再逐步嘗試調整;每次只變更一項設定。
排查時的關鍵是保留對照條件:使用相同設定與目標位址,每次只改一項設定或一種網路條件。若同時更換金鑰、連接埠、路由模式與 MTU,即使恢復連線,也無法判斷真正原因。向自己的設定提供者回報時,說明錯誤發生的步驟、網路類型與測試結果即可,切勿附上 PrivateKey 原文。
握手成功後,區分分流問題與傳輸問題
成功握手只能表示兩端完成必要協商,不能單憑此判斷所有目標位址都會經由通道、DNS 一定能依預期解析,或目標服務必定可用。請先在 Home 使用 Connectivity Test 輔助觀察,再以明確的目標位址重新測試。若只有特定目標失敗,請核對該目標是否包含在 AllowedIPs 範圍內,以及目前的 Global Routing 是否將請求交由選取的連線處理。
Config
建議依設定中的規則決定請求的去向。排查單一目標時,請檢查該目標符合哪條規則,以及最終執行的動作;不能只憑 WireGuard 已完成握手就判斷規則的處理結果。
適用情境:日常依規則使用,並逐項檢查分流結果。
Proxy
暫時將請求交由選取的代理連線,可用來判斷問題是否出在目前的規則路徑;測試前仍須確認 WireGuard 設定本身已可連線。
適用情境:短時間比對規則分流與連線本身。
Direct
請求會直接連線。若維持此模式,目標的連線結果不能作為 WireGuard 傳輸是否正常的判斷依據。
適用情境:建立直連對照,測試完成後再確認所需模式。
使用 Config 時,規則關鍵字如 DOMAIN-SUFFIX、GEOIP、IP-CIDR 與 FINAL,分別涉及網域後綴、地理位置、IP 網段與最後兜底匹配。請先確認測試目標符合哪條規則,再判斷是否需要檢查 WireGuard。若所有目標都無法傳輸,優先檢查 Peer 參數;若只有部分網域無法連線,優先比對 DNS 結果、規則匹配與目標位址範圍。
完成測試後,將暫時調整過的 Global Routing、MTU 或 DNS 設定還原為已驗證的數值,並保存一份不含私鑰明文的故障紀錄。下次遇到「能握手但無法連線」的情況時,就能先比對網路、目標與設定變更,不必重新猜測各欄位的用途。