Shadowrocket WireGuard 設定教學:Private Key、Peer、Allowed IPs 欄位說明

依照 Add Server 的 WireGuard 欄位順序,說明密鑰、Peer 公鑰、Endpoint、Allowed IPs、MTU 與 DNS 的用途,以及如何填入服務商提供的設定。

本文重點

設定 WireGuard 的關鍵,在於分清本機與遠端:Private Key 屬於本機,Peer 的 Public Key 屬於遠端,Endpoint 是遠端公開位址,Address 則是本機隧道位址。本文以使用者已取得 WireGuard 設定為前提,說明如何在 Shadowrocket(小火箭)中對應填寫,並透過 Allowed IPs、路由模式與 DNS 三個層面,找出「已開啟連線,卻無法存取」的原因。

一、新增前先分清 Interface 與 Peer

標準 WireGuard 設定通常分為 [Interface] 與 [Peer] 兩部分。前者描述本機身分與隧道位址,後者描述要連線的對端。即使 Shadowrocket 的欄位排列與設定檔不同,也要依照這兩種歸屬逐項填寫,切勿對調兩端的密鑰。

請先準備使用者已有的完整服務商設定,並確認設定仍有效。只有 Endpoint 或一組 Public Key,還不足以建立連線;伺服器端也必須登錄與本機 Private Key 相對應的 Public Key,並允許使用分配給本機的隧道位址。本文僅說明設定匯入與檢查,不提供、販售或推薦節點、訂閱、機場或邀請碼。

2 個部分
Interface 設定本機,Peer 設定對端
32 位元組
WireGuard 密鑰的原始長度,常以 Base64 表示
UDP
Endpoint 使用的傳輸協定;連接埠以原始設定為準

結論:先依歸屬分類,再填寫欄位

分別核對原始設定中的 Interface 與 Peer;如果無法確認某組密鑰屬於哪一端,請先向設定提供者確認,不要交換密鑰反覆嘗試連線。

二、依序在 Add Server 填寫

以下以 iPhone / iPad 的 Home 頁面為例。前往 Home → + → Add Server → Type → WireGuard 後,先輸入本機資訊,再設定 Peer。如果目前介面將 Endpoint 分成位址與連接埠欄位,或將 Peer 放在獨立編輯區,請依欄位用途填寫,不要把整段設定文字貼進位址欄。

  1. 選擇類型

    在 Home 點選右上角的「+」,進入 Add Server,將 Type 設為 WireGuard。為這筆設定加上容易辨識的備註,避免與現有伺服器混淆。

  2. 填寫本機資訊

    將 Interface 中的 PrivateKey 填入 Private Key,並將 Address 填入本機隧道位址。保留位址後面的前綴長度,例如 10.66.0.2/32。

  3. 填寫對端資訊

    前往 Peer 對應區域,填入 Peer 的 PublicKey 與 Endpoint。如果位址和連接埠分開顯示,請分別填入主機位址與數字連接埠。

  4. 核對選項

    依照原始設定核對 Allowed IPs、Preshared Key、MTU、DNS 與 Persistent Keepalive;若沒有提供選用欄位,請勿從其他帳戶的設定複製。

  5. 儲存並測試

    儲存後返回 Home,點選這筆伺服器旁的圓點,再開啟連線開關。首次使用時,依照系統提示允許新增 VPN 設定,接著執行 Connectivity Test。

如果伺服器是由訂閱產生,請優先核對訂閱中的原始參數。更新訂閱時可能會重新產生項目並覆蓋手動修改;排查前先記下原值,以免更新後誤以為修改仍然保留。一般訂閱網址不能當作 WireGuard 的 Endpoint。

三、Private Key、Public Key 與 Preshared Key 分別如何填寫

Private Key 是本機私鑰。它來自 Interface 的 PrivateKey,不應傳送到公開討論區,也不應出現在截圖中。WireGuard 常用的 Base64 密鑰文字通常為 44 個字元,但字元數正確只代表格式可能正確,不代表它與伺服器端登錄的資訊相符。

原始設定位置對應填寫欄位檢查重點
Interface / PrivateKeyPrivate Key本機私鑰;完整複製,避免空格與換行
Interface / Address本機隧道位址不是公開 Endpoint;保留 CIDR 前綴
Peer / PublicKeyPeer 的 Public Key遠端公鑰;不是本機公鑰
Peer / PresharedKeyPreshared Key選填的預共享密鑰;兩端必須一致
Peer / Endpoint遠端位址與連接埠指向可連線的遠端 UDP 服務

Peer 的 Public Key 是遠端公鑰。不要將本機 Private Key 推導出的本機 Public Key 填在這裡。本機 Public Key 用來讓遠端識別這台裝置;Peer 的 Public Key 則讓本機識別遠端,兩者用途相反。

Preshared Key 是額外的預共享密鑰。原始設定未提供時,通常留空即可;若只有一端填寫,或兩端內容不一致,都會導致交握失敗。它不是登入密碼,也不能用訂閱 token 取代。

四、Endpoint 與 Allowed IPs:位址和路由是兩回事

Endpoint 是遠端實際接收 WireGuard UDP 封包的位置,例如 192.0.2.10:51820。這裡使用的是文件範例位址,無法用來連線;51820 也只是常見連接埠,並非固定值。原始設定使用哪個連接埠,就填哪個,不要自行改成 443。

Allowed IPs 對應原始設定中的 AllowedIPs,用來描述與該 Peer 相關的隧道內 IP 範圍。WireGuard 會依此選擇要將資料傳送至哪個 Peer,並檢查收到的封包來源位址是否屬於該 Peer。這不是「允許存取的網站網域清單」,也不能直接填入 example.com。

