Hysteria2とは?QUICベースの仕組みと弱いネットワークでの速度・利用シーン

Hysteria2のQUICと輻輳制御の仕組み、高パケットロス時の挙動、UDP制限の影響、Shadowrocketでの設定ポイントを解説します。

この記事の要点

Hysteria2は、ランダムなパケットロスが発生する接続で改善が期待できる場合があります。ただし、UDPが通ること、サーバー設定が正しいこと、帯域設定が実際の回線に合っていることが前提です。サービスやサブスクリプションをすでに利用しているShadowrocketユーザー向けに、QUICと輻輳制御の役割、設定項目の確認方法、条件をそろえたテストによる適性の見極め方を解説します。プロトコル名だけで速度を保証するものではありません。

Hysteria2とQUIC:不安定なネットワークで効果が期待できる理由

Hysteria2はQUICベースのプロキシプロトコルです。QUICはUDPを使ってデータを運び、暗号化、信頼性の高い転送、パケットロスからの回復、複数ストリームなどの仕組みを提供します。そのため、「UDPを使う」ことは「データが失われても処理しない」という意味ではなく、アプリ内のすべてのリクエストが信頼性のない転送になるわけでもありません。Hysteria2はTCP接続とUDPデータを中継できますが、クライアントからサーバーまでの基盤となる通信にはUDPを使います。

不安定なネットワークでの挙動を理解するには、遅延、パケットロス、輻輳を分けて考える必要があります。遅延はデータの往復にかかる時間、パケットロスは一部のデータが正常に届かない状態、輻輳は回線やキューが流入する通信をすぐに処理できない状態です。無線信号の変動によるランダムなパケットロスは、回線がすでに飽和していることを必ずしも意味しません。パケットロスのたびに送信側が速度を大きく落とすと、まだ余力のある回線でもスループットが低下することがあります。

UDP
クライアントからHysteria2サーバーまでの基盤となる通信
TLS 1.3
QUICが採用するハンドシェイクとセキュリティの仕組み
443 / UDP
設定可能なサーバーポートの例であり、固定要件ではありません

Hysteria2は、帯域の推定値に基づくBrutal輻輳制御に対応する設計です。一方で、自動ネゴシエーションやサーバー側の制限なども挙動に影響します。一定のパケットロスがある状況でも利用可能な帯域を活用することを目指しており、すべてのパケットロスを輻輳とみなすわけではありません。実際の挙動はクライアントのパラメーター、実装、サーバー設定によって異なるため、項目名だけから判断することはできません。

試す価値のあるネットワークと、先に確認すべき状況

「不安定なネットワーク」は単一の障害ではありません。モバイル回線の電波変動、公共Wi-Fiの混雑、異なるネットワーク間の経路で起きるパケットロスは似た症状に見えても、対処の順序は異なります。UDPに到達でき、利用可能な帯域が残っている一方でランダムなパケットロスが発生する環境では、Hysteria2を試す価値があります。UDPが遮断されている場合、輻輳パラメーターを調整しても接続確立の問題は通常解決しません。

確認された症状 考えられる制限要因 次に行うこと
Wi-Fiではタイムアウトするが、モバイル回線では同じプロファイルが使える 現在のWi-FiにおけるUDPポリシーまたは通信経路の違い プロファイルは変更せず、ネットワークを切り替えて再テストします。UDPが通るかどうか、ネットワーク管理者にも確認してください。
短いリクエストは完了するが、長時間の転送が大きく変動する 継続的な速度制限、輻輳、または過大な帯域推定値 同時接続数を減らし、帯域パラメーターを確認してから、同じリソースを再テストします。
すべてのネットワークでハンドシェイクに失敗する アドレス、ポート、TLS、またはサーバーの状態に問題がある ルールは先に変更せず、サービス提供元の指定パラメーターを一つずつ確認します。
ウェブページは開くが、動画はバッファリングする スループット、接続先までの経路、またはサーバー容量が不足している 継続的なデータ転送の状況を記録し、遅延の数値だけで判断しないでください。

UDP 443とTCP 443は異なる通信エンドポイントです。通常のHTTPSページを開けるネットワークでも、UDP 443が許可されているとは限りません。ポートに443を入力しても、自動的に通信が許可されるわけではありません。ポートはサーバーで実際に待ち受けている設定と一致させてください。「よく使われるポートだから安心」と考えて独自に変更しないでください。

