本文適合已持有 WireGuard 設定,並需要在 Shadowrocket 手動核對欄位的使用者。先分清本機的 Interface 與對端的 Peer,再檢查密鑰、Endpoint、Allowed IPs;確認基本連線正常後,再依實際狀況調整 MTU 和 Persistent Keepalive。文中的位址與連接埠僅用於說明格式,不能作為連線資料。
先看懂設定:Interface 是本機,Peer 是對端
WireGuard 設定通常分為 [Interface] 和 [Peer] 兩段。前者描述這台裝置使用的 Private Key、隧道內 Address,以及可能附帶的 DNS、MTU;後者描述要連線的對端,包括 Public Key、Endpoint、Allowed IPs 和選填的 Persistent Keepalive。Shadowrocket 的欄位排列可能與文字設定不同,但兩段中的密鑰不可互換。
在 Shadowrocket 的 Home 頁面點選右上角「+」,在 Type 中選擇 WireGuard,再依照現有資料填入對應欄位。若服務提供的是完整設定文字,請先確認每一行所屬的段落;不要只憑一張參數截圖猜測缺漏值。不同顯示方式的欄位分組與名稱可能不同,請以目前的 App 介面為準。
以下文字僅用來示範欄位所屬位置。範例密鑰不是可用憑證,example.com 也不是可連線的服務位址;實際填寫時,請逐項使用現有設定中的原始值。
[Interface]
PrivateKey = AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
Address = 10.66.0.2/32
DNS = 10.66.0.1
[Peer]
PublicKey = BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB=
Endpoint = wg.example.com:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25
填寫 Interface:Private Key、Address 與 DNS
Private Key 是本機身分的私鑰,應從現有設定的 PrivateKey 那一行完整複製。它不是 Peer 的 PublicKey,也不是帳號密碼。複製時請留意前後空格、換行,以及是否漏掉字元;不要將私鑰貼到公開討論區或故障截圖中。若現有設定沒有私鑰,應向原設定提供者確認,而非自行換成範例值。
Address 是分配給本機的隧道內位址,通常會連同前綴長度一起提供,例如 10.66.0.2/32。其中的 /32 是位址設定的一部分,不是 Endpoint 的連接埠。若資料也列出 IPv6 位址,請依照原設定提供的格式一併核對;不要把伺服器位址填入本機 Address。
開啟編輯頁面
在 Home 點選右上角「+」→ Type → WireGuard,找到本機參數與 Peer 參數的欄位;若已有項目,則進入該項目的編輯頁面核對。
核對本機參數
將
[Interface]下的PrivateKey對應至 Private Key,將Address對應至本機位址欄位;保留資料提供的前綴長度。核對對端參數
將
[Peer]下的PublicKey、Endpoint與AllowedIPs分別填入對應欄位,儲存前再次確認密鑰所屬位置。儲存後測試
返回 Home,選取剛儲存的項目並連線。先確認是否能建立連線,再測試目標位址;尚未核對密鑰與 Endpoint 前,不要反覆調整 MTU。
DNS 指定使用隧道時的網域名稱解析位址,與本機 Address 不同。若資料列出 DNS = 10.66.0.1,應先確認該位址確實屬於現有服務設定,再檢查 Shadowrocket 中對應的 DNS 設定是否一致。能連上對端但只能存取 IP、無法解析網域名稱時,DNS 才是需要優先核對的項目;僅憑這種情況無法直接判定密鑰錯誤。
填寫 Peer:Public Key、Endpoint 與保活
Public Key 是對端的公開金鑰,由現有設定提供。它與本機 Private Key 必須分別填在正確欄位;字元不符時,即使 Endpoint 可連線,也無法完成預期的 WireGuard 交握。若資料另外提供 PresharedKey,請核對介面中對應的 Pre-shared Key 欄位並照原值填寫;若未提供,就不需要自行產生。
Endpoint 由主機名稱或 IP 位址與連接埠組成,例如 wg.example.com:51820。其中 51820 僅為格式範例,實際連接埠請以現有設定為準。複製時不要漏掉冒號,也不要把 Address 的隧道內 IP 誤當成 Endpoint。若 Endpoint 使用網域名稱,連線前還必須能解析該名稱;網域解析失敗與連接埠無法連線,應分別排查。
保活設定:先沿用原設定,再依網路狀況調整
設定已提供數值
- 依照
PersistentKeepalive的原始值填寫,例如資料明確提供的25秒。 - 儲存後觀察切換網路或裝置喚醒時,是否需要重新建立連線。
設定未提供數值
- 先保留介面預設狀態,不要將範例數值視為通用要求。
- 若連線閒置後不易恢復,先核對 Endpoint 與網路,再向原設定提供者確認是否需要保活。
Persistent Keepalive 會依照指定間隔傳送封包,以維持映射狀態;它無法修正錯誤的 Public Key、連接埠或 Allowed IPs。
WireGuard 透過密鑰識別對端,並以 Endpoint 指定資料的傳送目的地。因此,「項目可以儲存」只代表欄位格式可接受,不表示已與對端完成交握。排查時應分開確認設定是否儲存、連線是否建立,以及目標是否可存取,避免將所有失敗都歸因於同一個選項。
Allowed IPs:決定哪些目標位址交由 Peer 處理
Allowed IPs 不是訂閱網址,也不是伺服器的存取清單。在本機設定中,它定義哪些目標位址應交由該 Peer 處理。0.0.0.0/0 涵蓋所有 IPv4 位址,::/0 涵蓋所有 IPv6 位址;兩者同時出現,表示該 Peer 會接收這兩類位址的流量。若資料只列出特定網段,就不要為了省事擅自改成 /0。
例如 10.66.0.0/24 只會比對該 IPv4 網段。若使用者的目標是存取這個網段,而其他位址仍依原有方式處理,這種寫法與涵蓋所有位址的寫法,範圍並不相同。前綴越短,通常涵蓋的位址範圍越大;/32 則只會比對單一 IPv4 位址。填寫時要區分本機的 Address = 10.66.0.2/32 與 Peer 的 AllowedIPs = 10.66.0.0/24:數值看似相近,作用卻不同。
兩種 Allowed IPs 範圍
指定網段
- 範例:
10.66.0.0/24。 - 只有符合該範圍的目標位址會交由 Peer 處理;適用於原設定明確要求存取特定網段的情況。
所有位址
- 範例:
0.0.0.0/0, ::/0。 - 涵蓋 IPv4 與 IPv6 的所有目標位址;請確認這確實是原設定要求的範圍。
先照原樣輸入現有設定,再測試特定目標;不要只因某個網頁無法開啟,就擴大 Allowed IPs 的涵蓋範圍。
還要分清 WireGuard 的 Allowed IPs 與 Shadowrocket 的 Global Routing。前者決定交由特定 Peer 處理的位址範圍,後者決定 App 如何處理要求:Proxy、Direct、Config 等模式都會影響測試結果。若目前使用 Direct,不能只憑網頁能否開啟,就判斷新建的 WireGuard 項目是否正在處理該要求;使用 Config 時,還要檢查規則比對結果與策略選擇。
MTU 怎麼填:先沿用原值,再依狀況檢查
MTU 限制隧道中單一封包的大小。WireGuard 封裝會占用部分傳輸空間,而底層網路的路徑限制也可能不同,因此沒有適用於所有連線的通用數值。若現有設定明確提供 MTU,請先照原值填寫;若未提供,先保留 Shadowrocket 目前的預設設定,不要在尚未建立連線時憑猜測覆寫。
若交握或基本存取已成功,但部分頁面載入時間過長,或傳輸較大的內容時中斷,可將 MTU 列入排查項目。不過,相同狀況也可能與 DNS、目標服務或網路變化有關。較穩妥的順序是:先核對密鑰與 Endpoint,再檢查 Allowed IPs 和 Global Routing,最後保留原設定紀錄,依照原設定提供者的建議調整 MTU,並在相同網路、相同目標上重新測試。
從 Wi-Fi 切換至行動網路後,路徑條件可能改變;先前測試成功,不代表所有網路的設定效果都相同。Settings → On Demand 涉及依網路條件連線的行為,屬於另一組設定。排查參數本身時,請先在明確的網路環境中手動選取同一筆 WireGuard 設定進行測試,避免將自動連線條件變化誤判為 MTU 問題。
連線後如何排查:依故障發生階段逐項核對
開始排查前,先確認目前使用的是剛編輯的項目,再記錄故障發生於哪個階段:「無法建立連線」、「連線後特定網段無法存取」,或「網域名稱與內容載入異常」。這三種情況的檢查重點不同。儲存設定後立刻同時修改密鑰、DNS、Allowed IPs 與 MTU,會讓測試結果失去比較基準。
設定已儲存,為什麼還是連不上?
先在 Home 確認已選取目標項目,再逐字核對本機 Private Key、Peer Public Key,以及 Endpoint 的主機名稱與連接埠。成功儲存不代表已與對端完成交握;不要一開始就從 MTU 著手嘗試。
隧道已連線,指定網段卻無法存取?
檢查 Peer 的 Allowed IPs 是否包含目標位址。例如目標是 10.66.0.20,10.66.0.0/24 可涵蓋該位址;也要核對 Global Routing 與現有規則是否讓該要求使用目標設定。
IP 可以存取,網域名稱卻無法開啟?
核對原設定中的 DNS 值是否輸入正確,並確認目前連線條件下可以連到該 DNS 位址。先在相同網路分別測試 IP 與網域名稱,不要只憑一次網頁錯誤就判定 WireGuard 密鑰有誤。
切換網路後需要重新連線?
先確認新網路可以解析並連上 Endpoint,再查看現有設定是否規定 Persistent Keepalive。若已啟用 Settings → On Demand,也要核對其網路條件是否與手動連線測試時一致。
只有部分頁面載入緩慢?
記錄發生問題的網路與目標,先排除 DNS 和 Allowed IPs 的差異;若基本連線正常,且問題集中在傳輸較大內容時,再依現有設定檢查 MTU。每次只修改一個項目,並重新測試。
WireGuard 設定中的密鑰與位址必須符合使用者現有的服務資料。Shadowrocket 是在 Apple 平台提供的付費 App,iPhone、iPad 使用者應透過 App Store 取得;開發者資訊可在商店頁面核對。系統需求請以 App Store 頁面標示為準。購買 App 與取得 WireGuard 連線資料是兩回事,購買 App 不會產生服務提供者的連線參數。