Shadowrocket WireGuard 設定教學:Private Key、Peer 與 MTU 參數詳解

逐一說明 WireGuard 設定中的 Private Key、Public Key、Address、Peer、MTU 與 DNS,並教你依服務商提供的設定填入參數及排查常見錯誤。

本文重點

設定 WireGuard 時,先分清本機 Interface 與遠端 Peer:Private Key 屬於本機,Peer 的 Public Key 屬於遠端,隧道 Address 也不是伺服器 Endpoint。本文適合已有合法可用 WireGuard 設定的使用者,逐項說明欄位對應、加入步驟與常見故障,協助你在 Shadowrocket 中確認金鑰、位址、UDP 連接埠、MTU 與 DNS,避免反覆更改參數碰運氣。

先分清 Interface 與 Peer

WireGuard 設定通常由 [Interface] 和一個或多個 [Peer] 區段組成。Interface 描述本機的隧道身分與位址;Peer 描述與本機通訊的另一端。將服務商提供的設定輸入 Shadowrocket 前,應先依照這兩種角色整理欄位,再進入 Home 新增記錄。不要只看欄位名稱中有沒有 Key 或 Address 就直接貼上。

本文以使用者已有自己的服務商與設定為前提。Shadowrocket 是閉源商業應用,買斷用戶端不等於購買線路方案;本站不提供、不銷售,也不推薦節點或訂閱。WireGuard 欄位是否有效,取決於兩端設定是否配套;購買應用本身不會產生可用的遠端 Peer。

Interface 本機端

Private Key
本機私鑰,對應原設定中的 PrivateKey。
Address
指派給本機的隧道 IP 與前綴長度。
MTU
隧道介面允許的最大 IP 封包大小。
DNS
設定指定的解析器位址,請確認實際生效範圍。

本機金鑰與隧道位址應來自同一份有效設定。

Peer 遠端端

Public Key
遠端公鑰,對應 Peer 區段中的 PublicKey。
Endpoint
遠端伺服器位址與 UDP 連接埠。
AllowedIPs
該 Peer 對應的隧道位址範圍。
Preshared Key
雙方約定的選用預共享金鑰。

請勿將本機公鑰填入遠端 Public Key 欄位。

Private Key、Public Key 與 Preshared Key

PrivateKey 與 PublicKey 是配對使用的身分資料。本機私鑰會對應一組本機公鑰,遠端必須登錄這組本機公鑰;同時,本機設定中 Peer 的 Public Key 應填入遠端公鑰。這是兩端互相辨識的關係,不是將同一組公鑰複製到所有欄位。

WireGuard 標準金鑰是 32 位元組資料,常見的文字格式為 44 個字元的 Base64 字串,通常以 = 結尾。長度符合只代表格式看起來合理,無法證明它屬於目前帳戶或目前 Peer。複製時請保留結尾字元,移除意外加入的引號、換行與前後空白;若輸入框只接受金鑰值,不要連同整行 PrivateKey = 一起貼上。

Address 與 Endpoint:兩種位址不可互換

Interface 的 Address 是隧道內位址,例如 10.66.0.2/32。其中 /32 是 IPv4 前綴長度,不是連接埠。Endpoint 則是建立 WireGuard 通訊時要連線的遠端網路位址,通常由網域名稱或 IP 加上 UDP 連接埠組成。兩者用途不同,即使介面上都顯示 Address,也必須依所在區段判斷。

原設定內容意義輸入檢查項目
Address = 10.66.0.2/32本機隧道 IPv4 位址填入本機隧道位址欄位,並依輸入框要求保留前綴。
Address = fd66::2/128本機隧道 IPv6 位址只有原設定指派此位址時才填入,不要自行補上。
Endpoint = 192.0.2.10:51820遠端 IPv4 位址與 UDP 連接埠若欄位分開,Address 填 IP,Port 填 51820。
Endpoint = [2001:db8::10]:51820遠端 IPv6 位址與 UDP 連接埠以單一字串表示時,用方括號區分 IPv6 位址與連接埠;分欄輸入則依欄位格式填寫。

表格中的位址僅用於說明格式,不能當作實際伺服器使用。連接埠 51820 是常見設定值,並非固定值;若原設定使用其他連接埠,請照原值填寫。Endpoint 不應加上 https://,也不能填入訂閱連結。若使用網域名稱,本機必須先能解析該網域,之後才能向遠端傳送 WireGuard 交握封包。

在 Home 新增並逐項驗證

先保留一份原始設定,再操作 App。以下步驟適用於手動輸入已有的 WireGuard 參數;若參數由現有訂閱管理,請先確認更新時該記錄是否會被覆寫。不同介面的隧道參數可能分列為獨立項目,核對時請以 Interface 與 Peer 的歸屬為準,不要把設定檔的區段標記當成欄位值。

  1. 整理參數

    分別抄錄 Interface 的 PrivateKey、Address,以及 Peer 的 PublicKey、Endpoint;若有 PresharedKey、MTU、DNS,也一併保留。若設定包含多個 Peer,請先確認要輸入哪一個。

  2. 選擇類型

    前往 Home → 點選右上角「+」→ Type → WireGuard,再填寫該記錄的備註與遠端位址資料。備註僅供辨識記錄,不會參與金鑰驗證。

  3. 確認欄位角色

    填入本機 Private Key、隧道 Address 與遠端 Public Key,再依原設定補上其他參數。儲存前逐項比對,尤其確認 Endpoint 的 Port 沒有誤填成隧道前綴長度。

  4. 單獨測試

    返回 Home 選取該記錄,暫時將 Global Routing 設為 Proxy 後開啟連線,並瀏覽已知可連線的目標。測試完成後,恢復原本的 Global Routing 設定,避免將暫時設定留作日常使用。

  5. 檢查自動連線

    若手動中斷後又自動重新連線,請檢查 Settings → On Demand。測試期間先停用可能觸發自動連線的條件,驗證完成後再恢復所需設定。

