Hysteria2 是什麼?QUIC 傳輸為何快速、適合哪些網路環境

認識 Hysteria2 的 QUIC 與 UDP 傳輸方式、壅塞控制對速度的影響,以及高封包遺失率和行動網路等適用情境與限制。

本文概要

Hysteria2 是一種以 QUIC 為基礎的代理協定,在部分高延遲或有封包遺失的網路中,可能改善傳輸表現;前提是網路路徑允許 UDP、伺服器參數正確,且頻寬設定合理。本文適合已持有自有服務參數的 Shadowrocket 使用者,將依序說明傳輸原理、適用條件、參數檢查及可重現的故障排除步驟;協定名稱本身並不代表速度保證。

Hysteria2、QUIC 與 UDP 各自負責什麼

在 Shadowrocket(小火箭)中,Hysteria2 是用來連線至使用者既有服務的一種協定類型。它不是網路線路,也不等同於訂閱。訂閱會提供連線項目給用戶端;協定則規範用戶端與伺服器如何驗證及傳輸。實際表現仍會受到本機網路、伺服器負載和目標網站影響。

傳輸鏈路可分成三層:底層 UDP 負責承載資料封包;QUIC 在其上實作加密連線、資料流與可靠傳輸機制;Hysteria2 則規範代理驗證及業務資料的封裝方式。UDP 本身不保證資料送達,但不能因此推論使用 UDP 的 QUIC 可靠資料流不會重傳。瀏覽網頁等需要可靠傳輸的服務,仍須等待遺失資料復原。

UDP
Hysteria2 的底層傳輸路徑必須允許 UDP
TLS 1.3
QUIC 整合的加密交握機制
443/UDP
連接埠範例,並非所有服務都使用的固定連接埠

例如,服務商指定的連接埠為 443 時,應檢查對應的 UDP 連接埠是否可連線。相同號碼的 TCP 連接埠能連線,不代表 UDP 也能通過。連接埠應使用既有服務提供的值,不能因為常見範例使用 443,就一律把其他有效連接埠改成 443。

所謂「更快」:壅塞控制與資料流隔離的作用

QUIC 可在同一條連線中承載多個資料流。某個資料流遺失資料時,通常不必像共用同一 TCP 位元組流那樣,等缺少的位元組補齊後,其他資料流的資料才能交付。這能減少資料流之間的隊頭阻塞;但同一可靠資料流中的缺口仍須復原,而且所有資料流仍共用實際鏈路容量並受到壅塞限制。

Hysteria2 的傳輸表現也與壅塞控制有關。頻寬設定可能會參與傳送速率控制;由頻寬驅動的 Brutal,與自動估算路徑容量的方式並不相同。實際採用哪種方式,取決於用戶端實作、設定及伺服器協商結果;不能只看協定名稱,就斷定目前連線一定使用某種演算法。

結論:先測試連線能力,再調整速率

只有在 UDP 路徑穩定可連線、驗證成功,而且目標請求確實經由該連線傳送後,才需要比較頻寬設定。提高數值後若網頁等待時間變長,應還原原值,而不是繼續調高。

填寫頻寬時也要留意單位:Mbps 是每秒兆位元,MB/s 是每秒兆位元組,兩者數值換算相差 8 倍。即使方案標示的頻寬很高,目前的無線訊號與共用出口仍可能只能提供較低的可用容量。請以用戶端欄位顯示的單位及既有服務說明為準,不要把方案上限直接當成目前實測速率。

哪些網路值得測試?哪些條件應先處理?

高封包遺失率、長距離或行動網路都是需要實際測量的條件,並非自動適用的標籤。先確認本機網路允許 UDP,再區分隨機封包遺失、壅塞造成的封包遺失及伺服器異常;三者都可能導致卡頓,但處理方式不同。

網路條件觀察項目優先處理事項
高延遲且偶發封包遺失連續請求是否完成、持續傳輸是否頻繁停頓固定目標與伺服器重複測試,不要只看單次延遲
切換 Wi-Fi 與行動網路切換後現有請求是否恢復、新請求是否成功分別記錄切換前後的結果;必要時重新建立連線
限制 UDP 的網路其他網路可用,但目前網路持續交握逾時確認網路存取要求,改用允許 UDP 的網路再次驗證
低封包遺失率、低延遲的網路網頁回應與持續傳輸是否已穩定保留穩定的參數,不要只因協定名稱就反覆更換設定
共用出口壅塞下載時其他請求的延遲上升,停止下載後恢復降低負載,重新評估頻寬設定

QUIC 具備支援連線遷移的機制,但不代表 Shadowrocket 每次切換網路都能無縫續傳。用戶端實作、伺服器策略、位址變更及網路中間設備都會影響結果。使用行動網路時,應分別測試「維持在同一網路」和「切換網路」兩種情境,避免把切換失敗誤判為所有 Hysteria2 連線都無法使用。

在 Shadowrocket 中檢查既有 Hysteria2 參數

