Hysteria2とは?QUICベースの通信が速い理由と適したネットワーク環境

QUICと輻輳制御からHysteria2の速度の仕組みを解説。パケットロスや長距離通信での特性、UDPが制限されたネットワークでの注意点も紹介します。

この記事の要点

Hysteria2はQUICベースのプロキシプロトコルです。UDPが利用できる環境や、RTTが長い経路、ランダムなパケットロスが発生する回線で試す価値がありますが、ほかの通信方式より速いとは限りません。本記事ではShadowrocketを使うiPhone/iPadユーザーを対象に、利用者自身が用意したサービスと設定を前提として、通信の仕組み、設定値の確認、ルールによる振り分けのチェック、比較テストの方法を解説します。ほかのプラットフォームでも仕組みは参考になりますが、画面表示は各クライアントの実際の仕様をご確認ください。

1. Hysteria2、QUIC、UDPの関係

ShadowrocketのHysteria2は接続プロトコルの選択肢であり、速度を上げるスイッチでも接続プランでもありません。接続にはサーバー側が対応プロトコルを実装し、正しいアドレス、ポート、認証情報、証明書設定を提供している必要があります。既存の別プロトコルの接続は、Typeを変更するだけではHysteria2に切り替えられません。

通信階層で見ると、Hysteria2はQUICを使用し、QUICはUDPで通信します。UDP自体は順序どおりの配送やパケット再送を担いません。その上でQUICが暗号化、確認応答、損失検出、信頼性のあるストリーム、輻輳制御を実現します。そのため、「下位層がUDP」でも、Webコンテンツの欠落時に再送されないわけではなく、アプリのすべてのリクエストが信頼性のない通信になるわけでもありません。

UDP
QUICの下位層の通信には、使用するUDPポートがネットワークで許可されている必要があります
TLS 1.3
QUICには暗号化ハンドシェイクが組み込まれていますが、サーバー証明書の検証は必要です
443
一般的な構成例のポートです。実際の値はサーバー設定と一致させてください

Hysteria2はTCPとUDPのプロキシリクエストを転送できますが、両者のアプリケーション上の性質は異なります。Web通信などの信頼性が求められるバイトストリームはQUIC streamで転送されます。UDP転送には通常QUIC DATAGRAMが使われ、信頼性のあるストリームと同じ再送保証はありません。つまり、信頼性は接続名にUDPが含まれるかではなく、転送される通信の種類に応じて判断してください。

2. 速くなる可能性がある理由:独立したストリームと輻輳制御

速度は、ハンドシェイクにかかる時間、最初のデータを受信するまでの時間、継続的なスループットに分けて確認しましょう。QUICは通信と暗号化のハンドシェイクを統合し、接続確立時の往復を一部減らせます。ただし、ドメイン名の名前解決、証明書の検証、サーバー処理、接続先サイトの応答には時間がかかります。接続確立が速くても、大容量ファイルのダウンロードが速いとは限りません。

帯域幅の値は、単純に「大きいほど速い」とは限りません。たとえば、実際に安定して得られる下り速度が約50 Mbpsなのに、送信目標を500 Mbpsに設定すると、キューの増加や余分なパケットロス、遅延の上昇につながる可能性があります。数値は設定値の関係を示す例であり、本サイトでの測定結果ではありません。項目名、単位、自動ネゴシエーションの挙動は、使用中のクライアントとサーバーの説明で確認してください。

まとめ:スループットと遅延をあわせて確認

帯域幅の設定を上げてもダウンロード速度がほとんど変わらず、Webページの応答や音声の遅延、ほかの端末の通信が明らかに悪化した場合は、設定を元に戻し、回線で安定して利用できる帯域幅を再測定してください。

3. 適したネットワーク環境と、先に確認すべき症状

