Shadowrocket WireGuard 設定教學:Private Key、Peer Public Key 與 MTU 說明

逐項說明在 Shadowrocket 新增 WireGuard 伺服器時,Private Key、Public Key、Address、MTU 等欄位的填寫方式。設定資料請向服務商索取,文中範例均為虛構值。

本文重點

本文適合已向自己的服務商取得 WireGuard 設定,準備在 Shadowrocket 手動填寫欄位的使用者。先分清本機 Interface(介面)與遠端 Peer(對等端),再對應私鑰、公鑰、隧道位址和連線端點,最後確認 MTU 與分流設定。文中的位址、網域和連接埠僅用於說明結構,不能作為可連線的設定。

一、先分清 Interface 與 Peer 的設定歸屬

Shadowrocket(小火箭)中的 WireGuard 設定包含兩類資訊:本機以什麼身分和位址加入隧道,以及本機要連線到哪個遠端。常見的 WireGuard 文字設定會以 [Interface] 和 [Peer] 分段。手動新增時,應依欄位含義對應表單,而不是按照文字出現順序逐行貼上。

Private Key(私鑰)屬於本機身分;Peer 的 Public Key(公鑰)用來識別遠端。Address(隧道位址)是服務商分配給本機的隧道內位址;Endpoint(遠端連線端點)才是網路上要連線的伺服器網域或 IP 與連接埠。兩者不可互換。

欄位歸屬:本機 Interface 與遠端 Peer

Interface(本機介面)
  • PrivateKey:本機私鑰,對應本機身分。
  • Address:本機在隧道中的 IPv4 或 IPv6 位址。
  • MTU:隧道介面可承載的 IP 封包大小參數。
  • DNS:若設定中有提供,代表配套的解析伺服器資訊。
Peer(遠端對等端)
  • PublicKey:遠端公鑰,不是本機公鑰。
  • Endpoint:遠端主機位址與 UDP 連接埠。
  • PresharedKey:雙方約定使用的選用預先共用金鑰。
  • AllowedIPs:此 Peer 對應的隧道路由與位址限制。

先確認欄位屬於哪一端,再填入內容;不要把本機公鑰填到 Peer 的 Public Key 欄位。

服務商提供的資料可能是完整文字、QR Code、現有訂閱中的項目,或一組個別參數。以下步驟以手動填寫為主。畫面顯示的欄位依目前的 App 介面而定;若沒有對應的輸入欄位,不要把參數填進名稱相近但含義不同的欄位,應確認該設定是否適用於目前的匯入方式。

二、在 Home 新增 WireGuard 伺服器的步驟

先保留一份完整的原始設定,再開始輸入。若原始資料只有服務商後台顯示的本機公鑰,卻沒有本機私鑰,就不具備完成身分設定所需的全部資料;公鑰無法反推出私鑰。

  1. 準備原始設定

    向自己的服務商取得完整參數。逐項找出 Interface 的 PrivateKey、Address,以及 Peer 的 PublicKey、Endpoint;若有 PresharedKey,也一併保留。

  2. 選擇協定

    前往 Home(首頁)→ 右上角「+」→ Type(類型)→ WireGuard。確認新增的是 WireGuard 項目,而不是把整份文字貼進一般伺服器位址欄。

  3. 填寫端點

    將 Endpoint 的主機部分填入 Address(伺服器位址)或相應的主機欄位,並將連接埠填入 Port(連接埠)。例如虛構端點 wg.example.com:51820 應拆成 wg.example.com 和 51820,不要加上網頁通訊協定前綴。

  4. 填寫身分

    在 WireGuard 對應欄位填入本機 Private Key、遠端 Public Key 和隧道位址。若有 Preshared Key(預先共用金鑰)欄位,只有原始設定提供此項時才填寫;不要用其他金鑰替代。

  5. 儲存並驗證

    儲存後返回 Home,選取剛建立的項目,再啟用連線。記下目前 Global Routing(全域路由)的選項與測試網路,使用自己有權存取的目標驗證實際連線,不能只看連線開關是否開啟。

三、Private Key、Public Key 與預先共用金鑰

WireGuard 私鑰與公鑰有固定的編碼結構,通常是表示 32 位元組資料的 Base64 字串,常見長度為 44 個字元。長度看似正確,只能排除部分複製錯誤,不能證明金鑰屬於目前的伺服器,也不能證明兩端已完成授權。

