本文適合已取得服務商提供的 WireGuard 設定,準備在 Shadowrocket 輸入參數的使用者。先區分本機 Private Key 與對端 Public Key,再依序確認 Address、Endpoint、MTU 和 DNS 的用途;最後透過單一變因測試,區分金鑰不符、UDP 無法連通、DNS 解析失敗與封包過大等問題。
先分清 WireGuard 的本機與對端參數
WireGuard 以金鑰配對辨識通訊雙方。每一端都有自己的 Private Key,以及由此產生的 Public Key:Private Key 保留在所屬裝置上,Public Key 則提供給通訊對端登錄。因此,服務商提供的用戶端設定中,[Interface] 與 [Peer] 分別代表不同類型的資訊,不能因為都看到 Key 就互相替換。
在 Shadowrocket 中,本機 Private Key 用來證明本機身分,Peer 的 Public Key 則用來確認遠端身分。伺服器也必須登錄與本機 Private Key 對應的用戶端 Public Key。如果自行更換 Private Key,卻沒有同步更新伺服器上的登錄資料,即使照抄其他參數,也無法建立正確的通訊關係。
結論:先確認金鑰屬於哪一端
輸入前,先將資料中的 Interface PrivateKey 和 Peer PublicKey 分別標記為「本機私鑰」與「伺服器公鑰」;缺少任何一項時,先向自己的服務商確認,切勿用另一端的金鑰代替。
Private Key、Public Key 與位址欄位的對應關係
以下依照標準 WireGuard 設定欄位說明各項資訊的對應方式。Shadowrocket 編輯頁面的欄位排列可能隨介面調整,核對時請以欄位用途為準。尤其要分清 Address 和遠端伺服器位址:前者是隧道內部位址,後者來自 Endpoint,兩者通常不同。
| 參數 | 資料來源 | 填寫重點 |
|---|---|---|
| Private Key | [Interface] 的 PrivateKey | 使用分配給本機的私鑰。保留完整的 Base64 內容,包括末尾可能出現的 =,不要加入空格或換行。 |
| Public Key | [Peer] 的 PublicKey | 填入遠端 Peer 的公鑰,不是用戶端自己的公鑰,也不是訂閱存取憑證。 |
| Address | [Interface] 的 Address | 依服務商分配的隧道位址與前綴填寫,例如文件中的 10.66.0.2/32。不要自行選用相近的位址替代。 |
| 伺服器位址與 Port | [Peer] 的 Endpoint | 將主機名稱與連接埠分別填入對應欄位。連接埠必須與伺服器設定一致;51820 只是常見範例,並非固定值。 |
| Preshared Key | [Peer] 的 PresharedKey | 這是可選的額外共享金鑰。若伺服器有啟用,兩端必須完全一致;若未提供,請勿用 Private Key 代填。 |
| MTU | [Interface] 的 MTU 或服務商提供的說明 | 優先沿用既有設定值。若未提供,保留 App 預設值,不要將任意網路上的參數視為通用最佳值。 |
| DNS | 設定中的 DNS 與服務商的解析說明 | 確認 DNS 解析器是否只能透過隧道存取,再對照 Shadowrocket 目前的 DNS 設定,核對實際解析路徑。 |
請將 Private Key 視為敏感憑證妥善保管。向他人描述問題時,可以提供錯誤訊息、網路類型,以及不含憑證的欄位名稱;不要貼出完整私鑰、Preshared Key 或訂閱連結。公鑰並非用來保密私鑰,但公開紀錄中也不必附上帳戶與位址資訊。
在 Home 新增 WireGuard 的操作順序
先備妥自己的完整設定資料,再開始輸入。只有 Endpoint 或公鑰其中一項,並不足以組成可用設定;伺服器登錄的用戶端身分、分配位址與允許存取範圍都必須相互對應。以下以手動新增為例,介面用語保留英文。
-
選擇協議
前往 Home → 點選右上角「+」→ Type → WireGuard。先選擇類型再填寫欄位,避免將 WireGuard 參數輸入其他協議的編輯頁面。
-
填寫遠端資訊
將 Endpoint 的主機部分填入伺服器位址欄位,連接埠則填入 Port。例如資料為
vpn.example.com:51820時,請分別填寫主機名稱與51820;這只是格式範例,不是可用的連線資訊。 -
核對金鑰
填入本機 Private Key 與遠端 Public Key;若有 Preshared Key,也一併填入。逐項對照原始資料,確認複製時沒有多帶引號、空白或欄位名稱。
-
填寫內部位址
依照資料填寫 Address,並保留指定的前綴長度。IPv4 和 IPv6 位址都應依實際分配填寫;不要因裝置目前連線的是 IPv4 網路,就刪除設定中的 IPv6 資訊。
-
儲存並測試
確認 MTU 等選用參數後儲存,返回 Home 選取該項目。在可控的短時間測試中,將 Global Routing 設為 Proxy,再開啟連線開關;測試完成後,恢復平常使用的 Config 等設定。
若項目是由既有 Subscribe 訂閱建立,先確認訂閱內容確實包含 WireGuard 項目。更新訂閱時,可能會重新寫入由訂閱管理的欄位;手動修改前請保留原始資料,並記下修改內容。不要為了保留一次測試參數而反覆修改整份訂閱,也不要在疑難排解截圖中放入完整訂閱憑證。
Address、AllowedIPs 與規則分流屬於不同層級
Address 是本機隧道介面的內部位址。範例 10.66.0.2/32 中,/32 表示單一 IPv4 主機位址,不代表遠端 Endpoint,也不表示所有網路流量都會自動進入隧道。位址通常須與伺服器針對該用戶端的設定相符;任意改成 /24 並不能解決連線問題。
標準 WireGuard 設定中的 AllowedIPs,與 Peer 的目標位址選擇及來源位址檢查有關;Shadowrocket 的 Global Routing 和 Config 規則則決定 App 請求採用哪種策略。不可將系統層級 WireGuard 設定的路由效果,直接視為 Shadowrocket 目前的規則分流效果。
0.0.0.0/0表示涵蓋所有 IPv4 位址範圍,::/0表示涵蓋所有 IPv6 位址範圍;這是位址範圍表示法,不是 DNS 伺服器位址。- Global Routing → Direct 代表直接連線,不適合作為驗證所選 WireGuard 項目是否承載請求的測試條件。
- Global Routing → Config 會依目前的設定處理請求。若請求符合
DIRECT規則,即使已選取 WireGuard 項目,也不能據此判定該請求是由它傳送。 DOMAIN-SUFFIX、IP-CIDR、GEOIP與FINAL是規則比對關鍵字,不可填入 Private Key、Public Key 或 Address 欄位。
MTU 的設定原則與測試方法
MTU 是介面可承載的 IP 封包大小上限。WireGuard 封裝還需要額外的外層 IP、UDP 與協議標頭,因此隧道內可使用的封包大小通常小於外層鏈路的 MTU。路徑中也可能有其他封裝,不能只憑 Wi-Fi 訊號強弱或寬頻速度推算 MTU。
1420 是 WireGuard 常見的 MTU 起始值,1280 可作為縮小封包的疑難排解參考,但兩者都不是適用所有網路的固定答案。既有設定若明確指定數值,請先照填;若未提供,則保留預設值。只有出現「小型請求成功,但大型頁面或較大資料傳輸停滯」等情況時,再將 MTU 納入排查。
- 記錄原始 MTU、目前網路、Global Routing 模式與測試目標,保留可還原的基準設定。
- 先確認同一個項目在目前網路下能否完成實際請求。若完全無法通訊,應優先檢查金鑰、Endpoint 和 UDP 是否可連通,而不是接連嘗試多種 MTU。
- 若在預設值或
1420下,能穩定重現大型傳輸停滯,可暫時測試1380;若仍有異常,再以1280作為診斷對照。每次只修改 MTU,重新建立連線後重複相同操作。 - 分別記錄 Wi-Fi 與行動網路的測試結果。某個數值只在其中一種網路有效,通常表示連線路徑條件不同,不能因此判定另一種網路的設定有誤。
這些數值只是測試順序的範例,並非本站實測結果。降低 MTU 後恢復連線,只能表示問題可能與路徑 MTU、分片或相關封包處理有關,仍須重複驗證。若降低後沒有改善,請還原原值並檢查其他層級;不要把 MTU 越小越穩定當成長期設定原則。
DNS 需同時檢查解析器與連線路徑
WireGuard 本身沒有定義統一的 DNS 設定傳送協議。常見設定檔中的 DNS 是提供給用戶端或設定工具使用的資訊,不是透過 WireGuard 交握自動協商出的解析器。Shadowrocket 實際採用哪些 DNS 設定,還須依目前 Config 的 DNS 設定與 App 設定判斷。
Endpoint 使用網域名稱時,建立隧道前必須先能解析該網域。如果完全依賴只能透過隧道存取的 DNS,可能形成「必須先建立隧道才能解析,但必須先解析才能建立隧道」的循環依賴。另一方面,服務商提供的內部 DNS 即使位址格式正確,也未必能透過 Direct 連線。
- 只有 Endpoint 網域解析失敗:先核對拼字,並確認目前網路能否解析該網域;不要透過修改 Public Key 處理 DNS 解析錯誤。
- 隧道已可傳輸,但一般網域解析失敗:檢查目前設定使用的 DNS 位址及其連線路徑,確認沒有將內部解析器送往無法連線的直接路徑。
- 只有部分網站異常:同時檢查 IPv4、IPv6 的連線狀況與規則符合結果。有 AAAA 記錄,不代表目前隧道一定具備對應的 IPv6 出口。
- 更換解析器後測試:重新建立連線並重試同一個目標,留意 App 或系統快取;不要只因舊頁面一次載入成功,就判定設定已生效。
常見設定問題與疑難排解順序
連線開關維持開啟,只能表示系統 VPN 工作階段處於相應狀態,無法單獨證明 WireGuard 已成功交換資料。排查時依序確認「資料完整 → Endpoint 與 UDP → 金鑰對應 → 位址與策略 → DNS → MTU」,比隨意切換所有參數更容易找出問題。
Public Key 應該填自己產生的那一把嗎?
這裡需要的是遠端 Peer 的 Public Key,請對照服務商資料中 [Peer] 的 PublicKey。本機自己的公鑰應登錄在伺服器上;若自行產生新的金鑰配對,必須請伺服器同步登錄新公鑰,不能只修改本機 Private Key。
把 Port 改成 443 就一定連得上嗎?
不一定。Port 必須對應遠端實際監聽的 UDP 連接埠。即使填入 443,WireGuard 也不會因此變成 HTTPS 或 TCP。先還原資料中的連接埠,再用同一個項目分別透過 Wi-Fi 和行動網路測試,確認是否只有某一種網路路徑無法連線。
可以直接使用文章範例中的 10.66.0.2/32 作為 Address 嗎?
不可將範例當成分配給自己的位址。請開啟原始設定,找到 [Interface] 下的 Address,依實際值填寫;若沒有提供,請向自己的服務商確認。複製其他裝置的設定也可能造成身分與位址衝突,請確認是否需要獨立分配。
為什麼重新連線後,看起來還是使用舊項目?
返回 Home,確認目前選取的項目和 Global Routing;若使用 Config,也要確認實際選取的策略群組。若連線狀態會自動恢復,請前往 Settings → On Demand 檢查隨選連線條件;測試期間記錄並暫時停用相關條件,完成後再恢復。
訂閱更新後參數又變了,該怎麼處理?
先確認該項目是否由 Subscribe 管理,再對照自己的原始資料檢查更新結果。將測試參數與正式參數分開記錄;若訂閱持續提供不相符的 Address 或金鑰,請向自己的服務商確認設定,而不是每次更新後都靠手動覆寫。