遅延が大きいとフィードバックの周期が長くなり、ランダムなパケットロスがあると輻輳制御によって送信速度が低下する場合があります。そのため、長距離でランダムなパケットロスがある一方、UDPが問題なく通るネットワークではHysteria2を試す価値があります。ただし、パケットロスの原因が重要です。無線干渉によるランダムなロスと、回線出口の混雑によるロスを同じように判断してはいけません。

ネットワーク条件考えられる症状最初に確認すること
長距離、ランダムなパケットロス継続的な通信は安定する可能性がありますが、短いリクエストはRTTの影響を受けます同じネットワーク、同じ時間帯で最初のデータ受信時間と継続的なスループットを比較する
低遅延、パケットロスが少ない差が小さい場合があります。ボトルネックがサーバーの外向き帯域にある可能性もあります安定した設定を維持し、プロトコル名だけで速度を判断しない
UDPがブロックされているハンドシェイクがタイムアウトする。TCPのWeb通信は使えてもHysteria2は接続できないサーバー側でUDPが許可されているか確認し、別のネットワークでも再テストする
UDPが速度制限されている接続できても継続通信が遅い、または時間が経つと速度が低下する通信事業者のネットワークポリシー、サーバー側の制限、無線の混雑を切り分ける
Path MTUの異常小さなリクエストは成功するが、大容量通信が止まる、または頻繁にタイムアウトするネットワーク管理者にUDPの大きなパケットとPath MTUを確認し、複数の設定値をむやみに変更しない

QUICの初期データグラムには、少なくとも1200バイトという要件があります。経路上で必要なサイズのUDPデータグラムを通せない場合、ハンドシェイクに影響することがあります。「Pingが通る」だけでは問題を否定できません。Pingで使うプロトコルやパケットサイズ、経路上のポリシーは、実際のQUIC接続とは異なります。

UDP 443とTCP 443は、別々に許可する必要があります。HTTPSでサーバーのWebページを開けても、関連するTCPサービスに到達できる可能性を示すだけで、UDP 443が開放されている証明にはなりません。サーバーが実際にUDP 8443を使用している場合は、クライアントにも8443を入力してください。ポートを443に変更するだけで接続できるようにはなりません。

4. Shadowrocketで既存の設定を確認してテストする

ここではiPhone/iPadのHome画面を例に説明します。まず現在使える設定を保存し、利用者自身が用意したHysteria2のパラメータを追加してください。既存のサブスクリプションで設定を管理している場合は、インポート結果を先に確認し、更新後に一時的な手動変更が有効なままだと誤認しないようにします。本記事では接続サービスやサブスクリプションの提供、販売、推奨は行いません。

  1. 設定値を確認

    サーバーアドレス、UDPポート、認証パスワード、サーバー指定のSNI、必要に応じて混淆パラメータを用意します。ポートは実際の構成に合わせてください。証明書のドメイン名と接続先アドレスが異なる場合でも、証明書の検証条件を満たす必要があります。

  2. 接続を追加

    Home → 右上の「+」→ Typeを開き、Hysteria2を選択して、手元にある設定値を入力して保存します。すでにサブスクリプションを利用している場合は、Home →「+」→ Type → Subscribeから自分のサブスクリプションを読み込み、作成された項目のプロトコルとポートを確認してください。

  3. 証明書を確認

    サーバー指定の値に従ってSNIと証明書のドメイン名を確認し、端末の日付と時刻も正しいことを確認します。証明書の検証エラーが出た場合は、まずドメイン名、有効期限、証明書チェーンを確認してください。検証を無効にすることを通常の解決策にしないでください。

  4. ルールの影響を切り分ける

    Homeでテストする接続を選び、一時的にGlobal RoutingをProxyに設定してから、画面上部の接続スイッチをオンにします。テストが許可された固定の接続先にリクエストを送ってください。テスト後はGlobal Routingを元の設定に戻します。

  5. テスト条件を固定

    接続中のWi-Fiまたはモバイル回線、テストした時間帯、発生した症状を記録します。Settings → On Demandが有効な場合は、自動接続が手動の切断や切り替えに影響しないことを先に確認してください。テスト後は元の設定に戻します。

