Hysteria2 是什麼?QUIC 為何快速,以及 Shadowrocket 適用哪些網路

認識 Hysteria2 的 QUIC、UDP 傳輸原理與壅塞控制,了解高丟包及長距離連線的表現,以及在 Shadowrocket 設定連線時需核對的欄位。

本文重點

在 UDP 可連通的前提下,Hysteria2 值得針對高延遲、容易丟包的連線進行實測比較,但不代表所有網路都會更快。本文說明 QUIC、壅塞控制與頻寬參數的關係,並依 Shadowrocket 的新增流程核對位址、驗證資訊、TLS 與選用的混淆設定,最後透過分階段排查,區分傳輸失敗與規則問題。

Hysteria2 與 QUIC、UDP 的關係

Shadowrocket(小火箭)中的 Hysteria2 是一種代理協定。用戶端與伺服器透過以 UDP 為基礎的 QUIC 連線交換資料,再由伺服器連線至目標位址。此處的 UDP 指用戶端與伺服器之間的外層傳輸,不代表瀏覽器造訪的所有網站都改用 UDP,也不代表應用程式原有的 TCP 資料可以不經可靠傳輸便直接丟棄。

QUIC 整合可靠傳輸、串流管理與 TLS 握手。需要可靠送達的資料若遺失,仍須進行恢復;UDP 本身不負責重傳,相關機制由 QUIC 實作。Hysteria2 可承載 TCP 連線與 UDP 資料,但承載方式不同,不能把「外層使用 UDP」解讀為「所有業務資料都保證送達」。

UDP
用戶端與伺服器之間的外層傳輸
TLS 1.3
QUIC 使用的加密握手機制
443
伺服器可使用的連接埠範例,並非必填值

QUIC 的多工可避免單一串流的資料遺失直接阻塞其他串流的有序交付,但各串流仍共用連線的壅塞與頻寬條件。連線嚴重壅塞時,所有業務都可能受到影響。QUIC 也不等同於 HTTP/3;HTTP/3 是建構於 QUIC 之上的應用層協定,不能只因兩者都使用 QUIC,就視為用途相同。

為何可能更快:壅塞控制與頻寬估算

長距離連線的往返時間較長,傳送端必須維持足夠多的傳輸中資料,才能有效利用現有頻寬。丟包會觸發可靠傳輸的恢復程序;某些壅塞控制演算法也會因此降低傳送速率。若丟包主要來自無線干擾,而非連線壅塞,過度降低速率可能導致吞吐量下降。Hysteria2 的設計重點之一,就是在這些條件下調整傳送行為。

Hysteria2 架構中的 Brutal 壅塞控制以頻寬目標為重要輸入,並根據回饋調整傳送,嘗試減輕丟包造成的影響。實際採用哪種控制方式,還取決於雙方實作、協商結果及頻寬設定。不能只看到 Type 為 Hysteria2,就認定一定啟用了某種控制方式,更不能把 QUIC 本身視為固定提升速度的保證。

結論:依實測連線設定頻寬

只有在目前設定確實提供頻寬欄位,且服務端說明清楚指出其用途時才進行調整;以相同網路的持續傳輸表現為依據,不要照寬頻方案的峰值或任意填入大數字。

「快」需要分開來看:首次開啟網頁的等待時間、持續下載吞吐量,以及即時服務的延遲抖動,並不是同一項指標。提高持續吞吐量,不一定能縮短 DNS 查詢時間,也不一定能改善目標網站伺服器的回應速度。跨區路由繞行、伺服器負載與目標網站限速,也可能成為瓶頸。

哪些網路適用:先確認 UDP,再比較實際表現

高延遲、容易隨機丟包,而且允許穩定 UDP 通訊的連線,是值得測試 Hysteria2 的情境。行動網路訊號波動或 Wi-Fi 忙碌時可能造成丟包,但「使用行動網路」本身不足以作為推薦某種協定的理由:不同地點、時段與接入網路對 UDP 的處理方式可能不同,應在實際使用地點反覆測試。

網路條件可能表現檢查方式
高延遲、隨機丟包持續吞吐量可能維持在較佳水準,但仍受頻寬與負載限制。固定相同目標,記錄載入時間、吞吐量與停頓次數。
UDP 遭封鎖握手逾時,或始終無法建立可用連線。檢查伺服器的 UDP 監聽、防火牆與目前使用的接入網路。
UDP 受到限速可以連線,但持續傳輸很快便遇到速率上限。在自己的 Wi-Fi 與行動網路之間進行單一變因比較。
低延遲、低丟包不一定能帶來明顯改善。優先比較穩定性、業務回應與裝置耗電變化。

每輪測試可設定相同的觀察時間,例如持續傳輸 60 秒並重複 3 次,同時記錄網路類型及是否中斷。這是測試方式建議,並非本文的實測結果。不要同時切換伺服器、修改 DNS、變更規則再比較速度,否則無法判斷變化究竟來自哪個因素。

在 Shadowrocket 新增設定並核對欄位

