Shadowrocket WireGuard 設定教學:Private Key、Peer、Allowed IPs 與 MTU 填寫方式

參照服務提供的 WireGuard 設定,逐一說明 Interface 與 Peer 各參數在 Shadowrocket 中的對應欄位,以及 MTU 和保活參數的設定方式。

本文重點

本文適合已持有 WireGuard 設定,並需要在 Shadowrocket 手動核對欄位的使用者。先分清本機的 Interface 與對端的 Peer,再檢查密鑰、Endpoint、Allowed IPs;確認基本連線正常後,再依實際狀況調整 MTU 和 Persistent Keepalive。文中的位址與連接埠僅用於說明格式,不能作為連線資料。

先看懂設定:Interface 是本機,Peer 是對端

WireGuard 設定通常分為 [Interface] 和 [Peer] 兩段。前者描述這台裝置使用的 Private Key、隧道內 Address,以及可能附帶的 DNS、MTU;後者描述要連線的對端,包括 Public Key、Endpoint、Allowed IPs 和選填的 Persistent Keepalive。Shadowrocket 的欄位排列可能與文字設定不同,但兩段中的密鑰不可互換。

在 Shadowrocket 的 Home 頁面點選右上角「+」,在 Type 中選擇 WireGuard,再依照現有資料填入對應欄位。若服務提供的是完整設定文字,請先確認每一行所屬的段落;不要只憑一張參數截圖猜測缺漏值。不同顯示方式的欄位分組與名稱可能不同,請以目前的 App 介面為準。

2 段
Interface 描述本機;Peer 描述對端
51820
下文 Endpoint 範例中的連接埠並非固定值
/0
Allowed IPs 中涵蓋所有位址的前綴長度

以下文字僅用來示範欄位所屬位置。範例密鑰不是可用憑證,example.com 也不是可連線的服務位址;實際填寫時,請逐項使用現有設定中的原始值。

[Interface]
PrivateKey = AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
Address = 10.66.0.2/32
DNS = 10.66.0.1

[Peer]
PublicKey = BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB=
Endpoint = wg.example.com:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25

填寫 Interface:Private Key、Address 與 DNS

Private Key 是本機身分的私鑰,應從現有設定的 PrivateKey 那一行完整複製。它不是 Peer 的 PublicKey,也不是帳號密碼。複製時請留意前後空格、換行,以及是否漏掉字元;不要將私鑰貼到公開討論區或故障截圖中。若現有設定沒有私鑰,應向原設定提供者確認,而非自行換成範例值。

Address 是分配給本機的隧道內位址,通常會連同前綴長度一起提供,例如 10.66.0.2/32。其中的 /32 是位址設定的一部分,不是 Endpoint 的連接埠。若資料也列出 IPv6 位址,請依照原設定提供的格式一併核對;不要把伺服器位址填入本機 Address。

  1. 開啟編輯頁面

    在 Home 點選右上角「+」→ Type → WireGuard,找到本機參數與 Peer 參數的欄位;若已有項目,則進入該項目的編輯頁面核對。

  2. 核對本機參數

    將 [Interface] 下的 PrivateKey 對應至 Private Key,將 Address 對應至本機位址欄位;保留資料提供的前綴長度。

  3. 核對對端參數

    將 [Peer] 下的 PublicKey、Endpoint 與 AllowedIPs 分別填入對應欄位,儲存前再次確認密鑰所屬位置。

  4. 儲存後測試

    返回 Home,選取剛儲存的項目並連線。先確認是否能建立連線,再測試目標位址;尚未核對密鑰與 Endpoint 前,不要反覆調整 MTU。

DNS 指定使用隧道時的網域名稱解析位址,與本機 Address 不同。若資料列出 DNS = 10.66.0.1,應先確認該位址確實屬於現有服務設定,再檢查 Shadowrocket 中對應的 DNS 設定是否一致。能連上對端但只能存取 IP、無法解析網域名稱時,DNS 才是需要優先核對的項目;僅憑這種情況無法直接判定密鑰錯誤。

填寫 Peer:Public Key、Endpoint 與保活

Public Key 是對端的公開金鑰,由現有設定提供。它與本機 Private Key 必須分別填在正確欄位;字元不符時,即使 Endpoint 可連線,也無法完成預期的 WireGuard 交握。若資料另外提供 PresharedKey,請核對介面中對應的 Pre-shared Key 欄位並照原值填寫;若未提供,就不需要自行產生。

Endpoint 由主機名稱或 IP 位址與連接埠組成,例如 wg.example.com:51820。其中 51820 僅為格式範例,實際連接埠請以現有設定為準。複製時不要漏掉冒號,也不要把 Address 的隧道內 IP 誤當成 Endpoint。若 Endpoint 使用網域名稱,連線前還必須能解析該名稱;網域解析失敗與連接埠無法連線,應分別排查。

保活設定:先沿用原設定,再依網路狀況調整

設定已提供數值
  • 依照 PersistentKeepalive 的原始值填寫,例如資料明確提供的 25 秒。
  • 儲存後觀察切換網路或裝置喚醒時,是否需要重新建立連線。
設定未提供數值
  • 先保留介面預設狀態,不要將範例數值視為通用要求。
  • 若連線閒置後不易恢復,先核對 Endpoint 與網路,再向原設定提供者確認是否需要保活。

Persistent Keepalive 會依照指定間隔傳送封包,以維持映射狀態;它無法修正錯誤的 Public Key、連接埠或 Allowed IPs。

WireGuard 透過密鑰識別對端,並以 Endpoint 指定資料的傳送目的地。因此,「項目可以儲存」只代表欄位格式可接受,不表示已與對端完成交握。排查時應分開確認設定是否儲存、連線是否建立,以及目標是否可存取,避免將所有失敗都歸因於同一個選項。

