Shadowrocket
協定詳解與選擇
先確認伺服器支援的協定,再比較傳輸方式、速度與耗電。
本頁是供查閱的技術手冊,適合已備妥自己的訂閱或伺服器資訊,並需要核對協定類型與參數的使用者。首次新增與連線請先依快速上手完成基本步驟,再回到相關章節了解差異;也可將教學作為本頁各項檢查的操作指引。
連線層次與判斷順序
將協定、承載方式、安全層與規則分開檢查,避免一次變更多個變數。
協定類型不等於速度等級
在 Add Server 中選擇 Type,實際上是指定用戶端與遠端交換資料時採用的格式,而不是選擇速度等級。伺服器執行哪種協定,用戶端就必須選擇相容的類型,並填入相符的驗證資訊。同一個位址可能開放多個連接埠,但各連接埠背後提供的服務不一定相同;將 Shadowsocks 項目的類型改成 Trojan,不會讓伺服器自動切換協定。選擇時應先確認既有伺服器明確支援哪些協定,再比較可用選項的差異。
完整項目通常包含四類資訊:位址和連接埠用來找到服務,協定和驗證資訊用來建立工作階段,TCP、WebSocket 或以 UDP 為基礎的承載方式用來傳輸資料,TLS 等安全層則負責相應的加密與身分驗證。有些協定自行提供加密,有些則依賴外部安全層;有些只需少數欄位,有些還須符合傳輸路徑設定。名稱相同但傳輸方式不同的兩份設定,不能只因位址與密碼相同就互換;匯入訂閱時也要確認這些附加資訊是否完整保留。
應用程式請求會經過哪些環節
在 iPhone 或 iPad 上啟用 Shadowrocket 後,系統會將相應流量交由網路延伸功能處理,再由用戶端依目前設定決定連線方式。Global Routing 的 Config 表示依目前設定中的規則處理;Proxy 表示接管範圍內的請求使用代理路徑;Direct 表示使用直連路徑。這些選項控制的是路由選擇,不會修正協定驗證錯誤,也不會讓伺服器具備原本不支援的功能。若請求已符合 DIRECT 規則,調整遠端協定通常不會改變該請求的出口。
DNS 解析、規則判斷、用戶端連至伺服器,以及伺服器連至目標位址,分別是不同的故障位置。網頁無法開啟,可能是名稱解析失敗,也可能是 TLS 驗證失敗、驗證資訊不符或目標本身無法連線。Connectivity Test 只能反映指定測試流程的結果,不能證明所有目標、連接埠及 UDP App 都正常。判斷時應記錄故障發生在哪個步驟,而不是用「已連線」或「沒速度」概括整條鏈路。
| 層次 | 檢查項目 | 常見誤判 |
|---|---|---|
| 服務入口 | Address、Port 與可連線性 | 位址能解析就代表連接埠也能連線 |
| 協定驗證 | Type、Password、UUID 或金鑰 | 連接埠相同就能共用驗證方式 |
| 傳輸與 TLS | 傳輸類型、路徑、SNI、憑證 | 所有協定都只需要一組密碼 |
| 路由與 DNS | Global Routing、規則比對結果、解析結果 | 所有請求都會經過選取的項目 |
以可重複的條件比較表現
協定會影響速度與耗電,但路徑距離、伺服器負載、無線訊號、目標服務和資料類型往往影響更大。比較時應固定裝置、網路、目標與測試時段,先觀察短頁面的開啟等待時間,再觀察持續傳輸的穩定度。只比較一次延遲,容易把 DNS 快取或連線重用的差異誤認為協定優勢;只看大型檔案的峰值速度,也可能忽略日常頻繁喚醒與短連線的額外負擔。記錄這些條件,比列出抽象的協定排名更有參考價值。
評估耗電時,應留意無線連線的活躍時間、背景連線維持、重試次數與傳輸效率。加密演算法較輕不代表一定省電,持續連線失敗並重試也可能讓看似簡單的設定消耗更多資源。先在同一種網路環境下觀察,避免一邊切換 Wi-Fi 與行動網路一邊下結論。若想了解特定請求為何選中某條路徑,可參考 Global Routing 三種模式說明;若剛開始操作,請回到 快速上手依序驗證。
Shadowsocks
欄位較集中,重點是加密方法、憑據格式與遠端設定一致。
設計背景與主要取捨
Shadowsocks 是為加密代理連線而設計,常見設定包含伺服器位址、連接埠、加密方法與密碼。它不像完整的虛擬網路通道那樣要求使用者設定介面位址與整套路由,而是由用戶端將相應請求轉送至遠端。欄位簡潔有助於人工核對,但不代表所有方法都能互換;不同協定世代、加密方法與擴充選項都可能改變相容條件。收到一筆設定時,應先確認完整方法名稱,而不只是記住 Shadowsocks 這個總稱。
常見的 AEAD 方法在提供機密性的同時,也會驗證訊息以偵測資料是否遭到竄改。較新的協定設計可能調整工作階段、防重播機制及金鑰格式,因此不能將任意文字密碼填入所有方法。特別是要求特定長度編碼金鑰的方法,憑據必須符合該方法的格式。此處不會只憑名稱判斷哪種方法一定更快或更安全;實際可選範圍首先受遠端實作與目前 App 支援情況限制,再由裝置和網路測試結果決定。
Address、Port、Method 與 Password
Address 填入網域或 IP 位址,Port 填入服務監聽的連接埠,兩者應取自同一份有效資訊。網域格式不要加上網頁路徑,也不要將完整訂閱連結貼進伺服器位址欄。Method 必須與遠端設定完全一致,Password 則應原樣保留,尤其要留意複製時的前後空格、換行與全形符號。若訂閱中有名稱相同的項目,不要只憑顯示名稱認定它們相同;可分別核對位址、連接埠和方法,避免修改到另一筆已失效的項目。
部分既有設定還包含外掛或額外傳輸參數,但這些並非所有 Shadowsocks 連線都必須填寫。只有遠端明確使用相應功能,且目前 App 能設定對應參數時才需要填入。不要照著他人的截圖任意加入 TLS、路徑或 Host,以為層數越多就越可靠。若匯入後出現未知欄位或資訊缺漏,應向原始資訊提供者確認相容格式,不要以不斷猜測參數取代核對。
TCP、UDP 與行動裝置上的表現
網頁瀏覽通常主要使用 TCP,也可能涉及以 UDP 為基礎的應用程式協定。Shadowsocks 項目能處理哪些流量,取決於用戶端、遠端與中間網路是否共同支援相應轉送。一個網頁能開啟,不足以證明 UDP 鏈路正常;反過來,某個即時 App 無法使用,也不能直接證明密碼錯誤。應先用一般網頁確認基本連線,再用確實需要 UDP 的目標單獨測試,並檢查遠端相關連接埠與網路政策。
在 iOS 上,連線結構較直接時,日常短請求可能較容易穩定處理,但延遲與傳輸量仍取決於實際路徑。持續傳輸時,加密處理、無線訊號與伺服器傳送能力都會影響耗電;少量存取時,建立連線與喚醒無線網路可能更為關鍵。若網路不佳而反覆逾時,換用加密方法未必有幫助。先區分「尚未建立連線」與「連線後傳輸緩慢」,再決定要檢查入口可連線性或持續傳輸條件。
適用情境與排錯範圍
如果既有伺服器只提供 Shadowsocks,正確做法就是依原始資訊完整匯入,不必為了協定名稱而更換。若同一伺服器提供多種相容選項,可將欄位較少的選項作為比較基準,方便定位基本問題。發生故障時,先檢查 DNS、連接埠、Method 和 Password,再確認 UDP 與附加選項;若切換網路後恢復,應繼續檢查網路條件,而非反覆重設憑據。規則分流也須分開核對,避免把已符合 DIRECT 規則的請求誤當成 Shadowsocks 測試結果。
VMess 與 VLESS
分別確認驗證協定、傳輸方式與安全層;UUID 並非完整設定。
兩種協定的設計目標不同
VMess 的設計將使用者驗證與資料保護等機制納入協定,常見身分資訊為 UUID。VLESS 則讓協定本身更精簡,通常將資料保護交由搭配的安全層處理;VLESS 本身不具備與 VMess 相同的內建加密機制。即使兩者使用相同形式的使用者識別碼,也不能互相切換。用戶端的 Type 必須對應伺服器實際監聽的協定,不能只看項目中是否有 UUID 就推斷該選哪一種。
這類連線常搭配 TCP、WebSocket 以及 TLS 等設定,容易讓人混淆協定與承載方式。可將它們視為分層組合:UUID 用於相應的身分識別,承載方式決定如何交換資料,TLS 則提供相應的安全通道。若伺服器只接受特定組合,即使 UUID 正確,路徑或安全層不一致仍會連線失敗。文中列出的組合僅用於說明概念,實際可選項目應以 App 目前介面與遠端說明為準。
驗證欄位與時間條件
UUID 應原樣複製,不能以顯示名稱、一般密碼或訂閱識別碼取代。訂閱連結中的存取憑據與單一伺服器的 UUID 用途不同,前者用來取得設定,後者用來連線至相應服務。VMess 的部分舊設定還包含額外驗證參數,不要將舊範例中的數值視為所有伺服器通用。若資訊來源提供了這些欄位,應逐項比對;若只提供連結,請優先確認匯入解析是否完整保留,而不是自行猜測並填入數值。
VMess 的驗證機制涉及時間條件,裝置時間嚴重不準可能造成連線異常。可檢查系統日期與時間是否正常同步,再使用同一筆項目重試,但不要把所有故障都歸因於時鐘。VLESS 欄位較少,也不代表可以忽略 TLS 或其他搭配的驗證機制。對這兩種協定而言,使用者識別碼錯誤、連接埠指向錯誤服務、傳輸路徑不一致與安全層不相符,都可能造成連線迅速中斷;單看等待時間通常無法可靠判斷原因。
WebSocket、Host、Path 與 TLS
使用 WebSocket 時,Path 是伺服器端處理連線的路徑,應保留開頭的斜線、大小寫及必要的查詢內容。Host 可能參與 HTTP 請求路由,而 TLS 的 SNI 則在握手時用於選擇名稱;兩者有時相同,有時會依部署架構而不同。不要為了「統一」而將兩者都改成 Address。Address 可用來連至某個入口,Host 與 SNI 則代表不同層次的名稱;正確組合只能由遠端部署資訊決定。
TLS 憑證驗證應與預期的伺服器名稱一致。出現憑證錯誤時,先檢查 SNI、裝置時間、憑證有效性及連線位址,不應透過略過驗證來掩蓋錯誤。VLESS 若使用額外安全機制或特定傳輸選項,也需要目前 App 與遠端共同支援;不要直接挪用其他設定中的欄位。成功匯入只表示用戶端讀取了部分資訊,不代表所有組合都能建立連線,也不代表遠端已啟用這些功能。
速度、耗電與比較方式
在 WebSocket 外再使用 TLS,會增加相應的握手與封裝負擔,但不能因此斷定日常使用一定較慢。連線重用、入口位置、路徑品質及遠端負載都可能抵銷或放大差異。短請求較多時,可觀察首次開啟與後續開啟的差異;持續下載時則觀察速度能否穩定維持。不要直接比較首次握手與已重用的連線。iOS 耗電也應在相同網路條件下觀察;持續重試連線往往比欄位數量更值得留意。
若既有資訊同時提供 VMess 與 VLESS,應優先選擇參數明確、目前 App 支援且遠端維護狀態清楚的一組,而不是依名稱的新舊來決定。排錯時先固定一筆完整設定,依序核對 Type、UUID、傳輸方式、Path、Host 與 TLS;每次只修改一個確實與原始資訊不符的欄位。若匯入後清單缺少項目,可參考 訂閱解析與清單空白自查,將取得設定的問題與建立協定連線的問題分開處理。
Trojan 與 TLS 核對
除了密碼驗證,憑證名稱與握手條件同樣會影響連線能否建立。
以 TLS 為基礎的設計取捨
Trojan 將代理工作階段建立在 TLS 連線中,並透過相應的密碼驗證識別使用者。理解時應將外層 TLS 與內部驗證分開:TLS 負責建立安全通道並驗證相應的伺服器身分,密碼則負責協定層的存取驗證。TLS 握手成功不代表密碼一定正確;密碼正確也無法補救憑證名稱不符。相較於只核對一種加密方法的設定,Trojan 更需要確認網域、憑證與入口之間的對應關係。
這種設計運用成熟的 TLS 生態系,但也必須符合憑證有效期限、名稱驗證與握手協商等要求。它不等同一般網頁連線,也不能把任何支援 HTTPS 的位址當成 Trojan 伺服器。只有遠端實際提供相應服務並設定好驗證資訊,用戶端才可能完成整個工作階段。使用者需要的是一份完整且既有的伺服器資訊,而不是根據網站位址和常見連接埠自行拼湊設定。
Address、Password 與 SNI 各自的用途
Address 是建立網路連線的入口,Port 是服務連接埠,Password 應與遠端驗證設定一致。SNI 會在 TLS 握手時傳送目標名稱,伺服器可能據此選擇憑證與處理路徑。即使連至 IP 位址,仍可能需要指定網域形式的 SNI;反之,Address 已是網域,也不代表可以忽略原設定要求。若既有資訊明確列出 SNI,就應保留,不要直接以目前顯示的伺服器名稱取代。
憑證驗證通常要求憑證鏈可信、憑證仍在有效期限內,且涵蓋預期驗證的名稱。發生錯誤時,先檢查裝置時間與名稱,再確認伺服器端是否正確部署憑證。若只是變更連線入口,應依伺服器設定說明確認相關欄位,而不是在用戶端關閉驗證。略過驗證會削弱伺服器身分檢查,既無法修復密碼錯誤,也不能保證連線至預期的服務。
握手、應用程式請求與 UDP 的範圍
TLS 握手成功只代表鏈路中的其中一段正常。接下來仍須通過 Trojan 驗證、由遠端連線至目標並傳回資料。因此,「握手成功但頁面無法載入」應繼續檢查驗證資訊與遠端存取;「握手前就逾時」則適合先檢查解析與入口可連線性。若只有特定網站無法使用,也應查看規則比對結果與 DNS 解析結果。將各階段分開檢查,可避免把所有問題都歸咎於憑證,或在密碼欄反覆修改原本正確的資訊。
Trojan 的 UDP 轉送能力需要用戶端與伺服器共同支援,實際表現也會受到承載方式影響。TCP 網頁存取正常,不足以證明即時互動流量也能正常運作;在某些承載架構中,丟包可能讓等待時間明顯增加。應以目標 App 的實際服務進行測試,不要以單一網頁結果代替。含有額外傳輸層的項目也應依原始設定核對,不能把基本 Trojan 欄位清單當成所有變體的通用清單。
iOS 上的速度與耗電判斷
TLS 握手需要網路往返與運算,遠距離路徑上的首次連線可能較容易感受到等待;後續連線能否降低成本,取決於具體工作階段與實作方式。持續傳輸時,路徑品質、壅塞狀況與遠端效能往往比首次握手更重要。就耗電而言,穩定連線與減少重試通常有幫助,但長時間維持連線也會增加無線網路活動。不能只憑「使用 TLS」就判定耗電較高,也不能保證它在所有網路環境下都比其他協定更好。
若既有伺服器提供穩定的 Trojan 設定,且憑證名稱、密碼與傳輸資訊齊全,可將其作為一種可驗證的選項。比較時應維持目標與網路不變,先確認能否可靠建立工作階段,再觀察持續傳輸與背景執行情況。若更新後無法連線,應檢查訂閱是否同步更新憑證相關名稱或入口變更;如需了解更新流程,可繼續閱讀 訂閱手動與自動更新說明,不要以猜測新參數取代設定同步。
HTTP 與 SOCKS5
通用代理介面不等於加密通道;名稱解析與 UDP 能力須分別確認。
通用代理協定的設計目的
HTTP 代理源自轉送 HTTP 請求的需求;處理 HTTPS 目標時,通常會透過 CONNECT 建立通往指定目標的位元組通道。SOCKS5 則提供更通用的代理協商機制,可指定目標位址與連接埠,不限於網頁情境。這兩種協定常用於既有的內部網路或明確管理的代理入口。欄位看似簡單,但安全性與可用功能仍須依實際部署判斷,不能將「支援代理」直接理解為「提供加密保護」。
一般 HTTP 代理與 HTTPS 代理必須區分:前者描述用戶端與代理之間使用的基礎協定,後者則在這段連線外加上 TLS。存取 HTTPS 網站,不會自動讓用戶端與 HTTP 代理之間的所有協商資訊都受到相同保護。SOCKS5 基礎協定同樣不會為整段傳輸提供加密。若所在網路對機密性有要求,應確認既有入口的安全層,而非只看目標網址中的 HTTPS。
使用者名稱、密碼與允許的目標範圍
Address 與 Port 指向實際代理入口;只有遠端要求驗證時,才填入 Username 和 Password。留白與填錯驗證資訊可能造成不同結果,不能將任意帳戶憑據當成代理密碼。HTTP 代理可能限制 CONNECT 可連線的目標連接埠,也可能只允許特定目標;因此某個網頁能成功開啟,不代表電子郵件、即時通訊或其他連接埠也能使用。排錯前應先了解既有代理的存取範圍,避免將政策限制誤判為用戶端故障。
SOCKS5 可協商不同的驗證方式,但用戶端與伺服器必須支援相同方式。匯入時應確認類型已識別為 SOCKS5,不要只憑連接埠數字判斷。常見連接埠只是慣例,實際服務也可能使用其他連接埠;同樣地,常見連接埠上也可能執行完全不同的服務。連線遭拒時先確認位址與監聽狀態,驗證失敗時再檢查相應帳戶。不要同時更改連接埠、類型與密碼,以免原本可定位的問題變得難以重現。
| 項目 | HTTP | SOCKS5 |
|---|---|---|
| 主要機制 | HTTP 請求轉送或 CONNECT | 通用代理協商與目標連線 |
| 基礎協定加密 | 一般 HTTP 本身不提供 TLS | 基礎協定本身不提供加密 |
| UDP | 一般 CONNECT 不能直接視為通用 UDP 轉送 | 協定定義了 UDP ASSOCIATE,但仍須雙方支援 |
| 目標限制 | 可能限制 CONNECT 的連接埠與目標 | 可能受驗證、位址政策及轉送能力限制 |
DNS 由哪一端解析
代理協商可能傳送網域,也可能傳送已解析的 IP 位址,這會影響由哪一端進行名稱解析。實際行為會受到用戶端設定、規則需求與協定用法共同影響,不能只憑選擇 SOCKS5 就斷定 DNS 一定交由遠端處理。若設定需要依解析結果比對 IP 規則,本機仍可能發出相關查詢。診斷時應分別檢查網域能否解析、解析結果是否合理,以及代理端能否連線至目標;不要只更改一個 DNS 位址就期待所有問題都能解決。
SOCKS5 定義了 UDP ASSOCIATE,但遠端可能未啟用,網路也可能不允許相應的回傳路徑,或用戶端設定未使用此功能。HTTP 代理的一般 CONNECT 則不能視為通用 UDP 轉送能力。若網頁可正常存取,但即時 App 無法使用,應先確認該服務是否依賴 UDP,並核對遠端明確支援的功能。不要反覆更換使用者名稱來處理實際上由缺少轉送能力造成的問題,兩者屬於不同層次。
速度、耗電與使用範圍
較少的封裝可能降低部分處理負擔,但無法消除路徑壅塞、驗證等待與遠端限制。在 iOS 上,短時間測試容易因快取或目標差異得到相反結果;應固定目標,分別記錄連線建立與傳輸表現。既有 HTTP 或 SOCKS5 入口只適用於其明確支援的服務範圍,不應假設它能取代任何通道協定。若要進一步核對名稱解析,可閱讀 DNS 與 DNS over HTTPS 設定說明,再配合目前規則判斷請求實際經過的位置。
WireGuard
透過金鑰與虛擬網路位址建立通道,不能套用一般代理的密碼概念。
通道協定與代理項目的差異
WireGuard 的設計目標是建立結構精簡的加密網路通道,採用固定的密碼學組合,並以公鑰識別對端。它處理的是網路層封包,因此設定中會出現介面位址、對端金鑰與路由範圍等概念,而不只是代理密碼。在 Shadowrocket 中使用相應項目時,也須配合用戶端的接管與規則機制理解;不能未經核對,就將獨立通道設定中的每個選項視為與 App 中某個欄位完全相同。
與使用者名稱或 UUID 驗證的協定不同,WireGuard 需要本端私鑰與遠端公鑰正確配對。遠端也必須識別本端相應的公鑰,並為其設定適當的位址與可達範圍。只複製 Endpoint,或只取得遠端公鑰,都不足以建立完整連線。若既有資訊來自設定檔,應先辨識 Interface 與 Peer 分別描述哪一端,再依目前 App 支援的方式匯入,並保留原始檔案供逐項比對。
金鑰、Endpoint 與位址欄位
PrivateKey 是本端的機密資訊,不應出現在公開截圖或求助內容中;Peer 中的 PublicKey 通常指遠端公鑰,兩者不能互換。有些設定還包含 PresharedKey,這是額外的共享機密,雙方也必須一致。此處不提供金鑰範例,避免格式示意被誤認為可用憑據。向他人描述問題時,只需說明欄位是否存在、匯入時是否出錯及錯誤類別,不必提供真實金鑰。
Endpoint 表示可連線至遠端的位址與 UDP 連接埠;Address 通常表示分配給本端的通道內位址,兩者在不同位址空間中扮演不同角色。DNS 設定會影響相應名稱解析,AllowedIPs 在 WireGuard 的語意中則與對端可處理的位址範圍及路由選擇有關。若遠端只允許某個內部網段,不能只靠用戶端擴大範圍至所有位址,就取得額外的轉送能力;伺服器端的路由、轉送與回程路徑仍須正常運作。
UDP、Keepalive 與行動網路
WireGuard 通常透過 UDP 傳輸,網路必須允許用戶端與 Endpoint 的相應連接埠交換資料。Wi-Fi 正常、行動網路異常,可能與 UDP 路徑、位址變更或網路映射有關,不一定是金鑰失效。觀察時先確認是否有有效握手,再檢查實際服務能否使用;握手成功不代表 DNS、目標路由與回程路徑都正確。尤其是存取內部網段時,應確認該網段是否與目前本地網路重疊。
PersistentKeepalive 用於在必要時維持網路映射,但數值越小不代表越穩定。頻繁傳送封包可能增加無線網路活動與耗電,不需要時開啟也未必有幫助。是否設定及如何設定,應依既有部署需求與實際閒置後斷線情況決定,不要在所有情境套用同一數值。也應分別觀察行動裝置在鎖定螢幕、切換網路與重新喚醒後的表現,不能用螢幕常亮時的一次成功測試取代背景穩定度判斷。
MTU 與適用範圍
MTU 表示相關介面可承載的封包大小。若封裝後的封包超出路徑承載能力,且必要的回應無法正常傳回,可能出現握手正常、小型請求成功但大型回應停滯的情況。不過這只是排查方向之一,不應一遇到速度慢就先改 MTU。應先確認路徑、DNS 與路由,再依遠端說明進行有限調整並記錄原值;任意調得過小會增加分段與封包數,調得過大則可能無法解決原有問題。
若需求是存取明確管理的內部網段,而且管理員提供完整的 WireGuard 設定,其位址與對端架構便於處理這類需求。若目標是一般代理服務,也應確認遠端確實提供相應轉送,而非只建立通往內部網路的通道。速度與耗電仍取決於無線網路狀況、封包大小、Keepalive 與流量。最終應確認握手、路由、DNS 與目標回應都正常,而不是只看設定中是否出現某個通道名稱。
Hysteria2
以 QUIC 為基礎的傳輸需要可用的 UDP 路徑,頻寬設定也應符合實際鏈路。
針對不穩定路徑的設計取捨
Hysteria2 採用以 QUIC 為基礎的傳輸架構,著重處理高延遲、丟包等情況下的資料傳輸問題。QUIC 建立於 UDP 之上,但能提供可靠的串流傳輸,因此「底層使用 UDP」不代表「所有應用程式資料都不保證送達」。這也不表示任何不穩定網路都會變快:若 UDP 無法連線、受到嚴格限速,或入口本身負載過高,協定設計無法繞過這些基本限制。選擇前應先確認既有伺服器支援 Hysteria2。
Hysteria2 不能只因顯示名稱相近,就視為與早期協定相容;匯入格式與驗證欄位也應對照目前 App。部分設定還含有混淆或其他擴充參數,只有遠端啟用相同機制時才需要填寫。額外選項不是通用的效能開關,單方面加入會改變通訊條件,甚至導致連線失敗。用戶端能儲存項目,也不代表遠端接受該項目的實際組合,仍須透過完整工作階段驗證。
驗證、TLS 與伺服器名稱
基本核對項目包括 Address、Port、驗證資訊與 TLS 相關名稱。驗證資訊應來自同一份既有設定,不能以訂閱連結中的憑據取代;若匯入工具將不同部分拆成多個欄位,應確認是否完整解析。SNI 與憑證名稱之間的關係仍然重要:即使改用 QUIC 傳輸,憑證驗證依然不可忽略。裝置時間不正確、預期名稱不相符或憑證部署錯誤,都可能導致連線在驗證前後中止。
若遠端設定要求特定混淆類型與密碼,應依原始資訊保留,並確認目前 App 支援相應選項。不要因為網路無法連線就依序嘗試所有混淆方式,否則原始問題與新引入的問題會交疊。變更連接埠也需要遠端實際監聽該連接埠,用戶端無法單方面建立新入口。若資訊來源明確但欄位說明不完整,應先補齊說明再比較效能,避免把設定錯誤的項目納入測試。
頻寬參數不等於測速結果
部分設定會涉及上行、下行或壅塞控制相關選項。這些選項代表傳送策略或預期鏈路條件,不是實際速度的保證,也不是數值越大越好。若數值超過可持續承載能力,可能增加壅塞、丟包與波動;設定過低則可能限制可用傳輸量。若介面提供自動協商或預設行為,應先依遠端說明使用;只有在觀察到可重複的問題且了解相關參數後,才進行有紀錄的調整。
行動網路的可用頻寬會隨訊號、位置與基地台負載改變,短時間測速的峰值不一定適合作為長期參數。Wi-Fi 標示的連線速率也不等於實際可用的伺服器連線頻寬。比較時應觀察持續傳輸中的穩定範圍,而非只取最高瞬間速度;也不能忽略上行,因為確認與控制流量同樣需要鏈路資源。若調整頻寬設定後耗電增加或波動變大,應恢復原值並重新確認測試條件。
iOS 效能觀察與故障分支
在部分有丟包的路徑上,合適的傳輸與壅塞控制可能改善持續傳輸,但實際效益取決於兩端實作與網路環境。更積極使用鏈路也可能增加無線網路活動、運算負擔與耗電,不能將高傳輸量直接等同於更省電。建議分別觀察短頁面的等待時間、長時間傳輸穩定度,以及閒置後重新連線的情況,並在相同時段與其他既有可用項目比較。只看一次延遲不足以反映 QUIC 工作階段的整體表現。
若只有特定網路無法使用,先保持項目不變,切換至另一個自己可用的網路,判斷是否與 UDP 路徑有關;若所有網路都無法使用,則逐項核對位址、連接埠、驗證資訊、憑證與附加參數。若一般網頁正常,但某個即時 App 無法使用,應進一步區分 App 流量轉送能力與底層 QUIC 是否已建立。Hysteria2 可作為既有可用選項中的實際測試對象,不應視為在任何條件下都能改善連線的通用解法。
情境選擇與逐層排錯
從既有可用條件出發,依一致的驗證步驟逐步縮小問題範圍。
依可驗證條件縮小選擇範圍
日常瀏覽網頁與使用 App,應優先採用參數完整且能穩定建立工作階段的既有設定,再比較首次回應與持續傳輸表現。存取內部網段時,可著重核對 WireGuard 的位址、路由與對端權限;需要 UDP 的服務則須確認協定、遠端與目前網路都支援相應轉送。不穩定網路下可測試既有的 Hysteria2 等選項,但不能以此取代入口可連線性檢查。所有選擇都應以遠端已提供的功能為界,而不是依協定名稱追求一種通用答案。
在重視耗電的情境中,應觀察實際使用期間的閒置連線、背景重試與網路切換。On Demand 控制何時觸發連線,規則則控制流量的去向;兩者都與協定選擇有關,但並非同一問題。只有在需要的請求進入適當路徑,且連線能穩定維持時,比較協定成本才有意義。若持續發生失敗重試,應先找出原因;單純改用欄位較少的協定,仍可能遇到相同的網路問題。
| 情境 | 先確認 | 比較重點 |
|---|---|---|
| 短頁面與日常 App | 驗證資訊、DNS、規則比對結果 | 首次回應、後續回應與重新連線 |
| 長時間持續傳輸 | 遠端負載與鏈路可持續能力 | 穩定傳輸量、波動、裝置發熱 |
| 即時互動服務 | UDP 轉送與雙向可連線性 | 延遲波動、丟包與恢復時間 |
| 明確的內部網段 | 位址、路由與回程路徑 | 目標可連線性、網段重疊與 DNS |
先確認請求確實經過測試項目
在 Config 中,規則的先後順序會決定請求如何比對。以下僅示範 Shadowrocket 的 .conf 規則片段,並非完整設定:網域後綴交由 PROXY,列出的私有網段交由 DIRECT,其餘流量則由 FINAL 指定最終策略。實際使用前,請確認目前設定中引用的策略可用,並了解 FINAL 的影響。不要為了測試一個網域就覆蓋整份原始設定;請先儲存原設定,再進行範圍最小的驗證。
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.168.0.0/16,DIRECT
FINAL,PROXY
若相同請求在 Direct 下正常、Proxy 下失敗,可繼續檢查遠端連線,但這不能作為整體網路狀況的最終判斷;兩種路徑可能使用不同的解析結果與目標入口。若在 Config 下異常、Proxy 下正常,應優先檢查規則與 DNS 關聯。如需了解 Home、Config、Data 與 Settings 的位置,可參閱介面英文對照,避免進入錯誤頁面尋找不存在的協定選項。
依故障階段建立最精簡的排錯紀錄
第一步確認訂閱是否成功取得、項目是否完整,再檢查位址能否解析及連接埠是否可連線;第二步核對 Type、驗證資訊與傳輸方式;第三步核對 TLS 與名稱;第四步才檢查目標存取與服務能力。若清單本身是空的,代表尚未進入協定連線階段,應先處理訂閱取得或解析問題。若已成功握手但沒有目標回應,應繼續檢查伺服器至目標的路徑、目標限制與回傳資料,而不是反覆匯入同一筆訂閱重試。
紀錄應包含裝置使用的網路類型、故障時的 Global Routing、所選協定、訂閱是否剛更新,以及可重現的錯誤階段。可保留錯誤類別與已去識別化的欄位名稱,但不要附上真實密碼、金鑰或完整訂閱連結。每輪只修改一個明確不符的欄位,並記錄原值;確認無效後還原,再檢查下一層。比較不同網路時應保持伺服器項目不變;比較不同項目時則保持網路與目標不變,才能減少變數干擾。
何時停止調整並回到基本檢查
若所有協定在同一個網路下都無法使用,應先檢查裝置網路、DNS 與系統授權;若只有一個項目失敗,應優先核對其驗證資訊與遠端狀態;若只有特定目標失敗,則應檢查規則與目標本身。不要把所有故障都當成協定選擇問題。其他常見疑問可參閱常見問答;首次建立連線則依快速上手重新核對授權與開關。App 取得、購買與相容性資訊統一於下載核驗頁說明;價格與系統需求請以 App Store 頁面標示為準。