Shadowrocketでの追加:サーバーパラメーターを先に確認

以下の手順は、すでに利用可能なサービスがあることを前提としています。サブスクリプションのURLや手入力するパラメーターは、利用中のサービス提供元から取得してください。Hysteria2はサーバーアドレスだけでは接続できません。また、別のプロトコルのプロファイルで種類だけをHysteria2に変更しても使えません。サービス提供元が案内するパラメーター一式をそのまま使い、手入力する場合は項目ごとに照合してください。推測で値を入力しないでください。

  1. 既存のプロファイルを残す

    Homeで現在利用できるプロファイルとGlobal Routingの選択内容を記録します。既存の設定を上書きせず、新しいテスト用プロファイルを追加してください。テストに失敗した場合も比較対象を残せます。

  2. プロトコルを選択

    Homeを開き、右上の「+」→ Add Serverをタップしてサーバーを追加し、TypeでHysteria2を選択します。サブスクリプションを読み込む場合は、TypeでSubscribeを選択し、サービス提供元から取得した完全なURLを入力します。

  3. パラメーターを入力

    Address、Port、認証情報を確認します。TLSのサーバー名、証明書の検証要件、任意の難読化パラメーターはサーバー側の設定と一致させてください。以前のプロトコルで使っていたパスワードをそのまま流用しないでください。

  4. 接続を確認

    保存後、Homeに戻ってプロファイルを選択し、Global RoutingがDirectのままになっていないことを確認します。接続スイッチをオンにしてください。システムのVPN構成を初めて作成する際は、画面の案内に従って許可します。

  5. 条件をそろえてテスト

    まず同じネットワークから同じウェブページを開き、その後、継続的なデータ転送をテストします。失敗した場合は一度に一つのパラメーターだけを変更し、変更内容と結果を記録してください。ルーティング、DNS、認証情報を同時に変更しないでください。

選択した種類やアプリの画面に応じて、表示される項目は変わります。表示されない詳細設定を独自に追加する必要はありません。読み込みに成功しても、サーバーに到達できるとは限りません。サブスクリプションの更新やプロファイルの管理については、Subscribe サブスクリプションガイドもご覧ください。

確認項目 確認する内容 よくある誤解
Address / Port ドメインまたはアドレスとUDPの待ち受けポートが、サーバー側の設定と一致していること。 例として示されたポート443を、すべてのサービスで使う固定ポートだと思い込む。
認証情報 認証文字列と特殊文字を省略せず、そのまま保持する。 コピー時に空白が混入したり、文字列の末尾が欠けたりする。
TLS / SNI サーバー名が証明書の検証条件と一致していること。 証明書の検証を無効にすることを、通常の解決策として扱う。
難読化パラメーター サーバー側で必要な場合に限って有効にし、対応する種類とパスワードを設定する。 難読化を独自に有効にすれば、どのサーバーでも認識されると思い込む。
帯域パラメーター 単位、上り・下りの方向、サービス提供元の指定を確認する。 値を大きく設定すれば、実際に利用できる帯域も増えると思い込む。

Global Routingと帯域:それぞれの役割

Global Routingは通信に適用するルーティング方式を決め、Hysteria2は選択したプロキシ接続のプロトコルを決めます。両者は異なる階層の設定です。プロファイルを正しく選んでも、対象のリクエストが実際にはDirectで接続されているなら、そのウェブページの表示からHysteria2を評価することはできません。ここでは、切り分けによく使う3つのルーティングモードを比較します。すべての選択肢を網羅するものではありません。

Config

推奨

現在有効な設定のルールに従って、リクエストの接続先を決めます。普段使う前に設定内容を確認してください。テスト時には、対象のリクエストが想定したプロキシポリシーに一致していることを確認します。

適した用途:振り分けルールが明確な設定を使った日常利用

Proxy

このルーティングモードの対象となるリクエストにプロキシ経由の接続を適用します。設定ルールによる影響を抑えてテストできますが、端末のすべてのシステム通信がプロキシ経由になるとは限りません。

適した用途:対象のリクエストがルールによってプロキシを迂回しているかを短時間で確認

Direct

直接接続を使うため、選択中のHysteria2プロキシの性能確認には使いません。同じ対象へのローカルネットワークからの接続を比較する目的では利用できます。