以下步驟以使用者已持有自己的服務商與連線參數為前提。請先保留目前可用的設定,逐項檢查協定、位址、連接埠、驗證及 TLS 資訊。不同類型的連線參數不能只靠修改 Type 互相轉換;Hysteria 與 Hysteria2 也不能視為同一種協定。

  1. 查看連線項目

    進入 Home,開啟既有項目的編輯頁面,確認 Type 是否為 Hysteria2。若要手動新增,請從 Home 右上角的「+」進入,並依既有服務說明選擇 Type;不要把服務商名稱當成協定類型。

  2. 檢查連線資料

    逐字檢查服務位址、連接埠及驗證資訊。範例位址 hy2.example.com 和連接埠 443 僅用來說明欄位之間的關係,並非可用服務。驗證資訊前後不得混入空格或換行。

  3. 檢查 TLS

    依照既有服務說明,檢查 TLS 伺服器名稱(SNI)及憑證要求。連線位址與憑證名稱不一定相同;遇到憑證錯誤時,先檢查名稱和裝置時間,不要把略過憑證驗證當成一般處理方式。

  4. 檢查其他設定

    若服務啟用了 obfuscation,請確認其方式與密碼有成套提供;若未啟用,就不要自行新增。頻寬相關欄位請依顯示單位填寫,並保留修改前的數值,以便還原。

  5. 連線並再次確認

    儲存後返回 Home,選取該項目並檢查 Global Routing,接著開啟連線並執行 Connectivity Test。再存取固定的測試目標,分別記錄測試結果與實際請求的結果。

Global Routing 如何影響協定測試

「選取了 Hysteria2 項目」與「目前請求使用該項目」並非同一回事。Home → Global Routing 會決定路由方式;使用 Config 時,規則可能讓某些請求走 DIRECT,因此成功開啟一次網頁,不能單獨證明 Hysteria2 鏈路正在運作。

Config:依規則檢查

建議

依目前設定進行分流。測試前先確認目標應符合哪一條規則,以及該規則使用哪種策略;若策略引用其他選項,還須確認最終出口。

適用情境:日常依規則使用,以及已確認比對關係後重新測試

Proxy:暫時排除變因

將可代理的請求交由所選代理處理,以縮小規則因素的影響。測試期間仍須確認選取的正是要測試的 Hysteria2 項目,結束後請還原原有路由方式。

適用情境:短時間確認故障是否與 Config 分流有關

Direct:建立直連對照

用來觀察不經代理時的目標存取結果。在 Direct 模式下能開啟網頁,只能表示該目標的直連路徑可用,不能驗證 Hysteria2。

適用情境:確認目標網站及本機網路的基本存取狀況

以下是用來理解比對關係的最簡規則片段,並非完整設定,也不會連向實際測試服務。DOMAIN-SUFFIX 會比對指定網域及其子網域;FINAL 則處理先前未比對的請求。具體規則應放在兜底規則之前。

[Rule]
DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT

在這個片段中,只有存取 example.com 及其子網域時才會符合 PROXY,其餘請求則使用 DIRECT。如果實際測試的是其他網域,就不能用測試結果評估待測代理。On Demand 則控制何時依條件建立 VPN 連線,與連線項目的協定或 Rule 的比對範圍屬於不同層級的設定。排除故障時,請在 Settings → On Demand 檢查既有條件,避免自動連線行為干擾手動測試。

固定測試條件並記錄結果,不要只憑一次測速下結論

測試協定時,應同時觀察連線能力、回應時間與持續傳輸狀況。Connectivity Test 可做初步檢查,但其測試目標與方式不同於實際服務,結果不能直接視為下載頻寬。本文不提供適用於所有網路的速度差異或封包遺失率門檻,因為這些數值必須在明確的測試條件下才有意義。

可以在本機筆記中記錄「Wi-Fi、Config、目標符合 PROXY、3 次皆成功、開始傳輸後網頁回應變慢」這類可觀察到的現象。這比「感覺比較快」更有助於找出問題,也不會把短暫的網路波動誤認為協定的固定特性。向既有服務商回報時,請提供必要的錯誤資訊,但不要公開驗證密碼或完整訂閱網址。

常見問題:交握、憑證與網路切換

同一個連線項目在 Wi-Fi 下逾時,卻能透過行動網路連線?

保持連線項目參數不變,分別在兩種網路執行 Home → Connectivity Test,並存取相同目標。若只有其中一種網路持續失敗,請優先檢查該網路的 UDP 限制或存取要求。TCP 443 可用,不代表 UDP 443 也可用。

出現憑證錯誤提示,可以直接忽略嗎?

先檢查裝置日期與時間,再返回 Home 的連線項目編輯頁,確認服務位址及 TLS 伺服器名稱。請向既有服務商確認正確名稱與憑證狀態;保留憑證驗證,不要長期以忽略錯誤的方式處理。

頻寬設定得更高,為什麼網頁反而卡住?

較高的目標速率可能超過目前路徑容量,造成排隊與封包遺失。請還原先前的欄位值、暫停持續下載,再以相同目標重新測試。確認單位是否為 Mbps,避免將 MB/s 的數值直接填入使用不同單位的欄位。

更新訂閱後突然無法連線,應先檢查哪裡?

在 Home 開啟更新後的項目,檢查 Type、連接埠、驗證及其他參數是否變更,再確認所選項目與 Global Routing。若參數確實改變,請向自己的服務商確認;不要在不清楚用途的欄位中反覆嘗試隨機數值。

切換網路後中斷,是 On Demand 設定錯了嗎?

先在新網路中手動重新連線,確認該網路允許 UDP。接著前往 Settings → On Demand 檢查自動連線條件。若手動連線也失敗,先排查網路與連線項目;只有自動觸發行為不符合預期時,才單獨調整 On Demand。

App Store 下載