Shadowrocket WireGuard 設定教學:PrivateKey、Peer、AllowedIPs 與 MTU

了解 Shadowrocket 新增 WireGuard 時各欄位的用途、服務商提供的設定該如何填入,以及 MTU 和 DNS 設錯時的常見狀況。

本文重點

本文適合已取得服務商提供的 WireGuard 設定,並需要在 Shadowrocket(小火箭)中核對參數的使用者。先分清本機身分與遠端 Peer,再確認位址、金鑰、AllowedIPs、DNS 和 MTU;最後每次只修改一項,逐步找出連線問題。文中的位址與連接埠僅用來說明欄位關係,並非可用的連線資料。

1. 先分清 Interface 與 Peer 的角色

WireGuard 設定通常以 [Interface] 描述本機的隧道介面,以 [Peer] 描述允許通訊的遠端。Shadowrocket 的新增頁面可能會將這些內容拆成個別欄位,因此不要只按照檔案中的排列順序填寫,更不可互換兩處的金鑰。

本機的 PrivateKey 用來識別本機,遠端必須登錄與之對應的本機公鑰。本機設定中的 Peer PublicKey 則用來驗證遠端身分。兩者通常都是 Base64 文字,光看長度或結尾符號無法判斷該填在哪個欄位。

參數歸屬:本機介面與遠端 Peer

Interface:本機身分
  • PrivateKey:本機私鑰,必須妥善保密。
  • Address:伺服器分配給本機的隧道位址。
  • MTU:隧道介面的封包大小上限。
  • DNS:設定檔可能附帶的解析設定,不屬於 WireGuard 握手參數。
Peer:遠端身分與路徑
  • PublicKey:遠端公鑰,不是本機公鑰。
  • PresharedKey:選填的預共享金鑰,雙方必須一致。
  • Endpoint:遠端公開位址與 UDP 連接埠。
  • AllowedIPs:與此 Peer 關聯的目的地與來源位址範圍。

先確認每個參數屬於哪一端,再對應填入欄位;修改本機私鑰後,也必須同步更新遠端登錄的本機公鑰。

2. 逐欄核對位址、金鑰與連接埠

Address 是隧道內部位址,不是遠端伺服器位址。例如 10.66.0.2/32 代表單一 IPv4 主機位址;其中 /32 是前綴長度,不可任意改成 /24。若頁面將位址與前綴拆成不同欄位,請分別填寫,不要直接照貼完整一行。

來源欄位欄位用途常見填錯情況與核對方式
PrivateKey本機 WireGuard 私鑰。不要填成遠端 PublicKey;複製時請檢查換行、空格及是否有遺漏字元。
Address分配給本機的 IPv4 或 IPv6 隧道位址。不要填入 Endpoint;保留原有前綴長度,並分別核對雙堆疊參數。
Peer PublicKey遠端 Peer 的公鑰。不要以本機公鑰代替;必須與實際連線的遠端相符。
PresharedKey雙方共用的選填金鑰。原始設定未提供時不要自行編造;一端有值、另一端沒有,會造成通訊失敗。
Endpoint遠端位址與 UDP 連接埠。192.0.2.10:51820 中的位址與連接埠應分別填入對應欄位;此位址僅供說明。
PersistentKeepalive閒置時維持 NAT 對應的傳送間隔,單位為秒。25 是常見範例,不是通用必填值,也不是連線逾時時間。

WireGuard 使用 UDP。連接埠 51820 是常見設定範例,不是協定指定的連接埠,也不代表填入該連接埠的任何位址都能使用。Endpoint 為 IPv6 時,設定檔通常寫作 [2001:db8::10]:51820;若介面將位址與連接埠分開,方括號與冒號的輸入方式請依欄位格式為準。

UDP
WireGuard 的外層傳輸使用 UDP;TCP 連接埠可連通,不代表隧道可用
51820
常見 Endpoint 連接埠範例,實際設定請以現有資料為準
25 秒
PersistentKeepalive 範例間隔,並非預設要求

