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

Hysteria2のQUIC・UDP通信と輻輳制御を解説。パケットロスやモバイル回線での利用条件、設定時の注意点も紹介します。

この記事の概要

Hysteria2はQUICベースのプロキシプロトコルです。UDPが利用できる経路、正しいサーバー設定、適切な帯域設定がそろえば、高遅延やパケットロスのある一部のネットワークで通信性能が改善する場合があります。この記事では、自分で接続パラメータを用意しているShadowrocketユーザー向けに、通信の仕組み、利用条件、設定の確認方法、再現可能なトラブルシューティング手順を解説します。プロトコル名だけで速度が保証されるわけではありません。

Hysteria2、QUIC、UDPの役割

ShadowrocketでHysteria2は、すでに利用しているサービスに接続するためのプロトコルの一つです。ネットワーク回線そのものでも、サブスクリプションそのものでもありません。サブスクリプションはクライアントに接続先の項目を提供し、プロトコルはクライアントとサーバー間の認証・通信方法を定めます。実際の通信品質は、利用中のネットワーク、サーバーの負荷、接続先のサイトにも左右されます。

通信経路は3つの層に分けて考えられます。最下層ではUDPがデータグラムを運び、その上でQUICが暗号化接続やストリーム、信頼性のある転送機能を実現し、さらにHysteria2がプロキシの認証とデータのカプセル化を定めます。UDP自体にデータの到達保証はありませんが、UDP上で動作するQUICの信頼性のあるストリームが再送しないという意味ではありません。Web閲覧など信頼性が必要な通信では、失われたデータの復旧を待つ必要があります。

UDP
Hysteria2の通信経路ではUDPが利用できる必要がある
TLS 1.3
QUICに組み込まれた暗号化ハンドシェイク
443/UDP
ポート番号の例であり、すべてのサービスで固定ではありません

たとえば、サービス提供元から指定されたポートが443なら、対応するUDPポートに到達できるかを確認します。同じ番号のTCPポートに接続できても、UDPも通過できるとは限りません。ポートには利用中のサービスで指定された値を設定してください。よくある例が443だからといって、ほかの有効なポートを一律に443へ変更しないでください。

「速い」の仕組み:輻輳制御とストリーム分離

QUICは1つの接続で複数のストリームを扱えます。あるストリームでデータが失われても、TCPの単一のバイトストリームのように、欠けたデータが届くまで別のストリームのデータを渡せないという状況を通常は避けられます。これによりストリーム間のヘッドオブラインブロッキングは軽減されますが、同じ信頼性のあるストリーム内で欠落があれば復旧が必要です。また、すべてのストリームが実際の回線容量と輻輳の制約を共有します。

Hysteria2の通信性能は輻輳制御にも左右されます。帯域設定が送信速度の制御に使われる場合があります。帯域を基準にするBrutalと、経路の容量を自動推定する方式は異なる考え方です。どの方式が使われるかは、クライアントの実装や設定、サーバーとのネゴシエーションによります。プロトコル名だけを見て、現在の接続が特定のアルゴリズムを使っていると判断することはできません。

結論:到達性を確認してから速度を調整

UDP経路への安定した接続、認証の成功、対象リクエストが実際にその接続を通ることを確認してから、帯域設定を比較してください。数値を上げてWebページの表示待ちが長くなった場合は、さらに値を上げず、元に戻してください。

帯域を入力する際は単位にも注意してください。Mbpsは毎秒メガビット、MB/sは毎秒メガバイトを表し、数値の換算には8倍の差があります。契約上の最大帯域が高くても、実際に利用できる容量は無線の電波状況や共有回線の出口によって低くなることがあります。クライアントの項目に表示される単位と、利用中のサービスの案内を確認してください。契約上の上限を現在の実測速度とみなさないでください。

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

パケットロスが多い環境、長距離の経路、モバイル回線は、実際に測定して判断すべき条件であり、自動的に適しているという意味ではありません。まず利用中のネットワークでUDPが使えることを確認し、ランダムなパケットロス、輻輳によるパケットロス、サーバー側の異常を切り分けてください。いずれも通信の途切れとして現れることがありますが、対処方法は異なります。