0.0.0.0/0
::/0
10.20.0.0/16

上方三行分別代表所有 IPv4、所有 IPv6,以及指定的 IPv4 網段,是三種範圍範例,不表示必須全部照填。如果現有設定只允許 10.20.0.0/16,改成所有位址範圍也不會自動取得遠端網際網路轉送能力。遠端仍須具備相應的路由、轉送設定與存取權限。

五、MTU、DNS 與 Persistent Keepalive 的處理順序

MTU 決定隧道介面可承載的 IP 封包大小,並非頻寬上限。原始設定有提供 MTU 時,請先沿用;若未提供,先使用預設設定,不要一開始就反覆調整。外層網路的封裝方式與路徑 MTU 各有不同,某個數值適用於一種情況,不代表適用於所有網路。

參數用途操作依據
MTU限制隧道封包大小小型請求正常、大型請求停滯時再排查;例如從 1420 調整至 1380 後,重新測試相同目標
DNS指定網域名稱解析所使用的伺服器確認解析器位址可透過目前路由連線,並檢查實際生效的 DNS 設定
Persistent Keepalive定期傳送保活封包,協助維持 NAT 對應依照原始設定填寫;25 秒是常見範例,不是必填值

DNS 並非 WireGuard 交握協定的一部分;設定檔中的 DNS 通常由用戶端或設定工具處理。因此,不能只因原始檔案列出 DNS,就認定 Shadowrocket 目前正在使用該設定。請一併核對項目中的 DNS 參數,以及 Settings → DNS 的設定;若目前的 Config 檔案包含 DNS 設定,也要確認其生效方式。

如果 DNS 位址是隧道內的位址,例如 10.66.0.1,請確認 Allowed IPs 涵蓋該位址,且相關連線確實經由隧道傳送。否則可能出現 Endpoint 可連線、隧道也可能已建立,但網域解析仍逾時的情況。不要只更換解析器,卻忽略解析器本身是否有可達路徑。

六、測試時先分清 Proxy、Config 與 Direct

Home 的連線開關已開啟,只代表用戶端已啟動連線流程,不表示所有目標都會經由 WireGuard 傳輸。測試前,先點選剛儲存項目旁的圓點,再檢查 Global Routing。以下比較的是 Shadowrocket 本身的路由模式,不是協定速度。

Proxy:先排除規則影響

建議

暫時將由用戶端接管的連線交由所選代理路徑處理,降低 Config 分流規則對本次測試的影響。這不會擴大 Allowed IPs 範圍,也無法補足遠端轉送能力。

適用情境:首次驗證具備網際網路轉送能力的 WireGuard 設定

Config:確認規則命中情況

依照目前啟用的設定檔進行分流。先確認目標命中哪條規則及其策略,再判斷連線是否應交由 WireGuard 處理;FINAL 則處理未命中前述規則的連線。

適用情境:確認基本連線後,恢復日常規則分流

Direct:建立直連對照

採用直連路徑。此時網頁能正常開啟,不能證明 WireGuard 可用,但有助於判斷目標是否原本就能透過目前的網路存取。

適用情境:區分本機網路問題與隧道路徑問題

Global Routing 中的 Scene 會依照已設定的場景處理路由。排查時也應確認實際採用的策略,而不只是查看模式名稱。如果手動中斷連線後又自動恢復,請檢查 Settings → On Demand;On Demand 控制按需連線行為,無法修正 WireGuard 參數錯誤。

  1. 記錄目前的 Global Routing 模式,選取待測伺服器並開啟連線,然後執行 Connectivity Test。
  2. 測試一個位於目前 Allowed IPs 範圍內,且已知允許存取的目標;如果設定僅提供內部網路存取,就測試內部服務。
  3. 若有可用的交握或流量記錄,請分辨「交握未完成」與「交握完成但服務無法連線」;單一延遲數值不能取代實際服務測試。
  4. 恢復 Config 後,再次存取相同目標,確認規則策略、DNS 與連線結果是否有所變化。

七、填寫後的常見問題與處理方式

Private Key 已成功儲存,為什麼還是連不上?

成功儲存只代表輸入內容可被接受。返回 Home 編輯該項目,確認 Interface 的 PrivateKey、Peer 的 PublicKey 與 PresharedKey 各自填在正確欄位,再確認遠端登錄的是與這份私鑰相對應的本機公鑰。

Endpoint 的連接埠都要填 51820 嗎?

不是。51820 只是常見範例,必須使用既有設定提供的 UDP 連接埠。如果位址與連接埠分欄,請勿把冒號與連接埠一起填入位址欄;改用另一個可信任的網路測試,也有助於判斷目前網路是否無法連通 UDP。

可以存取內部位址,但一般網頁無法開啟,該怎麼辦?

先確認 Allowed IPs 是否只包含內部網段,再確認服務本身是否提供網際網路轉送。如果預期能存取公開網路,請接著檢查 Global Routing 與 DNS;不要直接加入所有位址範圍,將它當成通用修復方式。

訂閱更新後,手動調整過的 MTU 又恢復原值了?

訂閱項目更新時,可能會依照遠端內容重新產生。請先對照更新前記錄,確認參數有哪些變動,再透過既有服務的設定來源進行調整;若另建手動測試項目,請加上明確備註,避免誤選已更新的項目。

排查完成後,只需保留必要的欄位檢查記錄。分享問題時,請隱藏 Private Key、Preshared Key、訂閱 token 等敏感資訊;若要展示位址與錯誤情況,也應先移除與帳戶身分相關的內容。依「身分密鑰 → Endpoint → Allowed IPs → DNS → MTU」的順序逐項驗證,比同時修改多個欄位更容易找出原因。

下載 Shadowrocket