本文速覽

已有自己的服務商與 WireGuard 設定時,前往 Home → + → Type → WireGuard 新增伺服器。用戶端 Private Key、對端 Public Key、隧道位址與 Endpoint 必須相互對應;DNS 會影響名稱解析,MTU 則會影響封裝後的封包大小。本文依欄位來源、填寫順序與故障狀況說明核對方式,適合手動輸入或檢查既有設定的使用者。

一、填寫前先確認設定來源與欄位層級

Shadowrocket(小火箭)的 WireGuard 類型需要有效的對端設定,不能只靠伺服器位址建立連線。使用前須已有自己的服務商與設定,或已管理相應的 WireGuard 對端。本教學不提供、不販售也不推薦節點或訂閱。若手邊只有一般訂閱連結,請先確認其中是否確實包含 WireGuard 類型的項目,不要將訂閱 URL 填入伺服器位址欄。

常見的 WireGuard 設定分為 [Interface] 與 [Peer] 兩部分。前者描述本機身分與隧道介面,後者描述遠端身分及連線目標。Shadowrocket 會將這些資訊對應至伺服器編輯表單;欄位排列與顯示名稱請以目前介面為準。下文保留設定中的原始鍵名,方便逐項核對。

兩層
Interface 是本機;Peer 是對端
UDP
Endpoint 必須是可連線的 UDP 服務
51820
此為連接埠範例,並非所有服務都使用此固定值

收到設定後,請先安全備份,再進行輸入。不要在公開求助內容中附上 Private Key、Preshared Key 或完整訂閱連結;這些資訊可能直接關係到連線權限。若只需確認格式,可說明欄位長度、是否包含空格及所在設定區段,無須透露密鑰內容。

二、Private Key 與 Public Key:本機私鑰和對端公鑰不可互換

[Interface] 中的 PrivateKey 是用戶端私鑰,必須與對端登記的用戶端公鑰相符。[Peer] 中的 PublicKey 則是伺服器公鑰,用來識別遠端。兩者看起來都像一串 Base64 文字,但用途不同,不能只憑外觀判斷,也不能將用戶端自己的公鑰填入對端 Public Key 欄位。

本機身分與位址

PrivateKey
取自用戶端設定中的 [Interface],不是伺服器私鑰。
Address
使用對端分配給此用戶端的隧道位址。
DNS
參考原始設定提供的解析器,並核對 Shadowrocket 實際使用的 DNS 設定。
MTU
優先沿用設定明確提供的數值;若未提供,請勿自行指定。

本機位址與密鑰應來自同一份有效設定,避免混用不同裝置的資料。

遠端身分與連線

PublicKey
取自 [Peer],對應遠端伺服器的公鑰。
Endpoint
遠端網域名稱或 IP 位址,以及實際監聽的 UDP 連接埠。
PresharedKey
僅在原始設定有提供時填寫,雙方設定必須一致。
PersistentKeepalive
依原始設定填寫 keepalive 間隔;此項不能取代有效密鑰,也無法修正錯誤的連接埠。

PublicKey 和 PresharedKey 是不同欄位,不能互相替代。

標準 WireGuard 密鑰經 Base64 編碼後通常為 44 個字元,末尾可能有 =。長度看起來正確,只表示格式可能符合要求,不代表密鑰彼此相符。貼上時請移除前後空格、引號與換行,但要保留密鑰本身的 +、/、= 等字元。

三、Address、Endpoint 與連接埠:分清隧道內外位址

Address 是隧道內部位址,Endpoint 則是連線至遠端時使用的外部入口,兩者不可互換。舉例來說,設定分配給用戶端 10.66.0.2/32,並指定 192.0.2.10:51820 為 Endpoint:前者代表本機在隧道中的身分,後者則指出加密 UDP 封包要送往何處。此處的 Endpoint 使用文件專用位址,僅供說明格式,無法實際連線。

欄位格式範例填寫判斷方式
Address10.66.0.2/32依用戶端分配資訊填寫;若介面將位址與前綴分成不同欄位,請分別輸入。
Endpoint 主機192.0.2.10填入遠端網域名稱或 IP,不含 https://,也不含 URL 路徑。
Endpoint 連接埠51820填入實際的 UDP 監聽連接埠;範例數值不是通用預設值。
IPv6 Endpoint[2001:db8::10]:51820合併填寫時,以方括號區分 IPv6 位址與連接埠;分開的欄位則依介面指示填寫。

/32 是 IPv4 前綴長度,不是連接埠;IPv6 單一位址設定也可能使用 /128。若介面要求單獨填寫 IPv4 位址,請勿連同連接埠或整個 Endpoint 一起貼上。只有在原始設定明確分配 IPv6 位址且網路支援時才填寫,不要自行補上位址。

在 WireGuard 中,AllowedIPs 用來描述 Peer 可承載的目的範圍及來源驗證範圍,不是另一種寫法的用戶端 Address。即使原始設定包含 0.0.0.0/0 和 ::/0,Shadowrocket 是否會選用該伺服器處理特定連線,仍須配合 Global Routing 與 Config 規則判斷,不能只憑這兩項就認定所有 App 都會使用它。

四、在 Home 新增 WireGuard 並進行基本測試