ネットワーク条件確認できること最初に行うこと
高遅延・断続的なパケットロス連続したリクエストが完了するか、継続的な通信が頻繁に止まるか接続先とサーバーを固定して繰り返しテストし、1回の遅延だけで判断しない
Wi-Fiとモバイル回線の切り替え切り替え後に実行中のリクエストが復旧するか、新しいリクエストが成功するか切り替え前後の結果をそれぞれ記録し、必要に応じて接続を再確立する
UDPが制限されているネットワークほかのネットワークでは使えるのに、現在のネットワークではハンドシェイクが継続的にタイムアウトするネットワークの利用条件を確認し、UDPが使えるネットワークに切り替えて再確認する
低遅延・低パケットロスのネットワークWebページの応答と継続的な通信がすでに安定しているか安定している設定を維持し、プロトコル名だけを理由に設定を何度も変更しない
共有回線の出口が輻輳ダウンロード中にほかのリクエストの遅延が増え、ダウンロードを止めると回復する負荷を下げて帯域設定を見直す

QUICには接続を移行する仕組みがありますが、Shadowrocketでネットワークを切り替えるたびに通信が途切れず再開するとは限りません。クライアントの実装、サーバーの方針、アドレスの変化、ネットワーク上の中継機器などが結果に影響します。モバイル回線では、同じネットワークを使い続ける場合と、ネットワークを切り替える場合を分けてテストしてください。切り替えに失敗しただけで、Hysteria2の接続全般が使えないと判断しないようにしましょう。

Shadowrocketで利用中のHysteria2設定を確認

以下の手順は、利用者自身がサービスと接続パラメータを用意していることを前提としています。現在使える設定を残し、プロトコル、アドレス、ポート、認証情報、TLS情報を一つずつ確認してください。接続パラメータの種類は、Typeを変更するだけでは相互に切り替えられません。HysteriaとHysteria2も同じプロトコルとして扱わないでください。

  1. 接続項目を確認する

    Homeを開き、既存の接続項目の編集画面でTypeがHysteria2になっているか確認します。手動で追加する場合は、Home右上の「+」から開き、利用中のサービスの案内に従ってTypeを選択してください。サービス提供元の名称をプロトコルの種類と混同しないでください。

  2. 接続情報を確認する

    サービスのアドレス、ポート、認証情報を一字ずつ確認します。例として示すアドレスhy2.example.comとポート443は、各項目の関係を説明するためのもので、利用できるサービスではありません。認証情報の前後に空白や改行が入っていないことも確認してください。

  3. TLSを確認する

    利用中のサービスの案内に従って、TLSのサーバー名(SNI)と証明書の要件を確認します。接続先アドレスと証明書の名前は異なる場合があります。証明書エラーが発生したときは、まず名前とデバイスの日時を確認してください。証明書の検証を無効にすることを通常の対処にしないでください。

  4. 追加項目を確認する

    サービスでobfuscationを有効にしている場合は、方式とパスワードが一組で提供されているか確認してください。有効になっていない場合は、独自に追加しないでください。帯域関連の項目は画面に表示された単位で入力し、変更前の値も控えておくと元に戻せます。

  5. 接続して結果を確認する

    保存したらHomeに戻り、対象の接続項目を選択してGlobal Routingを確認します。接続を開始してConnectivity Testを実行し、続けて同じテスト対象にアクセスして、テスト結果と実際のリクエスト結果をそれぞれ記録してください。

Global Routingがプロトコルのテストに与える影響

「Hysteria2の接続項目を選択している」ことと、「現在のリクエストがその接続項目を使っている」ことは同じではありません。Home → Global Routingでルーティング方式を選択します。Configではルールによって一部のリクエストがDIRECTになる場合があるため、Webページが一度表示されたことだけではHysteria2の通信経路が機能しているとは判断できません。

Config:ルールに基づいて確認

推奨

現在の設定に従ってリクエストを振り分けます。テスト前に、対象がどのルールに一致するか、そのルールがどのポリシーを使うかを確認してください。ポリシーが別の選択項目を参照する場合は、最終的な接続先も確認します。

適した用途:日常的なルールベースの利用、マッチ条件が明確な再テスト

Proxy:一時的に要因を切り分ける

プロキシを利用できるリクエストを選択中のプロキシに送信し、ルールによる影響を絞り込めます。テスト中は、選択している接続項目がテスト対象のHysteria2であることを確認してください。終了後は元のルーティング方式に戻します。