HomeのConnectivity Testでは、接続先への到達性や遅延を簡易的に確認できますが、継続的なダウンロード、Webページの最初のデータ受信、リアルタイム通信のテストには代わりません。遅延の数値が小さくても、そのテスト経路の応答状況を示すだけです。すべてのWebサイトが同じ接続を経由していることや、スループットが高いことの証明にはなりません。

5. Global Routingとルールがテストに与える影響

Hysteria2は選択したプロキシ接続の通信方式を決め、Global Routingはリクエストがどの経路を使うかを決めます。テスト対象のリクエストがルールによってDIRECTに振り分けられている場合、HomeでHysteria2の項目を選んでいても、そのリクエストの速度でHysteria2を評価することはできません。まずリクエストがどの経路を使ったかを確認してから、プロトコルの挙動を比較してください。

Config

推奨

現在の設定にあるルールに従ってリクエストの経路を決めます。設定内容を確認してから普段の接続に使い、ルールのマッチ結果でテスト対象がPROXYを通っていることを確かめてください。

適した用途:普段のルール振り分け、特定のルールへのマッチ確認

Proxy

クライアントが処理するリクエストをプロキシ経由にし、一時的にルール振り分けの影響を減らします。接続できない場合は、プロトコルの設定値とネットワークの到達性も確認してください。

適した用途:短時間ルールの影響を切り分け、選択した接続を確認

Direct

選択したプロキシ接続を経由せず、直接接続します。接続先への直接接続が許可されている場合は基準値の測定に使えますが、直接接続の結果はプロキシサーバーから接続先までの経路品質を示すものではありません。

適した用途:ローカルネットワークから接続先への直接接続を基準として確認

たとえばConfigで現在の設定を開き、次のRuleを使うと、example.comとそのサブドメインはPROXYに、指定したプライベートアドレス範囲はDIRECTに振り分けられ、それ以外のリクエストはFINALで処理されます。これはルール構文の例であり、利用可能なサーバーは含まれません。PROXYの実際の出口は、現在選択している接続もあわせて確認してください。

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

ルールは記述順に照合され、FINALは末尾に置きます。この例ではサフィックス照合の説明にexample.comを使っています。速度テストの接続先には使わないでください。自分の業務ドメインを確認する場合は、既存ルールを理解したうえで該当条件を変更し、正しい設定を保存して有効にします。設定が有効になっていない場合やGlobal RoutingがDirectのままの場合、ルールを編集しても期待どおりには動作しません。

6. 再現性のある比較テストを行う方法

信頼できる比較をするには、変更する条件をできるだけ1つに絞ります。サーバーが異なると、設置地域、出口、負荷、回線が大きく異なる場合があります。異なるサーバーでのダウンロード結果を、そのままプロトコルの違いによるものとすることはできません。同じサーバー、近い時間帯、同じ接続先、同じ端末での結果を優先して比較してください。条件をそろえられない場合は、「今回の2つの接続での結果」として結論を限定します。

まとめ:まず接続を確立し、その後に速度を比較

ハンドシェイクがタイムアウトする場合はUDPの到達性を、証明書エラーの場合はSNIと証明書を先に確認します。接続できたら、継続的なスループットと遅延を測定してください。繰り返しのテストで実際の通信が安定して改善した場合に限り、現在のHysteria2設定を使い続ける意味があります。

Hysteria2を利用する条件は、サーバー設定が正しいこと、UDP経路が使えること、送信方式が回線容量に合っていることです。パケットロスや遅延の影響を受ける通信を改善できる場合はありますが、誤ったパスワード、期限切れの証明書、遮断されたネットワーク経路を解決するものではありません。詳しい設定構文はルールリファレンスをご覧ください。初回接続やVPN構成の権限は、クイックスタートに沿って確認できます。

Shadowrocketを全プラットフォーム向けにダウンロード