Shadowrocket WireGuard 設定教學:PrivateKey、PublicKey、AllowedIPs 欄位說明

說明如何在 Add Server 選擇 WireGuard,逐一解釋金鑰、位址、端點、MTU 與 AllowedIPs 欄位,並整理常見填寫錯誤。

本文重點

設定 WireGuard 時,先分清本機身分、遠端身分與隧道位址,再核對 Endpoint 和 AllowedIPs。本文適用於已備妥自有服務商設定或自管端點資料的使用者,說明如何將標準 WireGuard 欄位對應至 Shadowrocket 的新增流程,以及如何區分金鑰錯誤、UDP 不通、路由範圍不足與 MTU 不合適等問題。

一、在 Add Server 新增 WireGuard

Shadowrocket(小火箭)的 WireGuard 設定需要一組相互配套的參數。只有遠端位址和連接埠還不足以建立連線:本機 PrivateKey 對應的 PublicKey 必須已登錄在遠端,隧道位址與允許的位址範圍也必須和遠端設定一致。下文的位址僅供說明欄位,無法直接用來連線。

  1. 整理參數

    先從現有設定中分辨 [Interface] 與 [Peer]:前者包含本機 PrivateKey、Address 等資訊,後者包含遠端 PublicKey、Endpoint、AllowedIPs 等資訊。先保留原始資料,避免覆寫後無從比對。

  2. 選擇類型

    前往 Home → 點選右上角「+」→ Add Server → Type,選擇 WireGuard。確認 Type 後再填寫參數,不要把 WireGuard 金鑰填入其他協定的密碼欄位。

  3. 對應欄位

    將 Endpoint 的主機名稱與連接埠分別對應至 Address、Port;將 Interface 的 PrivateKey 和 Peer 的 PublicKey 填入各自的金鑰欄位。隧道 IP 應填入本機位址欄位,而不是遠端 Address。實際分組與欄位顯示請以目前的 App 介面為準。

  4. 儲存並驗證

    儲存後返回 Home,選取該設定,檢查 Global Routing,再開啟連線開關。依照系統提示允許加入 VPN 設定後,分別使用 Connectivity Test 和實際目標連線進行檢查;開啟開關不代表遠端握手已成功。

手動新增設定適合逐項核對。若設定來自既有訂閱,請先確認更新是否會覆寫手動修改;排查時保留獨立副本,並記錄修改內容。本網站不提供、不販售也不推薦節點或訂閱,以下步驟僅處理使用者已有的設定。

二、PrivateKey 與 PublicKey:先確認分屬哪一端

WireGuard 使用金鑰配對驗證身分。本機 PrivateKey 與本機 PublicKey 為一組;遠端也有自己的金鑰組。Shadowrocket 中填寫的 Peer PublicKey 是遠端公鑰,不是由目前的 PrivateKey 衍生出的本機公鑰。手動設定時最容易把這兩者弄反。

本機 Interface

PrivateKey
本機私鑰,用於識別本機身分;請妥善保密。
PublicKey
由本機 PrivateKey 衍生,提供給遠端登錄為 Peer。
Address
本機隧道位址,例如 10.66.0.2/32,不是公網端點。

更換本機 PrivateKey 後,也必須同步更換遠端登錄的本機 PublicKey。

遠端 Peer

PublicKey
遠端公鑰,填入用戶端對應的 Peer PublicKey 欄位。
PresharedKey
可選的額外共用金鑰;啟用時兩端必須一致。
Endpoint
遠端可連線的主機與 UDP 連接埠,例如 192.0.2.10:51820。

用戶端不需要遠端 PrivateKey;請勿交換兩端的私鑰。

標準 WireGuard 金鑰是 32 位元組資料的 Base64 表示法,通常為 44 個字元,並以 = 結尾。貼上時請保留結尾字元,不要加引號,也不要包含空格或換行。長度和格式看起來正確,只代表格式可能符合要求,不能證明金鑰屬於正確的 Peer。