首次設定時,請先只測試單一伺服器,不要同時修改路由、DNS 與 MTU。如此一來,若發生問題,就能確認是哪個變更造成結果不同。以下入口用於新增 WireGuard 伺服器;Config 用於設定檔與規則,兩者用途不同,請勿混淆。

  1. 選擇類型

    前往 Home → + → Type → WireGuard。返回編輯頁後,確認類型仍為 WireGuard,再繼續填寫。

  2. 填寫連線資訊

    將 Endpoint 的主機與連接埠填入相應欄位。例如,文件中的 192.0.2.10:51820 應拆開填入位址與連接埠;實際操作時請使用自己的有效參數。

  3. 核對密鑰

    填入用戶端 Private Key 與對端 Public Key,再依原始設定補上本機隧道位址;只有在設定明確提供時才填入 Preshared Key。

  4. 儲存並選取

    儲存伺服器後,返回 Home 選取該項目。首次連線時,請依系統提示允許新增 VPN 設定;授權只代表允許建立系統 VPN 設定,並不表示遠端已可連線。

  5. 測試連線

    在 Home → Global Routing 暫時選擇 Proxy,啟動連線並存取自己有權使用的測試目標。測試完成後,請還原原本的 Global Routing 設定,再檢查日常分流情況。

Global Routing 中的 Proxy 可減少規則變因,但仍無法繞過伺服器本身的存取權限與網路限制。Direct 不適合用來確認 WireGuard 是否承載流量;使用 Config 時,則須確認測試目標確實符合會使用該伺服器的策略。系統顯示 VPN 已連線,只代表本機隧道狀態正常,不等於已完成遠端密鑰交握或成功存取服務。

五、DNS 與 MTU 怎麼設定:先沿用,再分別調整

DNS 負責網域名稱解析,無法修正密鑰錯誤。傳統 WireGuard 設定中的 DNS 通常由使用該設定的 App 解讀,並非協定交握欄位。將 WireGuard 參數手動輸入 Shadowrocket 時,不要假設原始檔案中的 DNS 會自動成為目前設定使用的解析器;也請檢查 Settings → DNS 以及目前 Config 中的 DNS 設定,並以實際啟用的設定為準。

MTU 是介面允許傳輸的最大封包大小。WireGuard 會增加外層封裝的額外負擔,因此底層路徑可承載的大小會限制隧道內封包。設定過大時,可能出現小型請求正常、大型頁面或上傳停滯的狀況;設定過小則會增加分段與處理負擔。丟包或伺服器負載也可能造成類似現象,不能只憑「載入緩慢」就判定是 MTU 問題。

沿用原始設定或預設值

建議

原始設定有明確指定 MTU 時,先沿用原值;若未指定,優先保留 App 的預設處理方式,不要把網路上常見的數值視為每條線路都適用的固定答案。

適用情況:首次輸入、連線穩定,且尚未出現可重現的大封包故障。

手動降低 MTU

只有在原值下可重現小型請求正常、大量傳輸停滯時才嘗試調整。例如原值為 1420,可記錄結果後測試 1380;這兩個數字僅為測試範例,不代表最佳值。

適用情況:在相同網路與目標下可重現問題,且每次只調整 MTU。

每次測試都記錄網路類型、原始 MTU、調整值及相同操作的結果。若降低後沒有持續改善,請還原原值,再檢查 UDP 是否可連線、是否丟包及伺服器端路由。不要同時更換 DNS、修改連接埠又降低 MTU,否則即使恢復存取,也無法判斷真正原因。

六、依故障狀況排查:逐層檢查密鑰與路由

排查時應先確認連線的基本條件,再檢查服務存取。確認連接埠可連線、密鑰相符、位址正確,且對端轉送與回程路徑正常後,檢查 DNS 和分流才有意義。若伺服器由自己管理,也可查看對端最近交握時間及收發計數;若由既有服務方管理,只需提供去識別化後的時間與狀況。

觀察到的狀況優先檢查項目下一步處理方式
啟動後服務請求持續逾時Endpoint、UDP 連接埠、雙方密鑰與 PresharedKey逐項對照同一份原始設定;一般網頁可開啟,不代表該 UDP 連接埠可連線。
對端有交握,但無法存取服務Address、對端 AllowedIPs、轉送與回程路徑確認用戶端位址在已分配範圍內,並請對端檢查相關路由與存取權限。
部分網域無法開啟DNS、Config 規則與目標存取權限確認實際使用的解析器與策略,先不要更換 Private Key。
小型請求正常,上傳或大型頁面停滯路徑 MTU、丟包情況、伺服器狀態固定網路與測試目標,記錄原始值後,單獨調整 MTU。
兩台裝置輪流斷線是否共用用戶端密鑰與位址不同裝置分別使用各自登記的身分與位址,再個別測試。
更新後手動修改的參數消失確認該項目是否由訂閱管理確認訂閱更新是否覆寫該項目;若要獨立測試,請另存手動新增的項目。

若在 Proxy 下測試正常,還原 Config 後卻失敗,應檢查實際符合的規則與策略,而不是重新產生 WireGuard 密鑰。例如,DOMAIN-SUFFIX,example.com,PROXY 只會符合 example.com 及其子網域;IP-CIDR 依 IP 網段符合,GEOIP 依 IP 地理資料庫符合,FINAL 則用於未符合前面規則的連線。規則會由上往下處理;目標使用哪項策略,須依目前設定確認。

WireGuard 只填伺服器位址和連接埠就可以嗎?

不可以。還需要相符的用戶端 Private Key、對端 Public Key,以及本機隧道位址;對端也必須登記相應身分。若有設定 PresharedKey,雙方設定也必須一致。

PersistentKeepalive 設為 25 就一定比較穩定嗎?

25 秒是常見的 NAT 保活間隔範例,並非必填標準。此設定有助於維持部分網路中的 UDP 對應,但會定期傳送封包,也無法修正密鑰錯誤、連接埠錯誤或網路不支援此連線的問題。請優先沿用原始設定。

訂閱更新後需要重新核對哪些欄位?

先核對 Endpoint、Public Key、用戶端位址,以及是否新增 PresharedKey,再確認目前選取的伺服器與 Global Routing。若該項目由訂閱管理,手動編輯可能在下次更新時遭到覆寫,不要把暫時修改當成永久設定。