Abstract streaks of purple and green light

Hysteria2 基於 QUIC 協議(UDP),理論上在高延遲、高丟包網路裡比 TCP 類協議快得多。但很多人部署完發現速度一般,原因通常是頻寬引數沒配對或者擁塞控制演算法沒選對。

這篇文章專門講調優。假設你已經跑通了基礎部署(參考 Hysteria2 搭建教程),現在想把速度榨出來。

頻寬引數:最影響速度的配置

Hysteria2 的頻寬引數控制著它的傳送速率,沒配或配錯是速度差的最常見原因。

服務端 bandwidth

/etc/hysteria/config.yaml:

bandwidth:
  up: 1 gbps      # 服務端上行(客戶端下載方向)
  down: 1 gbps    # 服務端下行(客戶端上傳方向)

這裡填的是服務端(VPS)的實際頻寬上限,不是你家寬頻的速度。

常見 VPS 頻寬:

  • DMIT HK/US Premium:1 Gbps 埠,但共享,實際峰值 200-500 Mbps
  • AWS t3 型別:5-25 Gbps(burst)
  • 低價 VPS:通常 100-500 Mbps

怎麼測 VPS 實際頻寬:

# 在 VPS 上安裝 speedtest
curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh | bash
apt install speedtest-cli -y
speedtest

根據測速結果填頻寬值。

客戶端 bandwidth

mihomo 配置裡:

proxies:
  - name: "hy2-node"
    type: hysteria2
    server: 你的VPS_IP
    port: 443
    password: 你的密碼
    bandwidth:
      up: "50 mbps"    # 你家寬頻上行
      down: "200 mbps" # 你家寬頻下行

這裡填的是客戶端(你本地)的寬頻速度。

測你家寬頻速度:speedtest.net 或運營商測速頁面,取實測結果的 80% 填進去(留一點餘量)。

頻寬不匹配的後果

問題原因
速度只有 10-20 Mbps客戶端 bandwidth 沒填,用了預設值(很小)
速度忽快忽慢客戶端頻寬填超了實際值,擁塞控制頻繁觸發
下載快、上傳慢up/down 填反了

擁塞控制演算法:BBR vs Brutal

Hysteria2 支援兩種擁塞控制:

BBR(預設):Google 開發的 TCP 擁塞控制演算法,移植到 QUIC。會根據網路狀態動態調整傳送速率,保守但穩定。

Brutal:Hysteria2 自己開發的演算法,忽略網路擁塞訊號,按配置的目標頻寬強行傳送,類似"無腦狂推"。在丟包嚴重的網路裡效果很好,但會佔用更多頻寬資源。

什麼時候用 Brutal

  • 網路丟包率高(超過 5%)
  • 你的 VPS 線路走國際骨幹網,延遲高
  • 想要穩定在某個速度(比如穩定 50 Mbps),不在乎偶爾丟包

Brutal 配置

服務端 config.yaml:

quic:
  initStreamReceiveWindow: 26843545
  maxStreamReceiveWindow: 26843545
  initConnReceiveWindow: 67108864
  maxConnReceiveWindow: 67108864
  maxIdleTimeout: 30s
  keepAlivePeriod: 10s
  disablePathMTUDiscovery: false

bandwidth:
  up: 1 gbps
  down: 1 gbps

客戶端(mihomo)開啟 Brutal 模式:

proxies:
  - name: "hy2-brutal"
    type: hysteria2
    server: 你的VPS_IP
    port: 443
    password: 你的密碼
    brutal-opts:
      enabled: true
      up: 50         # Mbps,目標上行速度
      down: 200      # Mbps,目標下行速度

開了 Brutal 後,客戶端會強行以目標速度傳送,無論網路質量如何。

實際對比

我在廣州家寬測試,VPS 是 DMIT 香港(延遲約 25ms,輕微丟包):

配置下載速度上傳速度穩定性
BBR,無頻寬配置~15 Mbps~8 Mbps穩
BBR,正確配置頻寬~80 Mbps~40 Mbps穩
Brutal,目標 100M~95 Mbps~45 Mbps有抖動

結論:BBR + 正確的頻寬配置,通常已經足夠好。Brutal 適合特定場景(高丟包、想要穩定速度保障)。

QUIC 視窗大小調優

QUIC 的接收視窗大小影響最大併發吞吐,預設值在高頻寬環境下可能是瓶頸。

推薦配置(高速環境,如 100 Mbps+):

quic:
  initStreamReceiveWindow: 26843545    # 25.6 MB
  maxStreamReceiveWindow: 26843545
  initConnReceiveWindow: 67108864      # 64 MB
  maxConnReceiveWindow: 67108864

這些數字是經驗值,適合 100-500 Mbps 的場景。如果你的頻寬更高,可以繼續調大(建議不超過總 RAM 的 10%)。

MTU 調優

UDP/QUIC 的包大小影響效率,預設 MTU 對 VPN 場景不一定最優。

檢視當前網路介面的 MTU:

ip link show eth0
# MTU 通常是 1500

Hysteria2 的 QUIC 包在 MTU 1500 的網路裡,實際有效載荷約 1200-1350 位元組(扣除各層頭部)。

對於大多數場景,不需要手動調 MTU。只有在某些企業網路或特殊 ISP 裡,如果發現速度異常低且有大量分片,才需要嘗試降低 MTU:

# 客戶端 mihomo
proxies:
  - name: "hy2-node"
    type: hysteria2
    # ... 其他配置 ...
    # 部分客戶端支援設定 mtu
    mtu: 1200

埠選擇

Hysteria2 走 UDP,埠選擇影響被封機率:

埠型別代表被封風險
443HTTPS(偽裝)低,但 UDP 443 不常見
80HTTP(偽裝)中
隨機高階口(如 44563)無偽裝高(容易被掃到)

最佳實踐:用 443 或 853(DNS over QUIC),偽裝成正常協議。

# 服務端
listen: :443

# 偽裝成 HTTPS
masquerade:
  type: proxy
  proxy:
    url: https://www.bing.com
    rewriteHost: true

masquerade 配置讓普通 HTTPS 請求(非 Hysteria2 客戶端)打到這個埠時,返回 bing.com 的正常內容。

多節點負載均衡

如果你有多臺 VPS,可以配置 mihomo 的 load-balance 組同時使用多個 Hysteria2 節點:

proxy-groups:
  - name: "HY2 Balance"
    type: load-balance
    strategy: round-robin    # 輪詢,平均分配流量
    proxies:
      - hy2-us
      - hy2-hk
      - hy2-jp
    url: "http://www.gstatic.com/generate_204"
    interval: 300

或者用 fallback 模式(主節點掛了才切):

  - name: "HY2 Fallback"
    type: fallback
    proxies:
      - hy2-us      # 主節點
      - hy2-hk      # 備用
    url: "http://www.gstatic.com/generate_204"
    interval: 120

與 REALITY 的對比

選 Hysteria2 還是 REALITY,取決於你的網路環境:

場景推薦
延遲敏感(<30ms),穩定線路REALITY(低延遲,無額外開銷)
高丟包、不穩定線路Hysteria2(QUIC 重傳效率高)
行動網路(4G/5G)Hysteria2(QUIC 對行動網路更友好)
需要繞過 UDP 封鎖的網路REALITY(純 TCP)

→ 檢視 Hysteria2 搭建教程 → 檢視 Xray REALITY 服務端配置 → 檢視 VPS 選購指南


📷 封面圖 · Flux Schnell AI 生成 · panshi.io 品牌風格