三、Address、Endpoint 與 DNS:三種位址不可混填

標準設定檔中的 Address 指的是隧道內部位址,而新增伺服器介面中的 Address 通常用來填寫遠端主機位址。同一個英文詞在不同情境下可能代表不同意思,請依所在欄位分組判斷。將 10.66.0.2/32 填成遠端主機位址,並不能讓用戶端找到公網端點。

設定內容範例與說明填寫時請核對
Interface Address10.66.0.2/32:本機隧道 IPv4 位址。依照資料來源填入本機位址欄位;並一併核對位址與前綴長度。
Peer Endpoint192.0.2.10:51820:遠端主機與 UDP 連接埠。若介面分為 Address、Port,請分別填入主機位址和 51820。
IPv6 Endpoint[2001:db8::10]:51820:以方括號區分主機與連接埠的組合格式。若主機與連接埠分欄,請勿將完整組合字串填入主機欄位。
DNS負責名稱解析的伺服器位址或解析設定。確認解析路徑可正常連線;DNS 不能取代 Endpoint 或隧道位址。

192.0.2.10 和 2001:db8::10 是文件範例位址。實際連接埠請依自己的設定填寫;51820 只是常見範例,並非 WireGuard 指定的連接埠。WireGuard 使用 UDP,因此一般 TCP 連接埠測試無論成功或失敗,都不能直接證明該 UDP 端點是否可用。

若 Endpoint 使用網域名稱,用戶端必須先解析名稱,才能傳送握手資料。若連端點網域名稱都無法解析,請先檢查目前網路的 DNS 解析條件;若端點可連線,但只有網站網域無法開啟,再檢查 DNS 查詢實際送往何處。不要把這兩種故障都歸咎於「金鑰有問題」。

四、AllowedIPs 與 Global Routing:分別檢查兩層設定

在 WireGuard 的 Peer 設定中,AllowedIPs 用來將位址範圍對應至 Peer,也用於檢查接收資料的來源位址範圍。它不是 App 的網域規則,也不是「允許連線的遠端伺服器清單」。例如 10.66.0.0/24 代表一個 IPv4 網段,0.0.0.0/0 代表所有 IPv4 位址,::/0 代表所有 IPv6 位址。

Shadowrocket 的 Global Routing 與 WireGuard 的 Peer 位址範圍是兩種不同設定。暫時選擇 Proxy 可用來排除規則因素的影響,但仍受 App 處理範圍、隧道參數及遠端網路能力限制;選擇 Direct 則無法驗證 WireGuard 的轉送路徑。測試完成後請恢復原本設定,避免將臨時排查狀態當成長期設定。

五、MTU 與 PersistentKeepalive:依症狀調整

MTU 會影響隧道內資料封包的大小上限。封裝會增加額外負擔,可用值則取決於底層網路與傳輸路徑。只有出現「小型請求成功,但大型頁面或較大檔案傳輸停滯」等符合封包大小問題的狀況時,才需要比較 MTU;若只是握手失敗,應先檢查 Endpoint、UDP 與金鑰。

保留原始 MTU 設定

建議

先使用現有設定提供的數值;若原設定未指定,則保留 App 的預設處理方式。記錄目前網路、目標與問題現象,作為後續比較依據,不要將某個常見數值視為適用所有網路的標準答案。

適用情況:初次設定,或尚無封包大小異常的證據。

小幅調低 MTU

若原值為 1420,可先保留副本,再以 1380 進行一次對照測試;這只是排查範例,並非實測結果。請維持相同網路、目標與其他參數;若沒有改善,便恢復原值。

適用情況:已能交換資料,但較大的傳輸反覆停滯。

PersistentKeepalive 的單位是秒,可定期傳送保活資料,協助維持 NAT 或防火牆中的連線對應。25 是常見設定範例,仍應以自身設定需求為準。它不是重新驗證密碼,也不是速度開關;設定後無法修復錯誤的 PublicKey 或無法連線的連接埠。