以下操作假設使用者已持有自己的服務商與訂閱資訊。匯入訂閱可以減少手動輸入錯誤,但仍須檢查匯入後的協定類型與欄位是否完整。應用程式顯示的欄位可能隨目前介面而異,請逐項對照服務端提供的連線參數,不要以其他協定的設定內容取代。

  1. 確認類型

    前往 Home → 右上角「+」→ Type,手動設定時選擇 Hysteria2。使用現有訂閱時,Type 選擇 Subscribe,輸入自己的訂閱網址並儲存,再返回 Home 更新訂閱;接著開啟匯入的項目,確認其類型。

  2. 填寫位址

    依現有資訊填寫 Address 與 Port。Address 是伺服器主機名稱或 IP,不是訂閱網址;Port 填寫伺服器實際監聽的 UDP 連接埠。例如伺服器使用 443,就填 443;不能只因網頁常用這個連接埠,就自行改成該值。

  3. 確認驗證資訊

    填寫 Password,並確認大小寫、前後空格及複製內容是否完整。Hysteria2 的驗證資訊應由對應伺服器提供,不能把訂閱連結中的 token 當成連線密碼,也不能沿用其他協定的驗證欄位。

  4. 檢查 TLS

    展開目前項目的 TLS 相關設定,依現有資訊確認 SNI 與憑證驗證所使用的名稱。若 Address 使用 IP,而憑證簽發給網域名稱,尤其要檢查名稱設定;遇到驗證錯誤時,應確認憑證、名稱與有效期限。

  5. 儲存並測試

    儲存項目,返回 Home 選取該項目,再檢查 Global Routing 目前的模式並連線。先開啟一個明確的測試目標,觀察是否能完整載入,再進行持續傳輸測試;修改前先記錄原值,避免同時變更多個參數。

若伺服器啟用了 Salamander 等選用混淆功能,用戶端的對應設定必須與伺服器一致;混淆密碼與連線驗證密碼用途不同。伺服器未啟用時,不應自行加入。混淆也無法讓遭完全封鎖的 UDP 自動恢復連通。

連線後如何區分協定問題與分流問題

項目儲存成功不等於連線驗證成功;連線成功也不代表某個網頁已使用該連線。Shadowrocket 的 Global Routing 會決定流量選擇哪條路徑。排查時先確認目前使用的是 Config、Proxy、Direct 還是 Scene,再確認測試要求實際符合哪條規則或哪種場景設定。

Config

建議

日常使用時依目前設定中的規則選擇策略。測試前確認目標符合的是 DIRECT 還是代理策略,避免把未經 Hysteria2 的連線結果當成協定表現。

適用情境:日常使用既有規則設定並長期觀察

Proxy

讓由應用程式處理的流量使用代理路徑,可暫時降低規則因素的影響。仍須確認選取的項目與目標是否可連通,不能因此認定 DNS、網路或伺服器問題已排除。

適用情境:短時間確認所選連線能否連至目標

Direct

讓由應用程式處理的流量使用直接連線路徑,可用來觀察本機網路是否能連至原本可直接存取的目標;此時成功連線不代表 Hysteria2 正常。

適用情境:比較本機網路與直接連線目標的基本連通性

使用 Scene 時,請查看目前生效場景的設定,不要將場景名稱視為固定的代理行為。使用 Config 時,規則由上而下比對,具體條件應放在前面,FINAL 放在規則段落末尾。以下僅示範語法關係,並非可直接取代原設定的完整配置,也不代表這些目標在目前網路中可以連通。

[Rule]
DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.168.0.0/16,DIRECT
GEOIP,CN,DIRECT
FINAL,PROXY

其中 DOMAIN-SUFFIX 依網域後綴比對,IP-CIDR 依位址範圍比對,GEOIP 依 IP 地理資料庫比對。若目標網域先符合較前面的 DIRECT 規則,切換至 Hysteria2 項目也不會改變該要求的直接連線路徑。應先確認要求採用的策略,再討論協定速度。

依症狀排查:逾時、驗證失敗、停頓與更新後失效

延遲測試顯示數值,只代表當時該測試操作有收到回應,不能取代完整的業務驗證。尤其是 TCP 連接埠探測,無法確認 Hysteria2 所需的 UDP 握手。遇到問題時依失敗階段逐項檢查,通常比反覆修改頻寬參數更有效。

  1. 持續連線逾時:先確認 Address 和 Port,再確認伺服器的 UDP 監聽與防火牆規則。若使用網域名稱,檢查伺服器網域能否解析;接著改用自己可用的另一種接入網路進行比較。
  2. 發生 TLS 錯誤:確認裝置時間、SNI、憑證名稱與有效期限。Address 使用 IP 時,尤其要確認憑證是否涵蓋驗證所用的名稱。
  3. 驗證失敗:確認 Password 是否屬於這個 Hysteria2 項目,並檢查複製時是否帶入空格、憑證是否已變更,以及選用混淆設定是否與伺服器一致。
  4. 已連線但網頁無法開啟:檢查 Global Routing、規則比對結果與 DNS。若只有部分網域無法使用,應優先查明解析或目標連通性,不要先認定整個協定都無法使用。
  5. 傳輸一段時間後停頓:檢查 UDP 限速、無線訊號、伺服器負載與路徑 MTU 等因素。若設定了頻寬目標,先記錄原值,再降低目標進行單一變因測試。
  6. 訂閱更新後出現變化:重新確認匯入項目的類型、連接埠、驗證資訊與 TLS 設定,並留意更新內容可能會取代手動編輯的值。請以目前已儲存的項目為準,不要只看項目名稱。

On Demand 控制的是依條件建立連線的行為,不是 Hysteria2 的壅塞控制開關。排查自動連線時,可前往 Settings → On Demand 確認相關條件;排查傳輸速度時,應先讓連線狀態與接入網路維持穩定,避免把自動重新連線造成的等待誤認為吞吐量下降。

最終應以實際使用情況判斷:確認 UDP 可連通、參數一致且規則比對正確後,再比較重複測試結果。若目前網路持續封鎖或嚴格限制 UDP,調整頻寬數值無法解決根本問題;若連線穩定且使用體驗符合需求,也不必只為追求單次測速峰值而不斷修改設定。

App Store 正版核對