適した用途:対象リソースの直接接続時の状態を確認

まとめ:経路を確認してから速度を調整

まず、テスト対象のリクエストが選択中のHysteria2プロファイルを経由していることを確認します。経路とパラメーターが正しい場合に限り、帯域の推定値を調整してスループットを比較します。

手動で設定する帯域値は送信方針に使われる入力値であり、ネットワークの容量を増やす申請ではありません。実際に利用できる帯域を大きく上回る値を設定すると、キューが詰まり、ウェブページの応答が遅くなる、音声が途切れる、スループットが変動するといった症状が出ることがあります。契約プランに記載された最大値をそのまま使うのではなく、現在の回線で継続して利用できる容量とサーバー側の要件に合わせて設定してください。

再テストの方法:遅延、スループット、安定性を分けて確認

一度の遅延テストでわかるのは、特定の測定結果に限られます。ウェブページ、動画、ファイル転送の使い心地全体を示すものではありません。Hysteria2の利点は、該当するネットワーク条件で検証する必要があります。実在しない測定結果を示したり、「パケットロスが一定割合に達すれば必ず速くなる」といった基準を設けたりはしません。

  1. 条件を統一:同じ端末、同じネットワーク、近い時間帯でテストし、他の大容量通信は停止します。異なるウェブサイト同士を比べず、同じ対象リソースを使ってください。
  2. 項目ごとに観察:ページの初回応答、継続的な転送が途切れるか、転送中に他の小さなリクエストが大幅に遅くなるかを記録します。遅延の数値だけを保存しないでください。
  3. 3回繰り返す:毎回同じ手順で行い、成功・失敗や停止の有無を記録します。3回という回数は再確認しやすくするための目安であり、統計的な結論を示すものではありません。
  4. 一度に一つだけ変更:各回で変更する要因は、ネットワークや帯域パラメーターなど一つに絞ります。プロファイルとサーバーを同時に変更すると、差がプロトコルによるものか判断できません。
  5. 普段の設定に戻す:切り分けが終わったら、元のルーティングと設定に戻します。継続的なスループットが改善しても操作への応答が明らかに悪化する場合は、ピーク値が高い結果だけを残さず、パラメーターを元に戻してください。

よくある質問:UDP、証明書、自動接続

通常のウェブページは開くのに、Hysteria2がタイムアウトするのはなぜですか?

通常のウェブページはTCPを使っている場合がありますが、Hysteria2の基盤となる通信にはUDPが必要です。プロファイルを変更せず、Wi-Fiとモバイル回線の両方でテストしてください。そのうえでサーバーのUDPポートと認証パラメーターを確認します。一方のネットワークだけで失敗する場合は、そのネットワークにおけるUDPの扱いを優先して確認してください。

証明書エラーが出た場合、検証をそのままスキップしてもよいですか?

まず端末の日付と時刻を確認し、次にAddress、TLSサーバー名、サービス提供元が指定する証明書要件を確認します。検証をスキップする設定を標準にしないでください。パラメーターが正しくてもエラーが続く場合は、サーバー証明書とサーバー名が一致しているか、サービス提供元に確認してください。

Hysteria2を使うにはOn Demandを有効にする必要がありますか?

必要ありません。Settings → On Demandは接続を自動的に開始する条件を設定する機能で、プロトコルのパラメーターやUDPへの到達性を修正するものではありません。手動接続のテストに成功した後、実際のネットワーク利用に合わせてOn Demandを設定してください。

サブスクリプション更新後にプロファイルが表示されれば、必ず接続できますか?

いいえ。Subscribeの更新に成功したことが示すのは、そのときに該当する内容を取得して解析できたということだけです。Homeに戻ってプロファイルを選び、Global Routingを確認してから実際のリクエストをテストしてください。プロファイルの期限切れ、認証情報の変更、サーバーの障害は、それぞれ別に確認する必要があります。

Hysteria2を選ぶかどうかは、現在のネットワークで再現できる安定性を基準に判断してください。プロトコル名だけで決めないことが大切です。UDPの制限が続く場合や、条件をそろえて再テストしても改善しない場合は、利用可能な設定を維持し、現在のサービスが対応する接続パラメーターとネットワーク要件をサービス提供元に確認してください。

App Storeで正規アプリを確認