系統 VPN 狀態顯示已連線,不代表遠端交握已成功。這首先表示本機 VPN 工作階段已建立;遠端能否收發資料,仍須參考實際請求結果、可用的交握紀錄與收發計數。不要因為開關已開啟,就略過金鑰與 Endpoint 檢查。

AllowedIPs 與 Global Routing 的作用

在標準 WireGuard 設定中,AllowedIPs 會將位址範圍對應至指定 Peer,並參與接收資料時的來源位址驗證。0.0.0.0/0 代表所有 IPv4 位址範圍,::/0 代表所有 IPv6 位址範圍;這兩個值本身不保證遠端具備對應協定族的轉送能力。

Shadowrocket 的 Global Routing 則決定 App 如何選擇請求的處理路徑。Proxy 用於代理模式,Direct 用於直連模式,Config 依目前設定處理,Scene 依所選場景處理。AllowedIPs 不是 Config 中的網域規則,不可將 DOMAIN-SUFFIX 或 FINAL 寫入其位址清單。

MTU:先使用原值,再視情況調整

MTU 決定隧道介面可承載的最大 IP 封包大小。WireGuard 會在 UDP 中封裝資料,外層還需要預留 IP、UDP 與協定本身所占的空間。對於沒有額外擴充的常見資料封裝,外層 IPv4 的開銷約為 60 位元組,外層 IPv6 約為 80 位元組;實際可用值仍受接取網路與整條路徑限制。

60 位元組
常見外層 IPv4 封裝開銷
80 位元組
常見外層 IPv6 封裝開銷
1420
外層 MTU 為 1500、預留 80 位元組時的計算值

1420 是常見參考值,並非適用所有網路的最佳值。若原設定明確提供 MTU,請先照原值填寫;若未提供,優先保留 App 的預設處理方式。只有在交握與小型請求正常,但較大的頁面或上傳持續停滯時,才將 MTU 納入排查;降低 MTU 不能取代修正錯誤金鑰。

  1. 記錄目前的 MTU 與重現問題的目標,並在同一網路下分別測試小型請求、較大頁面與上傳。
  2. 其他欄位保持不變,例如將 MTU 從 1420 調整為 1380,重新連線後重複相同請求。這是排查範例,不是實測結論。
  3. 若情況沒有改善,請恢復原值,並繼續檢查 UDP 可達性、DNS 與遠端轉送;若有所改善,再確認切換 Wi-Fi 與行動網路後的表現。

DNS:區分 Endpoint 解析與隧道內解析

WireGuard 加密協定本身不負責下發 DNS;常見設定中的 DNS 是由用戶端處理的附加設定。輸入原檔中的 DNS 值後,還需確認 Shadowrocket 目前的 Config DNS 設定,才能判斷實際解析路徑;不能只因欄位有值,就認定所有查詢都會經由該解析器。

建立通訊前解析 Endpoint 網域,與連線後解析網頁網域,是兩個不同階段。若 Endpoint 使用網域名稱,而指定的 DNS 只能透過尚未建立的隧道存取,就需要可用的初始解析路徑。排查時先確認目前接取網路能解析遠端網域,再確認隧道內的 DNS 是否可連線,避免將這兩種故障混為一談。

常見問題:依現象縮小排查範圍

Private Key 已填好,為什麼仍然沒有流量?

先比對 Peer 的 Public Key 與 Endpoint,再確認遠端登錄的是與目前私鑰相對應的本機公鑰。若原設定包含 PresharedKey,也必須照原值填入。只有本機私鑰正確,並不能證明兩端身分已配對。

Port 一定要填 51820 嗎?

不一定。請依現有設定中的 Endpoint 連接埠填寫,並確認網路路徑允許該 UDP 連接埠通訊。單純將連接埠改為 443,不會讓 WireGuard 變成 HTTPS,也不會自動解決 UDP 受限的問題。

小型網頁能開啟,大型頁面卻一直轉圈,該怎麼辦?

先在同一網路重複請求,確認不是特定網站故障;保持金鑰與 Endpoint 不變,記下目前 MTU 後測試降低 MTU。若只有網域請求失敗,也要一併檢查 DNS,不要直接認定是 MTU 所致。

切換到行動網路後無法使用,需要重新填寫金鑰嗎?

先檢查目前網路的 UDP 可達性與 Endpoint 網域解析,再查看 Settings → On Demand 是否改變連線行為。切換網路本身不需要更換金鑰;若原設定有提供 PersistentKeepalive,請保留原值,但它無法取代可連線的 UDP 路徑。

同一份設定可以同時用在兩台裝置上嗎?

建議為每台裝置各自取得獨立金鑰與隧道位址。兩台裝置同時使用相同私鑰時,遠端可能會依最近收到的驗證封包更新 Endpoint,導致流量在裝置間切換。不要用提高 MTU 或修改 DNS 來處理身分重複使用問題。

完成後請保留一份已遮蔽敏感資訊的檢查紀錄:參數來源、所選記錄、Global Routing 模式、測試網路,以及修改前後的 MTU。恢復原本的 Config 與 On Demand 設定後,再實際連線測試一次,確認暫時測試的結果也能延續至日常使用。

App Store 正版驗證