本文適合已有服務商提供的 WireGuard 設定,需要手動核對參數的使用者。先區分本機與遠端身分,再依序檢查位址、端點、金鑰、MTU 和 DNS,最後按照固定測試順序,分辨交握失敗、解析失敗與規則選路問題。文中的位址僅用於說明欄位,並非可連線的服務設定。
一、從 Home 新增 WireGuard 項目
Shadowrocket(小火箭)的 WireGuard 項目需要一組彼此對應的參數。只有遠端位址和連接埠並不足以連線:遠端也必須登錄與本機 Private Key 對應的公鑰,並為這部裝置配置隧道位址。本文以使用者已取得自己的合法設定為前提,不討論服務來源的選擇。
在 Home 右上角點選「+」進入 Add Server,先將 Type 設為 WireGuard,再核對此類型顯示的欄位。表單中的伺服器位址、連接埠與金鑰可能分欄顯示;下文會先說明端點,再介紹金鑰、隧道位址及進階參數。實際欄位順序與選用項目是否顯示,請以目前介面為準;不要將其他協定的 Password 或 UUID 填入 WireGuard 金鑰欄。
-
準備設定
從自己的設定記錄中找出 Interface 與 Peer 兩個區段,並保留原始副本。PrivateKey 屬於本機,Peer 中的 PublicKey 屬於遠端,兩者不可互換。
-
選擇類型
開啟 Home →「+」→ Add Server → Type → WireGuard。先確認類型,再填寫位址和金鑰,避免沿用上一種協定的欄位意義。
-
逐項填寫
依照自己的設定填寫伺服器位址、連接埠、Private Key、遠端 Public Key 和隧道位址;MTU、DNS 及選用金鑰也應優先沿用原設定。
-
儲存並測試
儲存後返回 Home,選取該項目,再開啟連線開關。首次使用時,請依系統提示允許新增 VPN 設定,並使用 Connectivity Test 檢查連線狀況。
二、Endpoint:區分遠端位址與連接埠
Endpoint 是 WireGuard 對端在公網上可連線的位置,由主機名稱或 IP 位址加上 UDP 連接埠組成。原始設定可能將兩者合寫為 vpn.example.com:51820;如果 Add Server 分別顯示 Address 與 Port,請將主機部分填入位址欄,將 51820 填入連接埠欄,不要把整段內容重複貼到兩個欄位。
| 原始文字範例 | 主機部分 | 連接埠部分 |
|---|---|---|
vpn.example.com:51820 | vpn.example.com | 51820 |
192.0.2.10:51820 | 192.0.2.10 | 51820 |
[2001:db8::10]:51820 | 2001:db8::10 | 51820 |
上表使用文件範例網域與位址,無法用於實際連線。IPv6 的方括號用於在合寫格式中區分位址與連接埠;分欄填寫時,請依照該位址欄位的輸入要求操作。不要在主機欄前加上 https://,也不要附加網頁路徑。
51820 是常見的範例連接埠,並非所有 WireGuard 服務都必須使用。請以自己的設定為準。WireGuard 使用 UDP;某個位址上的 TCP 連接埠可以連線,不代表相同數字的 UDP 連接埠也能使用。若網域無法解析、連接埠填錯,或目前網路限制 UDP,常見情況是持續沒有可用回應,但僅憑這個現象還無法判斷是哪個欄位出錯。
三、Private Key、Public Key 與選用金鑰
Private Key 是本機的私鑰,由此決定本機公鑰;遠端必須事先接受這把公鑰。遠端設定中的 Public Key 通常是對端的公鑰,用來識別伺服器;不要再把自己從 Private Key 推導出的公鑰填入。這兩種金鑰都可能是較長的 Base64 文字,因此不能只靠外觀判斷其用途。
結論:先確認金鑰所屬,再考慮重新建立
分別將本機 Private Key 與遠端 Public Key 對照原始設定;不要為了排除問題就直接產生新私鑰。更換私鑰後,遠端登錄的用戶端公鑰也必須同步更新,否則即使端點原本正確,仍無法完成驗證。
- Private Key:複製時避免帶入欄位名稱、引號、換行或前後空格。請勿將真實私鑰放入公開回報、截圖或測試文字中。
- Public Key:使用自己的服務設定中 Peer 對應的公鑰。它不是伺服器網域名稱、帳戶密碼,也不是訂閱權杖。
- Pre-shared Key:若設定和目前介面都有這個選用欄位,兩端必須使用相同的值;原始設定未設定時,請勿自行加入隨機值。
長度正確只代表文字格式可能符合要求,無法證明金鑰與遠端相符。公鑰填錯、私鑰不匹配或 Pre-shared Key 不一致,都可能導致無法建立有效通訊。請逐項比對原始記錄,不要將所有連線失敗都歸因於連接埠。
四、隧道位址:Address 不等於 Endpoint
看似都與「位址」有關的欄位,可能有截然不同的用途:Endpoint 的位址用於找到公網上的對端;Interface 中的 Address 則是本機在隧道內使用的位址。若原始設定中出現 10.66.0.2/32,它代表用戶端的內部位址與前綴長度,不應填入公網伺服器的主機欄。
| 設定概念 | 文字範例 | 填寫判斷方式 |
|---|---|---|
| Endpoint | vpn.example.com:51820 | 遠端連線入口,主機與連接埠依介面欄位分開填寫。 |
| Interface Address | 10.66.0.2/32 | 本機隧道位址,保留已配置的位址及必要前綴。 |
| IPv6 Address | fd00:66::2/128 | 只有自己的設定配置了 IPv6 時才填寫。 |
| AllowedIPs | 0.0.0.0/0, ::/0 | WireGuard 的位址範圍設定,不是 DNS,也不是金鑰。 |
不要依照上述範例自行選擇隧道位址。同一遠端上的用戶端位址通常必須避免衝突;沿用另一部裝置的完整身分與位址,可能導致通訊時斷時續。若要同時使用多部裝置,請使用服務端為各裝置配置的獨立設定。
AllowedIPs 不能直接等同於 Shadowrocket 的全域選路模式。在 WireGuard 中,它用於處理對端位址範圍;至於 Shadowrocket 是否將某個 App 連線交由該伺服器處理,還取決於 Global Routing 和 Config 中的規則。若原始設定包含此項,但目前編輯頁面沒有同名欄位,請勿將它貼到 Address 或 DNS 欄;應先核對目前支援的匯入方式與設定說明。
五、MTU 與 DNS:連線後仍異常時的檢查方式
MTU 會限制隧道介面處理的封包大小。數值過大時,外層封裝可能超出路徑可承載的大小;若路徑上的分片或錯誤回報處理不完整,可能出現小型請求成功、大型請求停滯的情況。這只是排查線索,不能只憑網頁載入緩慢就下定論。
- 先沿用原值:自己的設定明確指定 MTU 時,請先使用該值;若未指定,優先維持 App 的預設行為,不要一開始就同時修改多個進階參數。
- 一次只測一個變數:例如原值為
1420,且已確認有大型封包相關的異常,可暫時改為1380,再以相同請求測試。這只是排查範例,並非通用的最佳值。 - 記錄結果:分別記下請求是否完成、是否逾時,以及使用的網路。若未見穩定改善,請恢復原值,繼續檢查解析、路由與遠端狀態。
DNS 用於將網域名稱解析為位址,無法修復金鑰或連接埠錯誤。原始 WireGuard 設定中的 DNS 通常是隧道使用的解析伺服器;Shadowrocket 實際的解析行為也會受到 Config 中 DNS 設定與相關選路影響,因此不能認為只要在伺服器項目中填入 DNS 位址,所有網域查詢就一定會走相同路徑。
內部 DNS 位址也必須能透過相應的網路路徑連線。若出現「用位址測試有回應、用網域名稱請求卻失敗」,可優先檢查解析結果與 DNS 是否可連線;但也要留意網站可能需要正確的網域名稱與 TLS 資訊,不要用瀏覽器直接存取某個 IP 的結果,取代完整的網域名稱測試。
六、Global Routing:區分協定問題與規則問題
儲存 WireGuard 項目後,還要在 Home 中選取該伺服器。開啟連線開關代表系統已啟用相應的 VPN 設定,不代表遠端已成功回應。測試前請先確認流量確實會交由該項目處理,否則可能誤以為測試成功,但實際上走的是 Direct。
Config
建議依照目前設定檔中的規則處理連線。確認目標符合的策略是否實際指向待測的 WireGuard 項目;符合 DIRECT 的請求無法用來證明該項目可正常使用。
適用情況:參數驗證完成後,依照現有規則進行日常分流。
Proxy
以代理方式處理接管的連線,可暫時減少規則分流對測試的干擾。仍須確認所選伺服器,且不應將此模式理解為能繞過系統的所有流量限制。
適用情況:短時間排查 Config 規則是否影響測試路徑。
Direct
以直連方式處理連線。適合檢查目前的基礎網路,但直連成功不能證明 WireGuard 的金鑰、連接埠或隧道位址正確。
適用情況:建立基礎網路的比較基準,確認未經代理時的狀況。
若平常使用 Scene,也應先確認目前場景實際採用的伺服器與規則,再判讀測試結果。排查完成後請恢復原有模式。檢查 Settings → On Demand 時,請特別確認按需連線條件是否會在測試期間變更連線狀態;On Demand 不會取代 WireGuard 的身分驗證,也無法修正錯誤參數。
在 Config 中,DOMAIN-SUFFIX 可比對網域後綴,IP-CIDR 用於比對位址範圍,GEOIP 依 IP 地理位置比對,FINAL 則處理先前未符合規則的連線。規則會依序影響選路;因此應根據實際符合的策略進行檢查,而不是只看 Home 頂端的開關來判斷協定狀態。
七、依照現象逐項檢查,不要一次修改所有欄位
先在穩定的網路中儲存基準狀態,再使用 Connectivity Test 和實際服務請求交叉驗證。單次延遲數值不代表所有目標都能連線,測試失敗也不能直接判定是金鑰錯誤。下表用於安排檢查順序,不能只憑單一現象斷定唯一原因。
| 觀察到的現象 | 優先檢查項目 | 下一步操作 |
|---|---|---|
| 開啟後請求持續逾時 | Endpoint、UDP 連線狀況、雙方金鑰 | 對照原始設定逐項確認;也可分別透過 Wi-Fi 與行動網路重新測試。 |
| 網域名稱請求失敗 | DNS 結果、解析路徑、DNS 連線狀況 | 區分 Endpoint 網域解析與目標網域解析,並核對目前的 Config。 |
| 小型請求成功,大型請求停滯 | 路徑 MTU、封包遺失、遠端負載 | 保持目標與網路不變,只調整 MTU 進行對照測試,記錄結果後恢復原值,或保留有效值。 |
| 只有部分目標異常 | 規則符合結果、IPv4 與 IPv6 路徑 | 確認是否使用同一部伺服器,不要立刻重新建立金鑰。 |
| 切換網路後才出現異常 | 新網路的 UDP、網域解析與連線狀態 | 重新建立連線並再次測試,比較兩個網路的差異。 |
若項目來自使用者現有的訂閱,手動編輯的內容也可能在訂閱更新後遭到覆蓋。修改前請保留原有參數,並使用清楚的備註區分測試項目與訂閱管理項目。若要向自己的服務提供者回報,提供測試網路、錯誤現象及已核對的欄位名稱即可;請勿在公開記錄中放入真實的 Private Key、Pre-shared Key 或完整訂閱連結。
最後依序確認:遠端入口可連線、金鑰所屬正確、隧道位址相符、解析路徑可用,以及目標流量確實符合該伺服器。驗證這些基本項目後,再討論微調 MTU,才能避免用進階參數掩蓋基本設定錯誤。