Hysteria2は、UDPで通信でき、ランダムなパケットロスや遅延の変動があるネットワークで比較テストする価値がありますが、常に速くなるとは限りません。本記事は、サーバー設定やサブスクリプションをすでにお持ちのShadowrocketユーザー向けに、通信の仕組み、Homeでの入力手順、Global Routingでの確認方法、トラブルの切り分け方を解説します。iPhone、iPad、Mac、Windows、Android、Linuxで共通する仕組みを扱います。操作時はクライアントに表示される項目を確認してください。
Hysteria2とQUIC:通信レイヤーとプロキシプロトコルの違い
Hysteria2はQUICをベースとするプロキシプロトコルです。QUICは通常UDP上で動作し、TLS 1.3で暗号化接続を確立します。UDPはデータグラムを送る仕組みで、到達や順序を保証しません。その上でQUICが接続管理、信頼性のあるストリーム、損失検出、輻輳制御を実装します。したがって「UDPを使う」ことは、「すべてのデータが再送されない」ことでも「帯域制限を回避できる」ことでもありません。
プロキシ経由のTCP接続では、Hysteria2はQUICの信頼性のあるストリームでデータを運びます。UDP転送ではデータグラム方式を使うため、信頼性のあるストリームの再送特性をすべてのUDPデータに当てはめることはできません。アプリがパケットロスを許容できるかは、そのアプリ自身のプロトコルによります。同じサーバーを使っていても、Web通信とリアルタイム音声では異なる不具合が起こる場合があります。
サーバーがUDP 443を使う設定の場合、ネットワークでTCP 443だけが許可されていても接続できません。ポート番号が同じでも、通信プロトコルは異なります。入力時はユーザーがすでにお持ちの設定に記載されたポートを使ってください。「443がよく使われる」からといって元の値を変更したり、別プロトコルのアドレス、パスワード、ポートをそのまま組み合わせたりしないでください。
速くなることがある理由:独立したストリーム、輻輳制御、パケットロスからの復旧
QUICの特徴のひとつは、ストリームが互いに独立していることです。あるストリームでデータが失われても、そのデータが補われるまで待つために、他のストリームへのデータ配信まで止まるとは限りません。これによりストリーム間のヘッドオブラインブロッキングは軽減されますが、同じ信頼性のあるストリーム内で順序待ちがなくなるわけではありません。複数のストリームは回線容量を共有し、通常は接続単位の輻輳制御も共有します。したがって「パケットロスが速度に影響しない」とは言えません。
| 仕組み | 期待できる効果 | 残る制約 |
|---|---|---|
| QUICの独立ストリーム | 異なるストリーム間で、順序どおりに届けるための待ち時間を減らす | 同じストリーム内でデータが失われると、復旧を待つ場合がある |
| 損失の検出と復旧 | 確認応答をもとに、信頼性のあるストリームで欠落したデータを復旧する | 復旧には時間と追加の通信が必要で、物理的なパケットロス自体はなくならない |
| 輻輳制御 | 送信のペースを調整し、ランダムなパケットロスがある環境でのスループットに影響する | 設定が過度に強いと、キューの増加やパケットロス、他のアプリの遅延につながることがある |
| TLSハンドシェイクの統合 | 通信レイヤーと暗号化レイヤーで別々に交渉する際のオーバーヘッドを減らす | 初回接続ではハンドシェイクが必要で、待ち時間がゼロになるわけではない |
Hysteria2のスループットは、輻輳制御の方式にも左右されます。Brutalは目標帯域とフィードバックをもとに送信動作を調整し、ランダムなパケットロスがある回線では、保守的に速度を落とす方式よりスループットを維持しやすい場合があります。この方式を使うかどうか、帯域の設定値がどのように交渉に使われるかは、クライアントの実装、サーバー側の方針、実際の設定によって異なります。効果のすべてをQUICによるものと見なしたり、目標帯域を実際に利用できる帯域と同一視したりしないでください。
画面にUploadやDownloadなどの帯域項目がある場合は、まず既存の設定、またはサービス提供元が明示した値を使い、単位を確認してください。MbpsとMB/sは異なり、数値では8 Mbpsが約1 MB/sに相当します。実際の転送量はプロトコルのオーバーヘッド分だけ少なくなります。接続回線の能力を大幅に超える値を設定すると、ルーターのキューが長くなり、ダウンロード中に通話の遅延が大きくなることがあります。
結論:設定値は維持し、変更はひとつずつテストする
初回の確認では、帯域、DNS、ルールを同時に変更しないでください。まず既存の設定で接続できることを確認し、その後、項目をひとつずつ変更して、スループットと応答遅延の両方に改善があるか記録します。
適したネットワーク:ランダムなパケットロスでは効果が期待できるが、UDPに制限がある場合は到達性を確認
モバイル回線の無線干渉、地域間回線の揺らぎ、アクセスポイントの負荷変動は、通信に影響することがあります。Hysteria2はこうした環境の一部でテストする価値がありますが、「モバイル回線なら速い」という保証はありません。サーバーの出口、接続先のWebサイト、無線電波の状態、ローカル回線の上り通信も、プロトコルの選択とは関係なくボトルネックになります。
- ランダムなパケットロスがあるが、UDPは到達可能:ダウンロード中に速度が頻繁に落ちないか、リクエストへの応答が保たれるかを確認します。ピーク速度だけで判断せず、アイドル時と負荷時の遅延も記録してください。
- 遅延が大きく、回線容量も大きい:送信制御と損失復旧は帯域の利用効率に影響しますが、サーバーから接続先までの回線が遅ければ、結果は制限されます。
- 遅延が小さく、パケットロスも少ない:目立った違いを感じられない場合があります。特定のプロトコル名にこだわるより、設定をシンプルに保ち、証明書を正しく検証することが大切です。
- UDPが遮断または継続的に速度制限されている:ハンドシェイクのタイムアウトや、接続直後に通信が止まる現象が起きることがあります。まずネットワークの制限を確認し、帯域の設定値をむやみに引き上げないでください。
- Wi-Fiとモバイル回線の切り替え:接続状態を改めて確認してください。QUICには接続移行に関する機能がありますが、通信が途切れないかは実装やネットワーク条件によって異なります。切り替え時も通信が必ず継続するとは限りません。
Shadowrocketの設定手順:手元にあるHysteria2の設定を使う
以下ではHomeから手動で追加する手順を説明します。サーバーアドレス、ポート、認証パスワード、TLS用のSNI、サーバーから指定されたその他の設定を用意してください。AddressとSNIは異なる場合があります。Addressは接続先を指定し、SNIはTLSハンドシェイクでサーバー名を通知します。証明書の名前も設定に合致している必要があります。
-
設定元を確認
手元にあるサーバー設定の説明を開き、プロトコルがHysteria2であることを確認します。HysteriaとHysteria2は互換性のあるTypeとしてそのまま置き換えられるものではありません。また、別のプロトコルの認証項目を混用しないでください。
-
Typeを選択
Home → 右上の「+」→ TypeでHysteria2を選び、追加画面に戻ります。実際の画面にこの項目がない場合は、まず本サイトのダウンロードページで、使用中のプラットフォーム向けの入手先を確認してください。似た名前の項目で代用しないでください。
-
接続情報を入力
手元にある設定に従ってAddress、Port、Passwordを入力します。Addressには項目で指定されたサーバーアドレスだけを入力し、Portには指定された数値を使ってください。共有用の文字列全体をアドレス欄に貼り付けたり、余分な空白を加えたりしないでください。
-
セキュリティを確認
設定に従ってSNIを入力し、証明書の検証は有効のままにします。手元の設定に混淆や帯域の指定が含まれている場合は、クライアント上の対応項目を確認してから入力してください。指定のない任意項目に推測で値を設定しないでください。
-
保存してテスト
保存後、Homeに戻って追加したサーバーを選び、Global Routingの現在のモードを確認します。接続を有効にし、システムの案内に従って許可してください。まず利用可能と分かっている接続先にアクセスし、その後、継続的なデータ転送をテストします。
すでにサブスクリプションをお持ちの場合は、Home →「+」→ Type → Subscribeから自分のサブスクリプションURLを追加できます。保存後に内容を更新し、読み込まれた項目のプロトコルタイプを確認してください。更新によって、管理対象の項目のポート、認証情報、その他の設定が書き換わる場合があります。変更を長期的に維持する必要がある場合は、その項目がサブスクリプション管理下にあるか先に確認し、一時的なローカル変更が永続すると誤認しないようにしてください。
証明書エラーが表示された場合は、SNI、サーバー証明書の有効期間、証明書チェーン、端末の時刻を確認してください。検証を無効にすると相手の正当性を確認する保護が変わるため、通常の修復手順ではありません。認証エラーの場合は、Passwordが正しくコピーされているか、サーバーがその認証情報を引き続き受け付けているかを優先して確認してください。認証の問題をQUICのパケットロスのせいにしないでください。
Global Routingでの確認:プロトコルの問題とルールの不一致を切り分ける
サーバー設定が正しくても、すべてのリクエストがそのサーバーを使うとは限りません。ShadowrocketのGlobal Routingでルーティング方式を選びます。Configでは現在の設定にあるルールが適用され、Proxyは一時的に切り分ける際に使えます。モードが影響するのはクライアントが処理する通信です。端末上のすべてのシステム通信が同じ経路を通る証拠にはなりません。
Config
おすすめ現在選択中のConfigを使い、ルールとその順序に従ってDIRECT、PROXYなど定義済みのポリシーを適用します。リクエストの経路を決めるのはルールで、プロキシ接続の通信方式を決めるのがHysteria2です。
適した用途:明確なルールに基づく日常的な振り分けや継続利用
Proxy
クライアントが処理するリクエストをプロキシモードで送信します。通常のルール判定による影響を一時的に除外できます。テスト後は元のモードに戻してください。一時テストの結果を、元の設定が正しい証拠と見なさないでください。
適した用途:選択したサーバーが対象のリクエストを処理できるか確認する
Direct
クライアントが処理するリクエストを直接接続で送信します。この状態ではHysteria2サーバーのスループットをテストできません。同じ接続先に対する、現在のネットワークでの直接接続の比較基準として使えます。
適した用途:接続先とローカル回線が利用可能か確認する
Global RoutingのSceneは、シーンに応じたルーティング設定に使うもので、Config、Proxy、Directのいずれかと同じ固定結果を意味するものではありません。切り分ける際は、実際に適用されている設定を先に確認してください。また、Settings → On Demandの状態も記録し、テスト中にオンデマンド接続が再実行されて「切断したのに再接続した」と誤認しないようにします。
Configでは通常、ルールを上から順に確認し、最初に一致したルールのポリシーが適用されます。以下はDOMAIN-SUFFIXとFINALの構文例であり、そのまま読み込める完全な設定ではありません。example.comは説明用ドメインで、本記事が提供するサーバーではありません。実際の設定では、指定するポリシー名が存在している必要があります。
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT
対象ドメインが最初のルールに一致しなければ、FINAL,DIRECTが適用されます。その場合、アクセスの成否だけでHysteria2の状態を判断することはできません。ほかの設定では、IPアドレスの判定にGEOIPやIP-CIDRを使う場合もあります。ドメイン名の解決が関わるときは、DNSの結果もその後の判定に影響することがあります。設定値は設定リファレンス、ルーティング方式はプロキシモードの説明をご覧ください。
トラブルの切り分けと比較記録:一度に変更する条件はひとつだけ
テスト前に、ネットワークの種類、選択中のサーバー、Global Routing、接続先サイト、テスト時間を記録します。接続先とサーバーを固定し、Wi-Fiとモバイル回線でそれぞれ確認してください。異なるプロトコルを比較する場合は、すでに利用している設定のうち、サーバー条件を比較できるものだけを使います。サーバーが異なる場合の速度差を、プロトコルの違いだけに帰属させることはできません。
| 確認された現象 | まず確認する項目 | 次の操作 |
|---|---|---|
| 接続中にタイムアウトが続く | サーバーアドレス、UDPポート、ネットワークでの通信許可 | Portを確認し、別の接続ネットワークでもテストする |
| 証明書エラーが明示される | SNI、証明書名、有効期間、端末の時刻 | 該当項目を修正するか、利用中のサービス提供元にサーバー証明書を確認する |
| 認証に失敗する | Password、項目の有効期限、サブスクリプションの更新状況 | 手元の設定をもう一度確認し、認証の切り分けをDNSの変更で代用しない |
| Proxyでは使えるが、Configでは使えない | 現在のConfig、ルールの順序、ポリシーの対象、DNS | サーバーをすぐに作り直すのではなく、対象のリクエストに適用されたポリシーを確認する |
| ダウンロード中に他の通信が明らかに遅くなる | 上り回線の使用状況、キューの滞留、帯域の設定値が高すぎないか | 並行するデータ転送を一時停止し、帯域の設定値をひとつずつ控えめに調整する |
| サブスクリプション更新後に設定値が変わった | 管理対象の項目と上流の設定 | 更新内容を確認し、上書きされる項目を繰り返し編集しない |
- 再現性のあるテスト:条件ごとに3回続けてテストし、接続の成否、応答が始まるまでの時間、継続的なデータ転送が中断するかを記録します。最速の1回だけでなく、中央値を比較の基準にしてください。
- 負荷条件をそろえる:比較中はシステムアップデートや大容量通信を一時停止してください。速度測定の結果は接続先の速度制限にも左右されるため、回線容量を判断する唯一の根拠にはなりません。
- 問題の箇所を切り分ける:ハンドシェイクの失敗、認証エラー、ルールの不一致、接続先サイトの障害はそれぞれ異なる問題です。個別に記録し、すべてを「プロトコルが遅い」とまとめないでください。
- 設定情報を保護する:利用中のサービス提供元に問い合わせる際は、エラーの種類やネットワーク環境を伝えられます。公開する記録にはパスワード、サブスクリプションURL、サーバーを特定できる情報を含めないでください。
Shadowrocketのダウンロードと初期設定
iPhone / iPad版はApp Storeから入手でき、価格は2.99ドルの買い切りです。Mac(Appleシリコン / Intel)、Windows、Android、Linux版は無料です。iPhone / iPadのシステム要件はApp Storeの製品ページをご確認ください。製品ページに記載されている開発者はShadow Launch Technology Limitedです。ダウンロードページで該当するプラットフォームを選び、チュートリアルに沿って手元にある設定を読み込んでください。