本文適合已有 WireGuard 服務與設定,準備在 Shadowrocket 中核對參數的使用者。先區分本機與遠端身分,再確認 Address、Endpoint、DNS 和 MTU,最後分別測試連線、規則與網頁存取。本文著重說明各項參數由誰提供、填錯會影響哪個環節,不提供可直接連線的服務設定。
先分清 Interface 與 Peer
Shadowrocket(小火箭)中的 WireGuard 參數應取自使用者既有服務的完整設定。標準 WireGuard 文字設定通常以 [Interface] 描述本機介面,以 [Peer] 描述遠端。手動填寫時,這兩部分必須對應同一個 WireGuard 項目;不可混用另一台裝置的私鑰、本機目前的 Address,以及不同伺服器的公鑰。
WireGuard 使用 UDP 傳輸隧道通訊。伺服器位址和連接埠決定封包要送往哪裡,金鑰則用來驗證通訊雙方。因此,「位址可解析」、「連接埠填寫正確」和「身分驗證成功」是不同的檢查項目。
Private Key、Public Key 與 Preshared Key
[Interface] 中的 PrivateKey 是本機私鑰,對應介面中的 Private Key。由此可推導出本機公鑰,遠端必須登錄這個本機公鑰。本機私鑰不是登入密碼,也不是遠端公鑰;更換私鑰後,若遠端未同步更新對應資料,原有設定便無法繼續正常通訊。
| 設定欄位 | 欄位用途 | 常見錯誤 |
|---|---|---|
Interface.PrivateKey | 本機持有的私鑰,對應 Private Key。 | 誤填伺服器公鑰,或複製時混入空格、引號。 |
Peer.PublicKey | 遠端公鑰,對應 Public Key。 | 誤填本機公鑰,導致遠端身分不符。 |
Peer.PresharedKey | 雙方另行約定的共享金鑰,對應 Preshared Key。 | 只有一端設定,或兩端內容不一致。 |
Public Key 應填對端公鑰,不是「由本機 Private Key 推導出的公鑰」。若服務設定同時列出用戶端公鑰與伺服器公鑰,請先確認欄位所屬部分:[Peer] 底下的 PublicKey 才是此處要核對的遠端身分。
Preshared Key 是選填參數,但「選填」不代表可以單方面刪除。原始設定若有此項,就應照原樣保留;若沒有,請勿自行產生後填入。含有 +、/、= 的 Base64 文字必須完整複製,不要進行 URL 編碼,也不要把結尾的 = 當成多餘標點刪除。
Address 與 Endpoint 屬於不同層級
Address 是分配給本機、位於隧道內的位址,通常會附上 CIDR 前綴長度。例如 10.66.0.2/32 表示一個 IPv4 介面位址;雙堆疊設定也可能提供類似 fd00:66::2/128 的 IPv6 位址。這些僅為格式示例,不能取代服務端實際分配的值。Address 不是遠端伺服器位址,也不是裝置目前連線的 Wi-Fi 區域網路位址。
- Address:依原始設定填寫,保留
/32、/128等前綴長度。若介面將 IPv4 與 IPv6 分成不同欄位,請分別填入,不要硬合併成單一位址。 - Endpoint:遠端可連線的網域名稱或 IP 位址與 UDP 連接埠。例如文件中的
192.0.2.10:51820僅用來示範格式,不是連線入口。 - 連接埠分開填寫:若介面分別顯示 Address 與 Port,伺服器位址欄不應附加連接埠,請在 Port 欄單獨填寫。不要因常見範例使用
51820,就取代原始設定中的其他連接埠。 - IPv6 Endpoint:標準文字設定中的 IPv6 位址若含連接埠,需使用方括號,例如
[2001:db8::10]:51820;拆開填入介面時,請依個別位址欄位的格式要求填寫。
標準設定也可能包含 AllowedIPs。此欄位描述與 WireGuard 對端關聯的位址範圍,並參與 WireGuard 的路由與來源位址檢查;它不是 Address,也不能直接視為 Shadowrocket 的全域分流規則。編輯頁是否提供對應選項,請以實際顯示的欄位為準。看到 0.0.0.0/0,不代表 Shadowrocket 的所有請求一定會經過該項目。
DNS 與 MTU:分開檢查名稱解析和封包大小
DNS 用來將網域名稱解析為位址,無法修復金鑰錯誤。標準 WireGuard 檔案中的 DNS 是用戶端工具採用的設定慣例,不是 WireGuard 交握封包中的驗證參數。在 Shadowrocket 中,也要一併確認目前生效的 Config 與 Settings DNS 設定;不能只因原始檔案寫有 DNS 位址,就認定執行時一定會使用。
| 參數 | 檢查重點 | 可觀察到的狀況 |
|---|---|---|
DNS | 解析器是否可連線、是否只能透過隧道存取,以及 Endpoint 網域名稱能否先完成解析。 | 網域解析發生錯誤,但已知目標的連線測試可能仍有回應。 |
MTU | 先沿用原始設定;檢查隧道封裝後的封包是否超出實際路徑可承受的大小。 | 小型請求成功,但大型回應或上傳停滯,部分網頁長時間載入。 |
PersistentKeepalive | 原始設定是否要求定期傳送保活封包,以及目前網路是否有 NAT 對應逾時問題。 | 閒置一段時間後首次存取失敗,重新連線後短暫恢復。 |
MTU 的單位是位元組。1420 是常見參考值,並非適用於所有網路的固定最佳值。若原始設定已指定 MTU,請先依原值測試;只有反覆出現「大型請求停滯、小型請求正常」等狀況時,才一次只調整此項。例如將 1420 暫時降至 1380,重新測試同一頁面或同一項上傳,並記錄結果。若沒有改善,請恢復原值,不要同時修改 DNS 與規則。
原始設定中的 PersistentKeepalive = 25 表示保活間隔為 25 秒,不是逾時時間或重試次數。是否需要保活取決於網路與服務設定;保活無法取代正確的金鑰、Endpoint 或可用的 UDP 路徑。
在 Home 填寫並逐層驗證
Home 用來管理連線項目,Config 用來管理規則設定,Settings 用來管理 App 設定。填寫 WireGuard 參數與匯入規則設定是兩件不同的事:前者提供連線方式,後者決定哪些請求使用該連線。部分欄位的展開方式可能隨目前介面而異;對應標準設定欄位時,請依欄位用途判斷,不要依清單位置照順序貼上。
-
準備原始設定
保留既有服務提供的原始設定,確認 Interface 與 Peer 是否屬於同一台裝置。先記下原本的 Global Routing 狀態,方便測試後還原。
-
選擇類型
前往 Home → 右上角「+」→ Type → WireGuard。若要修改現有項目,請從 Home 開啟該項目的編輯頁,不必重複建立內容相近的項目。
-
對應參數
將 Endpoint 對應至伺服器位址與 Port,將 Interface.PrivateKey 對應至 Private Key,將 Peer.PublicKey 對應至 Public Key。依原始設定和編輯頁實際欄位,逐項核對 Address、Preshared Key 與 MTU 後再儲存。
-
排除規則干擾
回到 Home,選取已儲存的 WireGuard 項目,暫時將 Global Routing 設為 Proxy。開啟連線後,測試一個已知可存取的 HTTPS 網頁。這樣能先減少 Config 規則造成的干擾,但仍須檢查 DNS 與其他生效中的設定。
-
還原日常設定
確認基本存取正常後,還原原本的 Global Routing,再測試同一個目標。若已啟用 Settings → On Demand,排查期間可暫時關閉自動觸發,避免手動中斷後又自動連線;測試完成後再還原原設定。
連線開關已開啟,只能表示本機連線流程已啟動,無法單獨證明遠端已完成 WireGuard 交握。延遲測試出現數值,也不能取代網頁存取驗證:測試目標、測試方式與實際請求路徑可能不同。請同時查看網域解析結果、目標存取結果及可用的連線記錄。
Global Routing 如何影響測試結果
以下僅比較 Shadowrocket 內三種分流模式,方便說明測試結果差異;Global Routing 也可能顯示 Scene,本文不將它作為隔離測試的基準。建議使用 Config,意指日常依已核對的規則處理流量,不代表任何設定檔都能直接套用。
Config
建議依目前 Config 中的規則與策略處理請求。符合條件的第一條規則會先決定結果,因此 WireGuard 項目可用,不代表每個網域都會經由它連線。
適用情況:基本連線驗證完成後,依日常規則分流
Proxy
以代理模式處理流量,可暫時降低一般分流規則的影響。測試前請確認目前選取的連線確實是要檢查的 WireGuard 項目。
適用情況:首次填寫參數後,短時間隔離測試
Direct
以直接連線方式存取目標。此時網頁能開啟,不代表 WireGuard 參數正確;請與 Proxy 模式下存取同一目標的結果分開記錄。
適用情況:對照目前網路的直接存取狀況
返回 Config 後,若只有部分目標無法存取,請檢查規則順序與對應策略的實際選擇。DOMAIN-SUFFIX 依網域後綴比對,IP-CIDR 依 IP 網段比對,GEOIP 依 IP 地理資料庫比對,FINAL 則為未符合前述規則的請求指定最終動作。若問題只在 Config 模式下出現,不要反覆更換 Private Key 來處理規則比對問題。
常見設定問題與排查順序
填入 Private Key 後,為什麼還是連不上?
回到 Home,開啟該項目的編輯頁,依序核對 Type、Endpoint 位址、Port、Private Key 與對端 Public Key。接著確認遠端登錄的是由該私鑰推導出的本機公鑰;若設定中有 Preshared Key,兩端也必須一致。只檢查私鑰字元數並不足夠。
可以直接把伺服器 IP 填入 Address 嗎?
不能這樣替換。Address 是服務端分配、位於隧道內的本機位址;伺服器的公網位址則屬於 Endpoint。請依原始設定中的 Interface.Address 填回,並保留前綴長度;若尚未取得 Address,請先向既有服務的管理方確認。
Wi-Fi 正常,切換到行動網路後卻連不上,怎麼辦?
先在兩種網路下使用同一個項目、相同的 Global Routing 與相同測試目標,排除測試條件不同的影響。再確認 Endpoint 的 IPv4/IPv6 是否可連線,以及 UDP 路徑是否可用。若問題只在閒置一段時間後出現,請檢查原始設定中的 PersistentKeepalive;若只有大型請求失敗,再單獨測試 MTU。
訂閱更新後,手動修改的內容為什麼不見了?
訂閱管理的項目可能在更新時重新寫入參數。先確認編輯的是手動項目還是由訂閱產生的項目,記下被覆寫的欄位,並核對訂閱來源提供的設定。若需長期修正,應與既有服務提供的原始設定一致,不要每次更新後都盲目重複修改。
調低 MTU 就能解決所有載入問題嗎?
不能。先確認在 Proxy 模式下能否存取目標,再檢查名稱解析是否成功。只有反覆出現與大型封包相關的狀況,才適合繼續測試 MTU。金鑰不符、連接埠錯誤或 DNS 無法連線,都不會因降低 MTU 自動修復。
排查完成後,記錄實際使用的網路、Global Routing、測試目標、修改項目與結果。向既有服務的管理方回報時,可描述「同一目標在 Proxy 下失敗、Direct 下正常」或「小型請求成功、上傳停滯」等狀況,但請遮蔽金鑰與個人設定。明確的對照紀錄比公開整份設定更有助於找出問題。