適した用途:失敗の原因が一時的にConfigの振り分けにあるかを確認

Direct:直結の比較対象を確認

プロキシを経由しない場合に、接続先へアクセスできるかを確認します。DirectでWebページを開けても、わかるのはその接続先への直結経路が使えることだけで、Hysteria2の検証にはなりません。

適した用途:接続先とローカルネットワークの基本的なアクセス状況を確認

以下はルールのマッチ条件を理解するための最小限の例です。完全な設定ではなく、実在するテストサービスを指定するものでもありません。DOMAIN-SUFFIXは指定したドメインとそのサブドメインに一致し、FINALはそれ以前のルールに一致しなかったリクエストを処理します。個別のルールはフォールバックルールより前に配置してください。

[Rule]
DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT

この例では、example.comとそのサブドメインへのアクセスだけがPROXYに一致し、それ以外のリクエストはDIRECTになります。実際にテストしたドメインが別のものなら、その結果でテスト対象のプロキシを評価することはできません。On Demandは条件に応じてVPN接続を確立するタイミングを制御します。接続項目のプロトコルやRuleのマッチ範囲とは別の設定です。トラブルシューティングではSettings → On Demandで現在の条件を確認し、自動接続が手動テストに影響しないようにしてください。

条件を固定して結果を記録し、1回の速度測定で判断しない

プロトコルのテストでは、接続性、応答時間、継続的な通信をあわせて確認します。Connectivity Testは初期確認に利用できますが、テスト対象や方法は実際の通信とは異なるため、結果をそのままダウンロード速度とみなすことはできません。ネットワークを問わず使える速度差やパケットロスのしきい値は、テスト条件を明確にしないと示せません。

ローカルのメモに「Wi-Fi、Config、接続先がPROXYに一致、3回すべて成功、通信開始後にWebページの応答が遅くなる」のように、観察した現象を記録できます。「速くなった気がする」よりも原因を特定しやすく、一時的なネットワーク変動をプロトコルの固定的な特性と誤認することも防げます。利用中のサービス提供元に問い合わせる場合は、必要なエラー情報を伝え、認証パスワードやサブスクリプションURL全体は公開しないでください。

よくある質問:ハンドシェイク、証明書、ネットワーク切り替え

同じ接続項目がWi-Fiではタイムアウトし、モバイル回線では接続できるのはなぜ?

接続項目のパラメータは変更せず、2つのネットワークそれぞれでHome → Connectivity Testを実行し、同じ接続先にアクセスします。一方のネットワークだけで失敗が続く場合は、そのネットワークのUDP制限や利用条件を優先して確認してください。TCP 443が使えるからといって、UDP 443も使えるとは限りません。

証明書エラーが表示された場合、そのまま無視してよい?

まずデバイスの日付と時刻を確認し、Homeの接続項目の編集画面に戻って、サービスアドレスとTLSサーバー名を確認してください。正しい名前と証明書の状態は利用中のサービス提供元に確認します。証明書の検証は維持し、エラーを無視する方法を長期的な解決策にしないでください。

帯域の値を大きくしたのに、Webページが遅くなるのはなぜ?

目標速度が現在の経路容量を超えると、キューイングやパケットロスが発生する場合があります。以前の値に戻して継続的なダウンロードを停止し、同じ接続先で再テストしてください。単位がMbpsか確認し、MB/sの値を異なる単位の項目にそのまま入力しないようにしてください。

サブスクリプションを更新したら突然接続できなくなった。まず何を確認する?

Homeで更新後の接続項目を開き、Type、ポート、認証情報、追加パラメータが変わっていないか確認します。次に、選択中の接続項目とGlobal Routingを確認してください。パラメータが実際に変更されている場合は、自分が利用しているサービスの提供元に問い合わせます。意味がわからない項目にランダムな値を何度も入力しないでください。

ネットワークを切り替えた後に切断された。On Demandの設定が間違っている?

まず新しいネットワークで手動再接続し、そのネットワークでUDPが使えることを確認します。次にSettings → On Demandを開いて自動接続の条件を確認してください。手動接続も失敗する場合は、ネットワークと接続項目を先に調べます。On Demandを個別に調整するのは、自動接続の動作だけが想定と異なる場合です。

App Storeでダウンロード