設定 WireGuard 時,先分清本機身分、遠端身分與隧道位址,再核對 Endpoint 和 AllowedIPs。本文適用於已備妥自有服務商設定或自管端點資料的使用者,說明如何將標準 WireGuard 欄位對應至 Shadowrocket 的新增流程,以及如何區分金鑰錯誤、UDP 不通、路由範圍不足與 MTU 不合適等問題。
一、在 Add Server 新增 WireGuard
Shadowrocket(小火箭)的 WireGuard 設定需要一組相互配套的參數。只有遠端位址和連接埠還不足以建立連線:本機 PrivateKey 對應的 PublicKey 必須已登錄在遠端,隧道位址與允許的位址範圍也必須和遠端設定一致。下文的位址僅供說明欄位,無法直接用來連線。
-
整理參數
先從現有設定中分辨
[Interface]與[Peer]:前者包含本機 PrivateKey、Address 等資訊,後者包含遠端 PublicKey、Endpoint、AllowedIPs 等資訊。先保留原始資料,避免覆寫後無從比對。 -
選擇類型
前往 Home → 點選右上角「+」→ Add Server → Type,選擇 WireGuard。確認 Type 後再填寫參數,不要把 WireGuard 金鑰填入其他協定的密碼欄位。
-
對應欄位
將 Endpoint 的主機名稱與連接埠分別對應至 Address、Port;將 Interface 的 PrivateKey 和 Peer 的 PublicKey 填入各自的金鑰欄位。隧道 IP 應填入本機位址欄位,而不是遠端 Address。實際分組與欄位顯示請以目前的 App 介面為準。
-
儲存並驗證
儲存後返回 Home,選取該設定,檢查 Global Routing,再開啟連線開關。依照系統提示允許加入 VPN 設定後,分別使用 Connectivity Test 和實際目標連線進行檢查;開啟開關不代表遠端握手已成功。
手動新增設定適合逐項核對。若設定來自既有訂閱,請先確認更新是否會覆寫手動修改;排查時保留獨立副本,並記錄修改內容。本網站不提供、不販售也不推薦節點或訂閱,以下步驟僅處理使用者已有的設定。
二、PrivateKey 與 PublicKey:先確認分屬哪一端
WireGuard 使用金鑰配對驗證身分。本機 PrivateKey 與本機 PublicKey 為一組;遠端也有自己的金鑰組。Shadowrocket 中填寫的 Peer PublicKey 是遠端公鑰,不是由目前的 PrivateKey 衍生出的本機公鑰。手動設定時最容易把這兩者弄反。
本機 Interface
- PrivateKey
- 本機私鑰,用於識別本機身分;請妥善保密。
- PublicKey
- 由本機 PrivateKey 衍生,提供給遠端登錄為 Peer。
- Address
- 本機隧道位址,例如
10.66.0.2/32,不是公網端點。
更換本機 PrivateKey 後,也必須同步更換遠端登錄的本機 PublicKey。
遠端 Peer
- PublicKey
- 遠端公鑰,填入用戶端對應的 Peer PublicKey 欄位。
- PresharedKey
- 可選的額外共用金鑰;啟用時兩端必須一致。
- Endpoint
- 遠端可連線的主機與 UDP 連接埠,例如
192.0.2.10:51820。
用戶端不需要遠端 PrivateKey;請勿交換兩端的私鑰。
標準 WireGuard 金鑰是 32 位元組資料的 Base64 表示法,通常為 44 個字元,並以 = 結尾。貼上時請保留結尾字元,不要加引號,也不要包含空格或換行。長度和格式看起來正確,只代表格式可能符合要求,不能證明金鑰屬於正確的 Peer。
三、Address、Endpoint 與 DNS:三種位址不可混填
標準設定檔中的 Address 指的是隧道內部位址,而新增伺服器介面中的 Address 通常用來填寫遠端主機位址。同一個英文詞在不同情境下可能代表不同意思,請依所在欄位分組判斷。將 10.66.0.2/32 填成遠端主機位址,並不能讓用戶端找到公網端點。
| 設定內容 | 範例與說明 | 填寫時請核對 |
|---|---|---|
| Interface Address | 10.66.0.2/32:本機隧道 IPv4 位址。 | 依照資料來源填入本機位址欄位;並一併核對位址與前綴長度。 |
| Peer Endpoint | 192.0.2.10:51820:遠端主機與 UDP 連接埠。 | 若介面分為 Address、Port,請分別填入主機位址和 51820。 |
| IPv6 Endpoint | [2001:db8::10]:51820:以方括號區分主機與連接埠的組合格式。 | 若主機與連接埠分欄,請勿將完整組合字串填入主機欄位。 |
| DNS | 負責名稱解析的伺服器位址或解析設定。 | 確認解析路徑可正常連線;DNS 不能取代 Endpoint 或隧道位址。 |
192.0.2.10 和 2001:db8::10 是文件範例位址。實際連接埠請依自己的設定填寫;51820 只是常見範例,並非 WireGuard 指定的連接埠。WireGuard 使用 UDP,因此一般 TCP 連接埠測試無論成功或失敗,都不能直接證明該 UDP 端點是否可用。
若 Endpoint 使用網域名稱,用戶端必須先解析名稱,才能傳送握手資料。若連端點網域名稱都無法解析,請先檢查目前網路的 DNS 解析條件;若端點可連線,但只有網站網域無法開啟,再檢查 DNS 查詢實際送往何處。不要把這兩種故障都歸咎於「金鑰有問題」。
四、AllowedIPs 與 Global Routing:分別檢查兩層設定
在 WireGuard 的 Peer 設定中,AllowedIPs 用來將位址範圍對應至 Peer,也用於檢查接收資料的來源位址範圍。它不是 App 的網域規則,也不是「允許連線的遠端伺服器清單」。例如 10.66.0.0/24 代表一個 IPv4 網段,0.0.0.0/0 代表所有 IPv4 位址,::/0 代表所有 IPv6 位址。
- 僅存取指定網段:若現有設定只允許
10.66.0.0/24,就不要預期任意公網目的位址都能透過該 Peer 存取。遠端也必須具備相應路由與存取權限。 - 涵蓋 IPv4 與 IPv6:
0.0.0.0/0不包含 IPv6。若需要雙協定堆疊,必須同時核對::/0、本機隧道位址,以及遠端的 IPv6 轉送能力。 - 確認設定對應方式:不同匯入格式可能會將 AllowedIPs 轉換為內部設定;若手動設定介面沒有同名欄位,請勿任意填入其他輸入框,應先確認該格式是否支援及儲存後的設定內容。
- 檢查 App 分流:Home → Global Routing → Config 會依目前設定的規則選擇處理方式;符合 DIRECT 的請求不會因為擴大 AllowedIPs 範圍,就自動改走該 WireGuard 設定。
Shadowrocket 的 Global Routing 與 WireGuard 的 Peer 位址範圍是兩種不同設定。暫時選擇 Proxy 可用來排除規則因素的影響,但仍受 App 處理範圍、隧道參數及遠端網路能力限制;選擇 Direct 則無法驗證 WireGuard 的轉送路徑。測試完成後請恢復原本設定,避免將臨時排查狀態當成長期設定。
五、MTU 與 PersistentKeepalive:依症狀調整
MTU 會影響隧道內資料封包的大小上限。封裝會增加額外負擔,可用值則取決於底層網路與傳輸路徑。只有出現「小型請求成功,但大型頁面或較大檔案傳輸停滯」等符合封包大小問題的狀況時,才需要比較 MTU;若只是握手失敗,應先檢查 Endpoint、UDP 與金鑰。
保留原始 MTU 設定
建議先使用現有設定提供的數值;若原設定未指定,則保留 App 的預設處理方式。記錄目前網路、目標與問題現象,作為後續比較依據,不要將某個常見數值視為適用所有網路的標準答案。
適用情況:初次設定,或尚無封包大小異常的證據。
小幅調低 MTU
若原值為 1420,可先保留副本,再以 1380 進行一次對照測試;這只是排查範例,並非實測結果。請維持相同網路、目標與其他參數;若沒有改善,便恢復原值。
適用情況:已能交換資料,但較大的傳輸反覆停滯。
PersistentKeepalive 的單位是秒,可定期傳送保活資料,協助維持 NAT 或防火牆中的連線對應。25 是常見設定範例,仍應以自身設定需求為準。它不是重新驗證密碼,也不是速度開關;設定後無法修復錯誤的 PublicKey 或無法連線的連接埠。
- 只有在閒置一段時間後難以恢復通訊時,才需要優先檢查保活設定與網路對應。
- 每次只修改 MTU 或 PersistentKeepalive 其中一項,避免無法判斷是哪項改變了問題現象。
- 在 Wi-Fi 與行動網路之間切換時,請分別記錄測試結果,不要將兩種底層網路的資料混在同一次比較中。
六、兩端如何對應:用戶端與遠端核對清單
一端顯示連線已開啟,不代表另一端已接受該身分。排查時應分別確認用戶端連線至哪個端點、遠端允許哪個身分,以及回傳流量如何找到本機。尤其不要在多台裝置上直接共用同一組身分與隧道位址,否則遠端可能在不同來源端點之間更新對應,造成連線時斷時續。
核對方式:成對檢查本機 Interface 與遠端 Peer
本機 Shadowrocket
- PrivateKey 屬於目前裝置,對應的 PublicKey 已提供給遠端登錄。
- Peer PublicKey 屬於目標遠端,Endpoint 主機位址與 UDP 連接埠皆正確。
- 隧道位址、位址範圍與 DNS 均符合現有設定。
- 在 Home 選取正確設定,並確認 Global Routing 符合測試目的。
遠端設定
- 對應的 Peer 登錄的是目前裝置的 PublicKey,而非另一台裝置的公鑰。
- 為本機配置專用位址,例如
10.66.0.2/32,並設定回程路徑。 - 實際監聽的 UDP 連接埠與防火牆允許通過的連接埠一致。
- 若需要存取外部網路,遠端須具備相應的轉送、路由與存取權限。
先核對身分配對,再檢查位址與轉送;只修改用戶端欄位,無法取代遠端的對應設定。
七、常見填寫錯誤與驗證方式
Connectivity Test 可協助判斷連線可達性,但不要把單一延遲數值當成傳輸量或握手狀態。驗證時請記錄目標、測試方式與底層網路;若遠端由自己管理,也應查看遠端最近的握手時間及收發計數,確認資料是否抵達。以下問答依據可觀察到的現象整理,不預設所有故障都源自同一個欄位。
儲存 PrivateKey 時立即出錯,該先檢查哪裡?
返回 Home 中該設定的編輯頁面,確認是否連同 PrivateKey = 整行、引號或換行一起複製。欄位通常只需填入等號後方的金鑰值;結尾的 = 是 Base64 內容的一部分,請保留。不要任意補上字元來嘗試修復。
開關已開啟,為什麼仍沒有資料?
先確認 Home 選取的是目標設定,再檢查 Global Routing。接著核對 Endpoint、UDP 連接埠與遠端 PublicKey;若有遠端管理權限,請檢查最近的握手時間與收發計數。系統 VPN 已啟動只能說明本機隧道已建立,無法單獨證明遠端已回應。
內部位址可以存取,公網網頁卻打不開?
先核對 AllowedIPs 是否只涵蓋內部網段,再分別檢查 DNS 與遠端轉送條件。若 Global Routing 設為 Config,還需檢查實際目標符合哪條規則。不要只將 AllowedIPs 改成涵蓋所有位址,就認定遠端已具備公網轉送能力。
關閉後又自動連線,是欄位填錯了嗎?
先前往 Settings → On Demand 檢查目前的按需連線條件;手動排查時,暫停相關的自動觸發設定,再返回 Home 重新測試。On Demand 決定何時觸發連線,與 WireGuard 金鑰是否正確是兩種不同問題,不應透過更換金鑰來處理自動連線。
另一台裝置可以使用,可以複製整套參數嗎?
先確認遠端是否已為兩台裝置分別配置身分與位址。每台裝置都應使用自己的 PrivateKey,並在遠端登錄各自的 PublicKey;只複製相同的端點資料,不代表可以共用整套身分。請保留各自獨立的設定,再於相同網路下進行比較。
最終驗收至少應包含三項:目標請求確實經由預期設定傳送、所需位址範圍可正常存取,以及閒置後的通訊恢復符合預期。完成後請保留原始設定與修改紀錄,刪除排查過程中暫時建立的重複項目;若使用訂閱管理,也請確認下次更新不會覆寫已核實的參數。