3. 在 Home 新增項目並進行可重複的測試

操作前先備份原始設定,並記錄目前使用的 Wi-Fi 或行動網路,以及原本的 Global Routing 選項。若設定來自既有訂閱,先確認訂閱內容確實包含 WireGuard 項目;更新可能會重新建立項目,手動修改前應記錄差異,以免後續被覆蓋時誤以為設定沒有儲存。

  1. 準備原始資料

    確認資料包含本機 PrivateKey、隧道 Address、遠端 PublicKey 和 Endpoint。若資料只有公鑰或連接埠,請先向原始設定提供者確認;無法據此推算完整連線參數。

  2. 選擇協定

    前往 Home → + → Type → WireGuard。依編輯頁面上的實際欄位填入遠端位址、連接埠、本機金鑰和隧道位址;不同介面的欄位可能會將位址與前綴拆開,請勿將整份設定檔貼入單一金鑰欄位。

  3. 核對遠端參數

    填入 Peer PublicKey,並核對現有資料中的 PresharedKey、AllowedIPs 和保活間隔。若目前頁面沒有相應欄位,請勿改填到名稱相似的其他欄位;應先確認該匯入方式支援哪些參數。

  4. 儲存並連線

    儲存後返回 Home,選取剛新增的項目,再開啟連線開關。首次連線時,請依系統提示允許 VPN 設定。系統顯示 VPN 狀態,只代表隧道介面已啟動,不能單獨證明遠端已成功回應。

  5. 記錄測試結果

    在 Home → Global Routing → Proxy 下進行短時間對照測試,確認所選項目能承載目標請求;記下測試目標、錯誤狀況和網路類型。完成後恢復原本的 Config 或其他日常設定,避免長期保留測試設定。

測試期間請檢查 Settings → On Demand 是否設有自動連線條件。On Demand 負責觸發系統連線,不負責決定網域要套用哪條規則;若切換網路後因此重新連線,請在紀錄中註明,避免將自動重新連線誤認為修改 WireGuard 參數的效果。

4. AllowedIPs 與 Global Routing 屬於不同層級的規則

WireGuard 的 AllowedIPs 會將 IP 網段與 Peer 關聯:傳送時依此選擇可承載目標位址的 Peer;接收時則限制該 Peer 可使用的內部來源位址。它不接受網域名稱,也不等同於 Shadowrocket 的 DOMAIN-SUFFIX、GEOIP、IP-CIDR 或 FINAL。

在 Shadowrocket 中,還要確認請求最後是否選到 WireGuard 項目。Config 會依目前設定中的規則與策略處理請求,不能假設未符合規則的流量一定會直連,最終結果取決於兜底設定。即使 AllowedIPs 涵蓋範圍很廣,符合 DIRECT 的請求也不會因此自動改走所選的 WireGuard 路徑。

Config:依設定判斷

建議

依照目前設定中的規則與策略處理請求。檢查目標是否符合預期規則,以及對應策略是否確實選取 WireGuard 項目;也要確認 FINAL 的兜底方向。

適用情況:確認隧道可用後,恢復日常規則分流。

Proxy:代理路徑對照

短時間用來核對所選的代理路徑,減少規則選擇對排查的干擾。此設定無法修復錯誤金鑰、無法連通的 UDP Endpoint,或遠端缺少路由的問題。

適用情況:分辨「流量沒有選到該項目」與「該項目本身無法使用」。

Direct:直連基準

以直連作為網路基準,觀察相同目標在不經代理路徑時的狀況。Direct 下網頁正常,不代表 WireGuard 參數正確。

適用情況:確認本機網路是否原本就無法連線至測試目標。

5. DNS 與 MTU:連線後仍異常時的檢查項目

DNS 決定網域名稱如何解析

WireGuard 握手不依賴設定檔中的 DNS 欄位;但若 Endpoint 使用網域名稱,建立外層連線前仍須先解析。隧道建立後,網頁網域也需要解析。因此,「Endpoint 解析失敗」與「服務網域解析失敗」應分開記錄,不要一概歸因為金鑰錯誤。