六、兩端如何對應:用戶端與遠端核對清單

一端顯示連線已開啟,不代表另一端已接受該身分。排查時應分別確認用戶端連線至哪個端點、遠端允許哪個身分,以及回傳流量如何找到本機。尤其不要在多台裝置上直接共用同一組身分與隧道位址,否則遠端可能在不同來源端點之間更新對應,造成連線時斷時續。

核對方式:成對檢查本機 Interface 與遠端 Peer

本機 Shadowrocket
  • PrivateKey 屬於目前裝置,對應的 PublicKey 已提供給遠端登錄。
  • Peer PublicKey 屬於目標遠端,Endpoint 主機位址與 UDP 連接埠皆正確。
  • 隧道位址、位址範圍與 DNS 均符合現有設定。
  • 在 Home 選取正確設定,並確認 Global Routing 符合測試目的。
遠端設定
  • 對應的 Peer 登錄的是目前裝置的 PublicKey,而非另一台裝置的公鑰。
  • 為本機配置專用位址,例如 10.66.0.2/32,並設定回程路徑。
  • 實際監聽的 UDP 連接埠與防火牆允許通過的連接埠一致。
  • 若需要存取外部網路,遠端須具備相應的轉送、路由與存取權限。

先核對身分配對,再檢查位址與轉送;只修改用戶端欄位,無法取代遠端的對應設定。

七、常見填寫錯誤與驗證方式

Connectivity Test 可協助判斷連線可達性,但不要把單一延遲數值當成傳輸量或握手狀態。驗證時請記錄目標、測試方式與底層網路;若遠端由自己管理,也應查看遠端最近的握手時間及收發計數,確認資料是否抵達。以下問答依據可觀察到的現象整理,不預設所有故障都源自同一個欄位。

儲存 PrivateKey 時立即出錯,該先檢查哪裡?

返回 Home 中該設定的編輯頁面,確認是否連同 PrivateKey = 整行、引號或換行一起複製。欄位通常只需填入等號後方的金鑰值;結尾的 = 是 Base64 內容的一部分,請保留。不要任意補上字元來嘗試修復。

開關已開啟,為什麼仍沒有資料?

先確認 Home 選取的是目標設定,再檢查 Global Routing。接著核對 Endpoint、UDP 連接埠與遠端 PublicKey;若有遠端管理權限,請檢查最近的握手時間與收發計數。系統 VPN 已啟動只能說明本機隧道已建立,無法單獨證明遠端已回應。

內部位址可以存取,公網網頁卻打不開?

先核對 AllowedIPs 是否只涵蓋內部網段,再分別檢查 DNS 與遠端轉送條件。若 Global Routing 設為 Config,還需檢查實際目標符合哪條規則。不要只將 AllowedIPs 改成涵蓋所有位址,就認定遠端已具備公網轉送能力。

關閉後又自動連線,是欄位填錯了嗎?

先前往 Settings → On Demand 檢查目前的按需連線條件;手動排查時,暫停相關的自動觸發設定,再返回 Home 重新測試。On Demand 決定何時觸發連線,與 WireGuard 金鑰是否正確是兩種不同問題,不應透過更換金鑰來處理自動連線。

另一台裝置可以使用,可以複製整套參數嗎?

先確認遠端是否已為兩台裝置分別配置身分與位址。每台裝置都應使用自己的 PrivateKey,並在遠端登錄各自的 PublicKey;只複製相同的端點資料,不代表可以共用整套身分。請保留各自獨立的設定,再於相同網路下進行比較。

最終驗收至少應包含三項:目標請求確實經由預期設定傳送、所需位址範圍可正常存取,以及閒置後的通訊恢復符合預期。完成後請保留原始設定與修改紀錄,刪除排查過程中暫時建立的重複項目;若使用訂閱管理,也請確認下次更新不會覆寫已核實的參數。

App Store 正版確認查看取得與購買說明