設定 WireGuard 時,先分清本機 Interface 與遠端 Peer:Private Key 屬於本機,Peer 的 Public Key 屬於遠端,隧道 Address 也不是伺服器 Endpoint。本文適合已有合法可用 WireGuard 設定的使用者,逐項說明欄位對應、加入步驟與常見故障,協助你在 Shadowrocket 中確認金鑰、位址、UDP 連接埠、MTU 與 DNS,避免反覆更改參數碰運氣。
先分清 Interface 與 Peer
WireGuard 設定通常由 [Interface] 和一個或多個 [Peer] 區段組成。Interface 描述本機的隧道身分與位址;Peer 描述與本機通訊的另一端。將服務商提供的設定輸入 Shadowrocket 前,應先依照這兩種角色整理欄位,再進入 Home 新增記錄。不要只看欄位名稱中有沒有 Key 或 Address 就直接貼上。
本文以使用者已有自己的服務商與設定為前提。Shadowrocket 是閉源商業應用,買斷用戶端不等於購買線路方案;本站不提供、不銷售,也不推薦節點或訂閱。WireGuard 欄位是否有效,取決於兩端設定是否配套;購買應用本身不會產生可用的遠端 Peer。
Interface 本機端
- Private Key
- 本機私鑰,對應原設定中的 PrivateKey。
- Address
- 指派給本機的隧道 IP 與前綴長度。
- MTU
- 隧道介面允許的最大 IP 封包大小。
- DNS
- 設定指定的解析器位址,請確認實際生效範圍。
本機金鑰與隧道位址應來自同一份有效設定。
Peer 遠端端
- Public Key
- 遠端公鑰,對應 Peer 區段中的 PublicKey。
- Endpoint
- 遠端伺服器位址與 UDP 連接埠。
- AllowedIPs
- 該 Peer 對應的隧道位址範圍。
- Preshared Key
- 雙方約定的選用預共享金鑰。
請勿將本機公鑰填入遠端 Public Key 欄位。
Private Key、Public Key 與 Preshared Key
PrivateKey 與 PublicKey 是配對使用的身分資料。本機私鑰會對應一組本機公鑰,遠端必須登錄這組本機公鑰;同時,本機設定中 Peer 的 Public Key 應填入遠端公鑰。這是兩端互相辨識的關係,不是將同一組公鑰複製到所有欄位。
WireGuard 標準金鑰是 32 位元組資料,常見的文字格式為 44 個字元的 Base64 字串,通常以 = 結尾。長度符合只代表格式看起來合理,無法證明它屬於目前帳戶或目前 Peer。複製時請保留結尾字元,移除意外加入的引號、換行與前後空白;若輸入框只接受金鑰值,不要連同整行 PrivateKey = 一起貼上。
- Private Key:從原設定的 Interface 區段複製;不可用 Public Key 取代,也不應在公開截圖或求助紀錄中展示。
- Public Key:從目標 Peer 區段複製。若遠端更換金鑰,必須同步更新,不能只修改伺服器位址。
- Preshared Key:這是額外的選用對稱金鑰;原設定若有提供,兩端必須一致。若未提供,請勿自行產生後單方面填入。
- 重新產生本機私鑰:會改變對應的本機公鑰。除非遠端也更新登錄資料,否則原有的授權關係不會自動延續。
Address 與 Endpoint:兩種位址不可互換
Interface 的 Address 是隧道內位址,例如 10.66.0.2/32。其中 /32 是 IPv4 前綴長度,不是連接埠。Endpoint 則是建立 WireGuard 通訊時要連線的遠端網路位址,通常由網域名稱或 IP 加上 UDP 連接埠組成。兩者用途不同,即使介面上都顯示 Address,也必須依所在區段判斷。
| 原設定內容 | 意義 | 輸入檢查項目 |
|---|---|---|
Address = 10.66.0.2/32 | 本機隧道 IPv4 位址 | 填入本機隧道位址欄位,並依輸入框要求保留前綴。 |
Address = fd66::2/128 | 本機隧道 IPv6 位址 | 只有原設定指派此位址時才填入,不要自行補上。 |
Endpoint = 192.0.2.10:51820 | 遠端 IPv4 位址與 UDP 連接埠 | 若欄位分開,Address 填 IP,Port 填 51820。 |
Endpoint = [2001:db8::10]:51820 | 遠端 IPv6 位址與 UDP 連接埠 | 以單一字串表示時,用方括號區分 IPv6 位址與連接埠;分欄輸入則依欄位格式填寫。 |
表格中的位址僅用於說明格式,不能當作實際伺服器使用。連接埠 51820 是常見設定值,並非固定值;若原設定使用其他連接埠,請照原值填寫。Endpoint 不應加上 https://,也不能填入訂閱連結。若使用網域名稱,本機必須先能解析該網域,之後才能向遠端傳送 WireGuard 交握封包。
在 Home 新增並逐項驗證
先保留一份原始設定,再操作 App。以下步驟適用於手動輸入已有的 WireGuard 參數;若參數由現有訂閱管理,請先確認更新時該記錄是否會被覆寫。不同介面的隧道參數可能分列為獨立項目,核對時請以 Interface 與 Peer 的歸屬為準,不要把設定檔的區段標記當成欄位值。
-
整理參數
分別抄錄 Interface 的 PrivateKey、Address,以及 Peer 的 PublicKey、Endpoint;若有 PresharedKey、MTU、DNS,也一併保留。若設定包含多個 Peer,請先確認要輸入哪一個。
-
選擇類型
前往 Home → 點選右上角「+」→ Type → WireGuard,再填寫該記錄的備註與遠端位址資料。備註僅供辨識記錄,不會參與金鑰驗證。
-
確認欄位角色
填入本機 Private Key、隧道 Address 與遠端 Public Key,再依原設定補上其他參數。儲存前逐項比對,尤其確認 Endpoint 的 Port 沒有誤填成隧道前綴長度。
-
單獨測試
返回 Home 選取該記錄,暫時將 Global Routing 設為 Proxy 後開啟連線,並瀏覽已知可連線的目標。測試完成後,恢復原本的 Global Routing 設定,避免將暫時設定留作日常使用。
-
檢查自動連線
若手動中斷後又自動重新連線,請檢查 Settings → On Demand。測試期間先停用可能觸發自動連線的條件,驗證完成後再恢復所需設定。
系統 VPN 狀態顯示已連線,不代表遠端交握已成功。這首先表示本機 VPN 工作階段已建立;遠端能否收發資料,仍須參考實際請求結果、可用的交握紀錄與收發計數。不要因為開關已開啟,就略過金鑰與 Endpoint 檢查。
AllowedIPs 與 Global Routing 的作用
在標準 WireGuard 設定中,AllowedIPs 會將位址範圍對應至指定 Peer,並參與接收資料時的來源位址驗證。0.0.0.0/0 代表所有 IPv4 位址範圍,::/0 代表所有 IPv6 位址範圍;這兩個值本身不保證遠端具備對應協定族的轉送能力。
Shadowrocket 的 Global Routing 則決定 App 如何選擇請求的處理路徑。Proxy 用於代理模式,Direct 用於直連模式,Config 依目前設定處理,Scene 依所選場景處理。AllowedIPs 不是 Config 中的網域規則,不可將 DOMAIN-SUFFIX 或 FINAL 寫入其位址清單。
- Proxy 可用、Config 不可用:先確認目前 Config 的規則比對結果、目標策略與所選伺服器,不要立即判定是 WireGuard 欄位錯誤。
- Direct 可用:這只表示目標可透過目前的直連網路連線,不能據此證明該 WireGuard Peer 運作正常。
- 只有 IPv6 目標連線失敗:檢查隧道 IPv6 位址、Peer 的位址範圍,以及遠端 IPv6 轉送條件是否完整。
- 原設定有多個 Peer:不要將多個 Peer 的 Public Key、Endpoint 與 AllowedIPs 混在同一筆記錄中;請保留原有的一一對應關係。
MTU:先使用原值,再視情況調整
MTU 決定隧道介面可承載的最大 IP 封包大小。WireGuard 會在 UDP 中封裝資料,外層還需要預留 IP、UDP 與協定本身所占的空間。對於沒有額外擴充的常見資料封裝,外層 IPv4 的開銷約為 60 位元組,外層 IPv6 約為 80 位元組;實際可用值仍受接取網路與整條路徑限制。
1420 是常見參考值,並非適用所有網路的最佳值。若原設定明確提供 MTU,請先照原值填寫;若未提供,優先保留 App 的預設處理方式。只有在交握與小型請求正常,但較大的頁面或上傳持續停滯時,才將 MTU 納入排查;降低 MTU 不能取代修正錯誤金鑰。
- 記錄目前的 MTU 與重現問題的目標,並在同一網路下分別測試小型請求、較大頁面與上傳。
- 其他欄位保持不變,例如將 MTU 從 1420 調整為 1380,重新連線後重複相同請求。這是排查範例,不是實測結論。
- 若情況沒有改善,請恢復原值,並繼續檢查 UDP 可達性、DNS 與遠端轉送;若有所改善,再確認切換 Wi-Fi 與行動網路後的表現。
DNS:區分 Endpoint 解析與隧道內解析
WireGuard 加密協定本身不負責下發 DNS;常見設定中的 DNS 是由用戶端處理的附加設定。輸入原檔中的 DNS 值後,還需確認 Shadowrocket 目前的 Config DNS 設定,才能判斷實際解析路徑;不能只因欄位有值,就認定所有查詢都會經由該解析器。
建立通訊前解析 Endpoint 網域,與連線後解析網頁網域,是兩個不同階段。若 Endpoint 使用網域名稱,而指定的 DNS 只能透過尚未建立的隧道存取,就需要可用的初始解析路徑。排查時先確認目前接取網路能解析遠端網域,再確認隧道內的 DNS 是否可連線,避免將這兩種故障混為一談。
- 若原設定使用內網 DNS 位址,請確認對應的位址範圍可經由目標 Peer 到達;內網解析器不一定能透過直連網路存取。
- 若 DNS 輸入欄位要求 IP 位址,就不要直接貼上含
https://的解析服務 URL;不同格式不能互相取代。 - 若網域無法連線,但同一目標的 IP 路徑可達,請優先檢查 DNS 解析;不過,直接以 IP 存取 HTTPS 可能因憑證或網站選擇而失敗,不能只以此作為判斷依據。
- 若現有訂閱更新後參數恢復原狀,請重新確認記錄來源與 Config;不要同時修改金鑰、DNS、MTU,以免無法判斷是哪項設定造成影響。
常見問題:依現象縮小排查範圍
Private Key 已填好,為什麼仍然沒有流量?
先比對 Peer 的 Public Key 與 Endpoint,再確認遠端登錄的是與目前私鑰相對應的本機公鑰。若原設定包含 PresharedKey,也必須照原值填入。只有本機私鑰正確,並不能證明兩端身分已配對。
Port 一定要填 51820 嗎?
不一定。請依現有設定中的 Endpoint 連接埠填寫,並確認網路路徑允許該 UDP 連接埠通訊。單純將連接埠改為 443,不會讓 WireGuard 變成 HTTPS,也不會自動解決 UDP 受限的問題。
小型網頁能開啟,大型頁面卻一直轉圈,該怎麼辦?
先在同一網路重複請求,確認不是特定網站故障;保持金鑰與 Endpoint 不變,記下目前 MTU 後測試降低 MTU。若只有網域請求失敗,也要一併檢查 DNS,不要直接認定是 MTU 所致。
切換到行動網路後無法使用,需要重新填寫金鑰嗎?
先檢查目前網路的 UDP 可達性與 Endpoint 網域解析,再查看 Settings → On Demand 是否改變連線行為。切換網路本身不需要更換金鑰;若原設定有提供 PersistentKeepalive,請保留原值,但它無法取代可連線的 UDP 路徑。
同一份設定可以同時用在兩台裝置上嗎?
建議為每台裝置各自取得獨立金鑰與隧道位址。兩台裝置同時使用相同私鑰時,遠端可能會依最近收到的驗證封包更新 Endpoint,導致流量在裝置間切換。不要用提高 MTU 或修改 DNS 來處理身分重複使用問題。
完成後請保留一份已遮蔽敏感資訊的檢查紀錄:參數來源、所選記錄、Global Routing 模式、測試網路,以及修改前後的 MTU。恢復原本的 Config 與 On Demand 設定後,再實際連線測試一次,確認暫時測試的結果也能延續至日常使用。