本機私鑰可產生本機公鑰,伺服器通常會透過本機公鑰識別此用戶端。若在本機任意重新產生私鑰,對應的公鑰也會隨之改變;若伺服器仍登記舊公鑰,連線便無法以原有身分完成交握。因此,不要把「重新產生金鑰」當成通用的修復方式。

欄位 應填寫的內容 常見錯誤
Private Key 分配給本機身分的私鑰,通常來自 Interface 區段。 複製了本機公鑰,或誤用了另一台裝置的私鑰。
Public Key 遠端 Peer 的公鑰,通常來自 Peer 區段。 填成本機公鑰,或連同整個 PublicKey = 前綴一起貼上。
Preshared Key 原始設定約定的額外對稱金鑰;兩端必須一致。 原始設定沒有此項卻自行產生,或以登入密碼代替。

複製時只取等號右側的值,移除前後空格和換行,但保留金鑰本身的字元,尤其是可能出現在結尾的 =。不要把編碼中的 + 當成空格,也不要手動變更大小寫。金鑰不是使用者名稱、登入密碼或訂閱連結。

四、Address、Endpoint 與 DNS 的填寫界線

Interface 的 Address 通常會帶有 CIDR(位址前綴)長度,例如虛構值 10.66.0.2/32。其中 /32 代表單一 IPv4 主機位址;IPv6 單一位址常見 /128。這不是連接埠,也不是伺服器的公網位址。若介面將位址與前綴拆開輸入,請分別填入對應欄位,不要把斜線後的數字填到 Port。

本機端虛構範例

Address
10.66.0.2/32
IPv6 Address
fd42:66::2/128
DNS
10.66.0.1
MTU
1420,僅供參數示意

這些數值僅用來說明本機欄位結構,不能據此推斷服務商的分配方式。

遠端虛構範例

Endpoint
wg.example.com:51820
Host
wg.example.com
Port
51820,UDP 連接埠
IPv6 Endpoint
[2001:db8::10]:51820

完整的 IPv6 端點會以方括號區分主機與連接埠;分欄填寫時請依介面格式輸入。

WireGuard 使用 UDP 傳輸。51820 是常見的範例連接埠,但不是所有服務都使用此連接埠;實際連接埠必須以原始設定為準。若目前網路無法連上該 UDP 連接埠,將數字改成 443 並不會自動讓連線恢復,除非遠端確實有在相應連接埠提供服務。

DNS(網域名稱解析)還需區分兩個階段:Endpoint 使用網域名稱時,建立隧道前必須能解析該名稱;隧道內的網域請求則會受到 Shadowrocket 目前 DNS 與設定的影響。原始 WireGuard 文字設定中的 DNS 是配套的解析資訊,不應假設手動建立伺服器項目後,整份文字設定中的 DNS 行就會自動套用。

五、MTU 的含義與調整順序

MTU(最大傳輸單元)決定隧道介面可承載的 IP 封包大小。WireGuard 封裝會增加額外負擔,因此隧道 MTU 通常小於底層連線的 MTU。底層 MTU 為 1500 的常見情況下,外層 IPv4 封裝約占 60 位元組,外層 IPv6 約占 80 位元組;1420 是常見值之一,但不一定適用所有網路路徑。

MTU 過大時,可能出現小型請求正常、大型回應停滯、部分網頁載入不完整等情況。這些只是排查線索,並非 MTU 故障的唯一證據。DNS、遠端出口、UDP 封包遺失和規則選擇也可能造成類似現象,應先確認金鑰與端點正確,再調整 MTU。

採用服務商指定的 MTU

建議

原始設定明確提供 MTU 時,請先照填;若未指定,先保留 App 的預設處理方式,建立可重現的連線基準,不要憑經驗同時修改多項參數。

適用情況:初次設定、已有明確參數、連線狀況正常

以 1420 作為對照

只有在需要診斷且介面允許設定時,才將 1420 作為一次受控測試。這是常見的隧道 MTU,不是速度等級,也不保證適合目前的網路路徑。

適用情況:未提供明確 MTU、需要建立單一變數對照

暫時調低至 1380