Allowed IPs:決定哪些目標位址交由 Peer 處理

Allowed IPs 不是訂閱網址,也不是伺服器的存取清單。在本機設定中,它定義哪些目標位址應交由該 Peer 處理。0.0.0.0/0 涵蓋所有 IPv4 位址,::/0 涵蓋所有 IPv6 位址;兩者同時出現,表示該 Peer 會接收這兩類位址的流量。若資料只列出特定網段,就不要為了省事擅自改成 /0。

例如 10.66.0.0/24 只會比對該 IPv4 網段。若使用者的目標是存取這個網段,而其他位址仍依原有方式處理,這種寫法與涵蓋所有位址的寫法,範圍並不相同。前綴越短,通常涵蓋的位址範圍越大;/32 則只會比對單一 IPv4 位址。填寫時要區分本機的 Address = 10.66.0.2/32 與 Peer 的 AllowedIPs = 10.66.0.0/24:數值看似相近,作用卻不同。

兩種 Allowed IPs 範圍

指定網段
  • 範例:10.66.0.0/24。
  • 只有符合該範圍的目標位址會交由 Peer 處理;適用於原設定明確要求存取特定網段的情況。
所有位址
  • 範例:0.0.0.0/0, ::/0。
  • 涵蓋 IPv4 與 IPv6 的所有目標位址;請確認這確實是原設定要求的範圍。

先照原樣輸入現有設定,再測試特定目標;不要只因某個網頁無法開啟,就擴大 Allowed IPs 的涵蓋範圍。

還要分清 WireGuard 的 Allowed IPs 與 Shadowrocket 的 Global Routing。前者決定交由特定 Peer 處理的位址範圍,後者決定 App 如何處理要求:Proxy、Direct、Config 等模式都會影響測試結果。若目前使用 Direct,不能只憑網頁能否開啟,就判斷新建的 WireGuard 項目是否正在處理該要求;使用 Config 時,還要檢查規則比對結果與策略選擇。

MTU 怎麼填:先沿用原值,再依狀況檢查

MTU 限制隧道中單一封包的大小。WireGuard 封裝會占用部分傳輸空間,而底層網路的路徑限制也可能不同,因此沒有適用於所有連線的通用數值。若現有設定明確提供 MTU,請先照原值填寫;若未提供,先保留 Shadowrocket 目前的預設設定,不要在尚未建立連線時憑猜測覆寫。

若交握或基本存取已成功,但部分頁面載入時間過長,或傳輸較大的內容時中斷,可將 MTU 列入排查項目。不過,相同狀況也可能與 DNS、目標服務或網路變化有關。較穩妥的順序是:先核對密鑰與 Endpoint,再檢查 Allowed IPs 和 Global Routing,最後保留原設定紀錄,依照原設定提供者的建議調整 MTU,並在相同網路、相同目標上重新測試。

從 Wi-Fi 切換至行動網路後,路徑條件可能改變;先前測試成功,不代表所有網路的設定效果都相同。Settings → On Demand 涉及依網路條件連線的行為,屬於另一組設定。排查參數本身時,請先在明確的網路環境中手動選取同一筆 WireGuard 設定進行測試,避免將自動連線條件變化誤判為 MTU 問題。

連線後如何排查:依故障發生階段逐項核對

開始排查前,先確認目前使用的是剛編輯的項目,再記錄故障發生於哪個階段:「無法建立連線」、「連線後特定網段無法存取」,或「網域名稱與內容載入異常」。這三種情況的檢查重點不同。儲存設定後立刻同時修改密鑰、DNS、Allowed IPs 與 MTU,會讓測試結果失去比較基準。

設定已儲存,為什麼還是連不上?

先在 Home 確認已選取目標項目,再逐字核對本機 Private Key、Peer Public Key,以及 Endpoint 的主機名稱與連接埠。成功儲存不代表已與對端完成交握;不要一開始就從 MTU 著手嘗試。

隧道已連線,指定網段卻無法存取?

檢查 Peer 的 Allowed IPs 是否包含目標位址。例如目標是 10.66.0.20,10.66.0.0/24 可涵蓋該位址;也要核對 Global Routing 與現有規則是否讓該要求使用目標設定。

IP 可以存取,網域名稱卻無法開啟?

核對原設定中的 DNS 值是否輸入正確,並確認目前連線條件下可以連到該 DNS 位址。先在相同網路分別測試 IP 與網域名稱,不要只憑一次網頁錯誤就判定 WireGuard 密鑰有誤。

切換網路後需要重新連線?

先確認新網路可以解析並連上 Endpoint,再查看現有設定是否規定 Persistent Keepalive。若已啟用 Settings → On Demand,也要核對其網路條件是否與手動連線測試時一致。

只有部分頁面載入緩慢?

記錄發生問題的網路與目標,先排除 DNS 和 Allowed IPs 的差異;若基本連線正常,且問題集中在傳輸較大內容時,再依現有設定檢查 MTU。每次只修改一個項目,並重新測試。

WireGuard 設定中的密鑰與位址必須符合使用者現有的服務資料。Shadowrocket 是在 Apple 平台提供的付費 App,iPhone、iPad 使用者應透過 App Store 取得;開發者資訊可在商店頁面核對。系統需求請以 App Store 頁面標示為準。購買 App 與取得 WireGuard 連線資料是兩回事,購買 App 不會產生服務提供者的連線參數。

確認 Shadowrocket 取得方式與入門步驟

先在 App Store 核對開發者 Shadow Launch Technology Limited,再使用現有的 WireGuard 設定填寫欄位。若想了解首次開啟後的基本操作,可繼續閱讀入門指南。

前往正版查驗頁 查看教學
App Store 正版查驗