本文適合已取得服務提供者所給 WireGuard 參數,準備在 Shadowrocket(小火箭)手動填寫或核對設定的使用者。先區分本機介面與 Peer,再檢查金鑰、位址、UDP 端點及 DNS;最後透過路由模式與分層測試判斷問題所在。文中的標準設定欄位用於說明參數來源,不代表所有欄位都能在 App 中以相同名稱編輯。
一、先區分本機介面與 Peer
WireGuard 以公開金鑰識別通訊對端,並透過 UDP 傳送加密資料。設定中的本機介面負責本機身分與隧道位址,Peer 則代表遠端通訊對象。兩邊的金鑰不可混用:本機持有自己的 Private Key,連線至遠端時填入遠端的 Public Key;遠端則須登記與本機 Private Key 對應的 Public Key。
本文假設使用者已有合法且可用的設定。本網站不提供、不販售,也不推薦節點或訂閱。WireGuard 不是只填入一個位址和通用密碼就能完成設定,至少須核對金鑰配對、本機隧道位址及遠端端點。請勿將 Shadowsocks、VMess、VLESS、Trojan 或 Hysteria2 的驗證欄位直接套用於 WireGuard。
標準 WireGuard 設定中的 [Interface] 與 [Peer] 可用來理解參數,不應直接當作 Shadowrocket 的 [Rule] 規則區段。匯入設定時,也須先確認檔案格式受 App 支援,不能只因副檔名相同就互換。
二、Private Key、Public Key 與位址分別怎麼填
Private Key 是本機的機密憑證,應從現有設定完整複製,避免前後空白、換行或字元遺漏。更換 Private Key 會改變本機身分;若遠端仍登記舊的 Public Key,即使 Endpoint 完全正確,也無法正常通訊。請勿只為了嘗試修復連線就任意重新產生金鑰。
本機 Interface 參數
- Private Key
- 本機私鑰;必須與遠端登記的本機 Public Key 相符。
- Address
- 分配給本機的隧道位址,例如 10.7.0.2/32;不是遠端伺服器位址。
- DNS
- 名稱解析伺服器位址;屬於用戶端整合設定,不是金鑰交握參數。
- MTU
- 隧道介面的封包長度上限,單位為位元組;先沿用服務提供者指定的值或預設值。
以上為來源設定中的參數意義;請依 Shadowrocket 實際欄位與匯入方式核對。
遠端 Peer 參數
- Public Key
- 遠端的公鑰,不是由本機 Private Key 推導出的公鑰。
- Endpoint
- 遠端可連線的位址與 UDP 連接埠,例如 192.0.2.10:51820。
- AllowedIPs
- 此 Peer 對應的隧道目的前綴,以及接收來源位址的驗證範圍。
- Preshared Key
- 選填的額外共享金鑰;若有設定,兩端必須一致。
範例位址屬於文件保留範圍,無法用於實際連線;實際參數請以使用者現有的設定為準。
Address 中的 /32 表示單一 IPv4 位址前綴;IPv6 單一位址常見的寫法是 /128。這些位址由遠端網路規劃決定,不能因為與家中 Wi-Fi 位址不同,就改填區域網路位址。若來源設定同時提供 IPv4 與 IPv6,請先確認遠端及目前網路都支援相應功能。
三、在 Home 新增並核對 WireGuard
Shadowrocket 的 Home 可選擇連線項目,Config 用於管理規則設定,Settings 則管理 App 設定。先確認 WireGuard 參數正確,再處理規則分流。欄位配置可能隨 App 介面調整,以下路徑說明操作層級;來源檔案中的 AllowedIPs、DNS 等名稱不一定會在編輯頁逐項出現,請勿因找不到同名欄位就填入無關資料。
-
準備參數
從自己的設定中確認本機 Private Key、隧道 Address、遠端 Public Key、Endpoint 及選填的 Preshared Key,並保留原始副本以供核對。
-
選擇類型
前往 Home → 點選右上角「+」→ Type → WireGuard。先選擇類型,再填寫對應欄位,避免將其他協定的編輯頁當成 WireGuard 設定頁。
-
填寫端點
將 Endpoint 的主機與連接埠分別填入 Address、Port 等伺服器欄位。例如文件中的端點 192.0.2.10:51820,主機是 192.0.2.10,連接埠是 51820;此處的伺服器 Address 與隧道 Address 並非同一概念。
-
核對金鑰
填入本機 Private Key 與遠端 Public Key,並核對本機隧道位址。若有 Preshared Key,請依原始設定填寫;若沒有,請勿以密碼或 Public Key 代替。
-
儲存並測試
儲存後返回 Home,選取該項目,再檢查 Global Routing。首次測試只驗證一個明確目標;排除問題期間可暫時在 Settings → On Demand 關閉自動觸發,避免手動中斷後又自動連線。
51820 只是常見的 WireGuard 監聽連接埠,並非協定強制使用的連接埠。若原始設定使用 443,就使用對應的 UDP 端點;不能因此推斷它支援 TCP 或 HTTPS。若 UDP 受到網路阻擋,改填其他數字不代表遠端已在新連接埠監聽。
四、AllowedIPs 與 Global Routing 是不同層級的規則
依標準 WireGuard 定義,AllowedIPs 會參與選擇出站流量的 Peer,也會限制可從該 Peer 接收的解密流量來源位址。常見的 0.0.0.0/0 涵蓋所有 IPv4 位址,::/0 涵蓋所有 IPv6 位址;10.7.0.0/24 則只涵蓋指定網段。它不是網域清單,也不是網站存取權限或付費額度。
Shadowrocket 另有 Global Routing 與 Config 中的規則層。哪些 App 請求會交由所選連線處理,須依目前的路由模式判斷;不能看到來源設定含有 0.0.0.0/0,就認定所有請求一定會經由 WireGuard。Scene 用於依情境安排設定;基本排錯時先採用明確且單一的模式,減少變因。
Config
建議依目前設定中的規則選擇策略。日常分流前,請先確認規則順序,以及 PROXY 實際使用的連線項目。
適用情境:WireGuard 確認可用後,依網域或 IP 範圍分流。
Proxy
將可透過目前代理路徑處理的請求交由所選連線,適合暫時排除 Config 規則的影響;這不代表所有系統流量都一定會由該連線處理。
適用情境:短時間驗證所選 WireGuard 連線是否能傳輸業務資料。
Direct
請求直接連線,不適合用來驗證 WireGuard 隧道是否可用。瀏覽器能開啟網頁,也無法據此判定隧道已成功建立。
適用情境:建立本機網路基準,對照直接連線時是否也有相同問題。
以下是 Shadowrocket 規則語法示意,並非 WireGuard 設定。DOMAIN-SUFFIX 比對網域後綴,IP-CIDR 比對 IP 網段,FINAL 處理先前未符合的請求。規則由上而下比對;前面已符合的請求不會再交由 FINAL 處理。
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.0.2.0/24,DIRECT
FINAL,DIRECT
此處的 example.com 與 192.0.2.0/24 僅供文件說明。若改用 GEOIP,請留意它依賴 IP 地理位置資料庫,不能取代對 Peer、AllowedIPs 或伺服器回程路由的檢查。更多規則說明請參閱規則參考。
五、MTU 與 DNS:連線後仍無法開啟網頁的兩種原因
MTU 限制隧道介面可承載的 IP 封包長度。加密封裝會增加外層負擔,因此隧道 MTU 通常小於底層鏈路 MTU。1420 是常見參考值,但不一定適用於所有 Wi-Fi、行動網路或巢狀隧道。請先使用現有設定指定的值或預設值,只有出現相關症狀時才進行有控制的對照測試。
| 觀察到的現象 | 優先檢查 | 每次只調整一項 |
|---|---|---|
| 小型請求成功,但較大的回應一再停頓 | 路徑 MTU、封包遺失、遠端轉送 | 若可編輯 MTU,可比較 1420 與 1380,記錄結果後再恢復原值或保留有效值 |
| 名稱解析逾時,但已知 IP 的診斷請求有回應 | DNS 位址及通往 DNS 的路由 | 確認原始設定中的 DNS 是否只能透過隧道存取 |
| 只有部分 IPv6 目標連線失敗 | IPv6 位址、路由及遠端轉送能力 | 分別測試 IPv4 與 IPv6;不要把新增 ::/0 當成修復方式 |
| 切換網路後不再收到資料 | UDP 可連線性及 NAT 對應 | 在新網路重新建立連線,再測試相同目標以供比較 |
以上為診斷現象與測試方法,不是實際測試結果。1380 也不是通用最佳值;若降低 MTU 後沒有可重複的改善,請恢復原值並繼續檢查其他層。請勿同時變更 MTU、DNS、Endpoint 與路由模式,否則無法判斷是哪項變更造成影響。
DNS 負責將網域名稱解析為位址,不參與 WireGuard 公鑰交握。標準設定中的 DNS 通常由用戶端工具解讀;Shadowrocket 實際的解析行為也須配合目前 Config 的 DNS 設定判斷。若某個 DNS 位址只能在隧道內存取,隧道尚未建立時就無法用它處理所有前置解析工作,尤其是 Endpoint 本身也是網域名稱時。
- 先確認 Endpoint 網域可在目前網路解析,再判斷遠端 UDP 是否可連線。
- 請勿只用瀏覽器直接連線 IP 來判斷 DNS:HTTPS 憑證與虛擬主機可能要求使用正確網域名稱。
- 變更 DNS 後請重新建立連線,並留意系統或 App 快取可能影響對照結果。
六、依「端點、交握、資料、規則」順序排除問題
App 顯示已連線或系統出現 VPN 標示,只能代表本機連線狀態,無法單獨證明遠端已接受金鑰,或業務請求已抵達目標。WireGuard 在沒有流量時可能保持靜默,因此須發出明確請求觸發測試;若使用者有遠端管理權限,可一併核對最近交握時間及收發計數。
- 端點層:確認主機名稱或 IP 正確、連接埠與遠端監聽設定一致,且目前網路允許相應 UDP 流量。網域解析成功不代表 UDP 連接埠可連線。
- 交握層:確認本機 Private Key 對應的 Public Key 已登記在遠端、遠端 Public Key 正確,且選填的 Preshared Key 兩端一致。只確認「長度看起來相同」不足以驗證金鑰配對。
- 資料層:若能完成交握但業務流量不通,請核對隧道位址、AllowedIPs、遠端轉送、防火牆及回程路由。遠端是否需要 NAT 或明確的回程路由,取決於其網路設計。
- 規則層:比較 Global Routing → Proxy 與 Config 下同一請求的結果。若只有 Config 失敗,優先檢查規則比對結果及策略引用,不必先更換金鑰。
- 穩定性層:若閒置一段時間後中斷,請檢查 NAT 對應與保活需求。標準設定中的 PersistentKeepalive 單位為秒,25 是常見範例,並非所有連線都必須啟用;只有在現有設定要求且 App 支援相應選項時才調整。
七、常見填寫錯誤與儲存前檢查
手動設定最常見的錯誤不是協定選擇不足,而是混淆欄位用途。儲存前請逐項檢查,尤其要分清楚同樣顯示為 Address 的伺服器位址與隧道位址。若訂閱中已有 WireGuard 項目,手動修改的內容也可能在下次更新後被覆蓋;請保留獨立紀錄,並先確認資料由何處管理。
- 將本機 Public Key 填入 Peer:Peer 的 Public Key 應屬於遠端;本機公鑰應提供給遠端登記。
- 將 Endpoint 寫成網頁網址:請勿加上 https:// 或網頁路徑。若主機與連接埠分開輸入,請分別填寫;IPv6 位址尤其不可只按冒號任意切分。
- 遺漏隧道位址前綴:依原始 Address 保留前綴所代表的意義;若介面分欄填寫,請依欄位要求輸入,不要任意變更分配結果。
- 用 AllowedIPs 取代 App 規則:IP 前綴與 DOMAIN-SUFFIX 屬於不同層級,不能將網域名稱填入 AllowedIPs。
- 把 Preshared Key 當成登入密碼:若原設定沒有此項,請保持未設定;若有,則必須使用雙方約定的金鑰。
- 忽略自動連線設定:Settings → On Demand 會影響連線觸發方式,不會改變金鑰、Peer 或 [Rule] 內容。排錯完成後,再恢復自己的自動連線安排。
完成檢查後,先確認所選 WireGuard 項目能將資料傳送至一個明確目標,再恢復 Config 分流與日常自動連線設定。Shadowrocket 是 Apple 平台的閉源商業 App,主要供 iPhone、iPad 使用;價格、系統需求及其他 Apple 裝置的相容性,請以 App Store 頁面標示為準。App 買斷不等於線路方案,購買 App 不會取代使用者現有的連線服務與設定。