若使用 1420 時小型請求正常,但較大的傳輸反覆停滯,可暫時改用 1380 作為對照。每次儲存後都重新建立連線,並測試相同目標;若沒有改善,就恢復原值。

適用情況:已排除基本設定錯誤後,進一步排查網路路徑

記錄「網路類型、MTU、測試目標、成功或失敗」四項資訊,就能進行有效比較。例如在相同 Wi-Fi 下分別測試 1420 與 1380,再於行動網路重複測試;這是一種測試方法,並非本文對特定線路的實測結果。不要因為某次成功開啟網頁就認定 MTU 最佳,也不要只以單次測速結果作為判斷依據。

六、AllowedIPs 與 Global Routing 並非同一層級的設定

標準 WireGuard 設定中的 AllowedIPs(允許的 IP 範圍)用於選擇 Peer 的隧道路由,並限制從該 Peer 接收的來源位址。例如 0.0.0.0/0 代表所有 IPv4 位址範圍,::/0 代表所有 IPv6 位址範圍。它不等同於 Shadowrocket 的網域規則,也不應直接貼到 Rule(規則)區段。

Shadowrocket 還需要在 App 層級決定哪些請求要交由所選伺服器處理。即使金鑰和 Endpoint 都正確,若 Global Routing 設為 Direct(直連),應用程式請求也不會如預期交由此 WireGuard 項目處理。Config(設定)模式則使用目前啟用設定中的規則,必須一併確認符合條件的策略最終指向哪裡。

以下僅示範規則語法,並非可直接啟用的完整設定。PROXY 必須對應目前設定中實際可用的策略或策略群組,且最終選取所需的 WireGuard 項目。規則由上而下比對,第一條符合的規則會決定處理方式。

DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.0.2.0/24,DIRECT
GEOIP,CN,DIRECT
FINAL,PROXY

DOMAIN-SUFFIX(網域後綴)比對指定網域及其子網域;IP-CIDR(IP 網段)比對目標位址範圍;GEOIP(IP 地理分類)依 IP 資料庫分類比對;FINAL(最終策略)處理未符合前面規則的請求。範例中的文件專用位址區段僅用於說明語法,並非實際服務目標。

七、儲存後仍無法使用時的檢查方式

排查順序為「欄位是否完整 → 端點是否可連線 → 金鑰身分是否相符 → 請求是否交由該伺服器處理 → DNS 與 MTU」。每次只修改一個變數,並保留原值。連線開關處於開啟狀態,只能表示本機連線功能已啟動,不能單憑此點證明遠端交握成功或出口可用。

已填入 Private Key,為什麼還是無法使用?

先返回 Home → 找到相應項目的編輯入口,確認只複製了金鑰值且沒有前後空格,再確認 Peer Public Key 是遠端公鑰。若曾重新產生本機私鑰,請向服務商確認登記的用戶端公鑰是否已同步更新,不要反覆產生新金鑰嘗試。

已開啟連線,但存取結果沒有變化?

在 Home 確認選取的是新建的 WireGuard 項目,再檢查 Global Routing。若使用 Config,請前往 Config(設定)確認目前啟用的檔案,並檢查測試目標符合哪項策略。可短暫切換至 Proxy 進行對照,診斷完成後恢復原本的分流設定。

Wi-Fi 無法連線,行動網路卻可以,該先調整什麼?

保持金鑰和隧道位址不變,先檢查 Endpoint 網域解析、指定 UDP 連接埠是否可連線,以及網路限制。只有出現小型請求成功、較大傳輸停滯等線索時,再比較 MTU。不要在切換網路時同時更換金鑰、DNS 和連接埠。

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

先確認服務商是否為每台裝置分配獨立身分。兩台裝置共用相同私鑰與隧道位址並同時連線時,遠端可能將同一 Peer 的回覆端點切換至最近傳送封包的裝置,導致連線互相干擾。若需同時使用,應取得各自獨立的金鑰對與位址。

完成設定後的保存清單

Shadowrocket 是 Apple 平台上的閉源商業 App,主要適用於 iPhone 與 iPad,唯一取得管道為 App Store;系統需求請以 App Store 頁面標示為準。購買 App 不等於購買線路方案。本文以使用者已有自己的服務商與設定為前提,購買 App 本身不會提供 Private Key、Peer 公鑰或遠端服務參數。

App Store 正版驗證