設定檔中的 DNS 通常屬於用戶端設定工具的延伸功能,並非 WireGuard 協定本身交換的參數。匯入後,請前往 Config 檢查目前啟用設定中的 DNS 選項,確認 DNS 請求實際使用的路徑;不要假設原始檔案中的 DNS 一定會覆蓋 Shadowrocket 目前的設定。

MTU 決定隧道內封包的大小上限

MTU 過大時,常見狀況是看似已連線、少量文字可以載入,但大型頁面、上傳或較大的資料傳輸停滯。這只是判斷線索,並非確診結果;遠端壅塞、UDP 封包遺失或伺服器限制也可能造成類似狀況。MTU 過小則可能增加封包數量與封裝負擔,並非越小越穩定。

  1. 先保留設定提供者給的 MTU,並記錄在相同網路、相同目標與相同操作下的狀況。
  2. 若原值為 1420,可將 1380 作為一次較小值的對照;這些數字僅供測試,不是適用於所有網路的最佳值。
  3. 儲存後中斷連線再重新連線,接著重複原本的測試。這次不要同時更換 DNS、Endpoint 或金鑰。
  4. 若狀況沒有改善,請恢復原值,接著檢查路徑封包遺失與遠端狀態;IPv6 隧道的 MTU 也不應任意調低至小於最小鏈路 MTU 1280。

6. 依狀況排查,不要用單次延遲測試取代驗證

延遲測試反映的是特定測試方式下的結果,無法保證服務資料已成功傳輸。排查時應依序檢查外層 UDP 是否可連通、Peer 身分是否相符、隧道位址與遠端路由、DNS,以及應用程式請求。若能查看遠端握手與收發計數,請配合明確發出的請求一併觀察,不要只看介面是否出現連線圖示。

VPN 圖示出現了,為什麼網頁還是打不開?

返回 Home,確認選取的是目標 WireGuard 項目,再短暫切換至 Global Routing → Proxy 進行對照。若仍無法使用,先核對 Endpoint、UDP 連接埠及雙方公鑰的對應關係;若只有介面啟動但遠端沒有回應,優先修改 DNS 或 MTU 通常無法解決問題。

切換到行動網路就無法連線,需要更換 PrivateKey 嗎?

先不要更換身分。使用原有參數,分別記錄 Wi-Fi 與行動網路的結果,並確認 Endpoint 在兩種網路下的解析與 UDP 連通性。若僅在閒置一段時間後失效,再向原始設定提供者確認是否需要 PersistentKeepalive;更換私鑰後,遠端必須重新登錄公鑰。

小型頁面能開啟,上傳檔案卻停住,該怎麼辦?

維持相同網路與測試目標,單獨調低 MTU,重新連線後再測一次。若結果沒有變化,請恢復原本的 MTU;接著檢查封包遺失、遠端出口與目標服務限制,不要把所有大型資料傳輸失敗都歸因於 MTU。

同一份設定可以同時用在 iPhone 和 iPad 嗎?

是否允許取決於遠端的分配方式。兩台裝置同時使用相同的私鑰與隧道位址,遠端觀察到的 Endpoint 可能會來回變動。若要同時使用,請向原始設定提供者確認獨立 Peer、獨立金鑰與位址的配置方式,不要只複製同一個項目。

更新訂閱後,手動修改的 MTU 又恢復原值了?

先比較更新前後的欄位紀錄,確認該項目是否由訂閱重新建立。由訂閱管理的參數應依既有訂閱的維護方式處理;若要單獨測試,請保留原項目,並記錄本機副本的用途,避免將副本與自動更新的項目混用。

7. 保存排查紀錄與使用注意事項

有效的排查紀錄應讓同一位使用者能在相同條件下重現問題,同時避免洩漏連線憑證。保留可用的原始參數,比連續嘗試多項無關修改更有幫助。排查完成後,請恢復日常的 Global Routing 選項,並確認 On Demand 是否仍符合預期。

App Store 正版核對 →