Hysteria2はShadowrocketが対応するプロキシプロトコルの一つです。ランダムなパケットロスや遅延の変動がある回線で改善が見込める場合がありますが、UDPが利用でき、サーバー設定と一致していることが前提です。自身で用意したサービス事業者の設定またはサブスクリプションをお持ちの方向けに、通信の仕組み、設定の確認、追加手順、トラブルの切り分けを解説します。当サイトではサーバーやサブスクリプションの提供・販売・推奨は行っていません。
Hysteria2・QUIC・UDPの役割
要点:Hysteria2はQUICを使ってクライアントとサーバー間の通信経路を確立し、QUICのパケットはUDPで送信されます。UDPは下位の転送方式であり、すべてのアプリデータが信頼性のない通信になるわけではありません。QUICはUDP上で暗号化、確認応答、パケットロスからの復旧、信頼性のあるストリーム通信を提供できます。
アプリからWebサイトへの接続と、プロキシの通信経路は別の階層です。たとえば、WebサイトへのリクエストにはTCPを使用しながら、ShadowrocketからHysteria2サーバーへの外側の接続にはQUICを使用できます。ファイアウォールやサーバーのポートを調べる際は、同じ番号のTCPポートが開いているかだけでなく、外側の通信に使うUDPを確認してください。
QUICでは複数のストリームがそれぞれ独立して進行します。あるストリームでパケットが失われても、ほかのストリームで受信済みのデータまで通常はブロックされません。これによりストリーム間のHead-of-Line Blockingは軽減されますが、同じ信頼性のあるストリーム内で欠落したデータは復旧が必要です。また、複数のストリームは同じネットワーク回線を共有します。そのため、動画、Webページ、ファイル転送が完全に互いへ影響しないとは限りません。
設定で443/UDPを使う場合、443/TCPの疎通確認だけではHysteria2が使える証明になりません。サーバーの待ち受け設定、サーバー側ファイアウォール、現在接続しているネットワークが該当するUDP通信を許可しているかも確認してください。
速くなる場合がある理由:鍵はUDPではなく輻輳制御
要点:一部のパケットロスが多い回線でHysteria2が有利になるのは、輻輳制御や送信方式によるもので、「UDPはTCPより本質的に速い」からではありません。パケットロスは輻輳だけでなく、無線干渉などによるランダムな損失でも発生します。すべての損失を輻輳とみなして送信量を大幅に減らすと、利用可能な帯域を十分に活用できない場合があります。
Hysteria2のBrutal輻輳制御は、設定された帯域幅の目標と損失状況に応じて送信動作を調整します。有効なスループットを確保するため、実際の送信量が増える場合があります。帯域幅のネゴシエーションに対応する設定では、クライアントが申告する受信能力、サーバー側の制限、実際の経路容量が結果に影響します。BBRなどの輻輳制御が使われる場合もあるため、名称だけから現在の接続方式を決めつけないでください。
- ランダムなパケットロスが目立つ一方、回線容量には余裕がある:損失を補う送信方式によってスループットを維持しやすくなる場合があります。同じタスクを繰り返しテストして確認してください。
- 実際に回線が輻輳している:送信量をさらに増やすとキューが長くなり、ファイル転送中にWebページの応答が遅くなる場合があります。
- パケットロスが少なく、遅延も安定している:プロトコルの違いが主なボトルネックとは限りません。サーバーの負荷、利用可能な帯域幅、接続先のWebサイトが速度を左右する場合があります。
- UDPがブロックまたは厳しく制限されている:通信を確立できない、またはスループットが非常に低くなる場合があります。帯域幅の数値を変えてもネットワークの制限は解除できません。
帯域幅の項目では単位にも注意が必要です。Mbpsはメガビット毎秒、MB/sはメガバイト毎秒を表します。10進単位で計算すると、80 Mbpsの理論上限は約10 MB/sです。実際のアプリデータの速度は、プロトコルのオーバーヘッドや再送によってさらに低くなります。設定時はアプリの項目に表示される単位を確認し、ファイル転送ツールの数値をそのまま入力しないでください。
要点:帯域幅の目標は持続可能な速度に合わせる
設定に帯域幅の項目がある場合は、まずサービス事業者から案内された値を使います。調整が必要なら、現在のネットワークで持続できる上り・下りの速度を基準にしてください。短時間のピーク値やプランの公称速度を、長時間の送信目標として使わないでください。
Shadowrocketで確認するHysteria2の設定項目
要点:まずサーバーから提供された情報をアプリの項目に正しく対応させ、その後でパフォーマンス関連の設定を調整します。Hysteria2と旧Hysteriaは、名称を書き換えるだけで置き換えられるものではありません。読み込み後、TypeがHysteria2になっていることを確認してください。以下は設定項目の意味を説明したもので、Configにそのまま貼り付けられる設定構文ではありません。
| 項目 | 確認する内容 | よくある誤りと症状 |
|---|---|---|
| サーバーアドレス | サービス事業者から案内されたドメイン名またはIPを使用します。hy2.example.comは説明用のドメイン名です。 | アドレスの入力ミスや名前解決の異常により、正しいサーバーへ接続できません。 |
| Port | 指定されたポートを正確に確認します。たとえばサービス事業者の指定が443の場合、外側の接続では443/UDPを確認します。 | よく使われるポート番号を既定値だと思い込み、誤った待ち受け先に接続してしまいます。 |
| 認証情報 | サービス事業者から提供された認証文字列を省略せずに入力し、大文字・小文字や記号もそのまま保持します。 | 文字の抜け、コピー時に混入した空白、別の設定の認証情報の流用。 |
| TLS / SNI | 指定されたサーバー名を入力し、証明書の検証は有効のままにします。接続先アドレスと証明書名は異なる場合があります。 | IPアドレスを証明書名として使う、または証明書の対象に含まれていないドメイン名を入力する。 |
| Obfuscation | サーバー側で有効になっている場合に限り、指定どおりに設定します。たとえば、双方で同じSalamander設定とパスワードを使用します。 | 片方だけで有効になっている、またはパスワードが一致しない場合、ハンドシェイクがタイムアウトすることがあります。 |
| 帯域幅の設定 | 編集中の画面に該当項目がある場合は、上り・下りの方向、単位、サービス事業者の指定を確認します。 | 上りと下りの設定を逆にする、単位を誤解する、目標値を高くしすぎると、不安定になったりキューが余計に長くなったりします。 |
接続先アドレスはデータをサーバーへ送るために使われます。SNIはTLSハンドシェイクでサーバー名を伝える情報で、一般的な証明書名の確認にも使われます。両者が異なることはありますが、信頼できる設定情報に基づいて入力してください。証明書エラーが発生した場合は、名前、デバイスの日時、サーバー証明書の状態を確認し、最初に検証を無効にすることは避けてください。
- 項目名、表示される選択肢、高度な設定はアプリ内の表示に従ってください。サブスクリプションに任意項目が含まれていないからといって、独自に値を補う必要はありません。
- サブスクリプションを利用している場合は、更新して修正済みの設定を取得することを優先してください。手動で変更する前に元の値を記録しておくと、次回の更新後に設定が混在するのを防げます。
- トラブルの情報を共有する際は、エラーの種類と項目名だけを残してください。認証文字列、サブスクリプションURL内のトークン、関連するパスワードは必ず隠してください。
読み込みと初回確認:まず接続を確かめ、次にルールを確認
要点:Homeで設定を読み込んで選択し、単一のテストリクエストで接続を確認します。Homeではサーバーと接続状態、Configではルール設定、Settingsではアプリの設定を管理します。通信の失敗とルール選択の誤りを分けて調べることで、原因を絞り込めます。
-
設定情報を準備する
自身が利用しているサービス事業者に、サーバーアドレス、ポート、認証情報、TLSの要件を確認します。サブスクリプションを使う場合は、実際にHysteria2の項目が含まれていることを確認してください。表示名だけでプロトコルを判断しないでください。
-
サブスクリプションを読み込む
Homeの右上にある「+」を選択し、Type → Subscribeを開きます。自身のサブスクリプションURLを入力して保存した後、Homeで該当するサブスクリプションを更新してください。URLに認証トークンが含まれている場合は、パスワードと同様に扱います。
-
種類を確認する
読み込んだ項目の編集画面を開き、TypeがHysteria2になっていることを確認して、上の表に沿って設定を確認します。手動で追加する場合は、Home → 「+」 → Type → Hysteria2の順に進み、手元の設定情報に従って項目を入力してください。
-
接続を確認する
Homeに戻って対象の項目を選び、接続を開始します。システムの案内が表示された場合は、VPN構成の追加を許可してください。接続開始後の状態を記録します。待ち続けるのか、明確なエラーが表示されるのか、指定したテストページを開けるのかを確認してください。
-
ルーティングを確認する
Home → Global Routingで現在のモードを確認します。ルールの影響を一時的に切り分けるには、Proxyで同じリクエストをテストできます。その後、普段使用するConfigに戻し、対象ドメインに実際に適用されるポリシーを確認してください。
初回テスト中はSettings → On Demandも確認してください。オンデマンド接続が有効な場合は、その状態を記録します。切断やネットワーク切り替えのテストでは、一時的に無効にして、テスト後に元へ戻すと自動接続の影響を避けられます。On Demandは接続を開始する条件を管理する機能で、Hysteria2の認証、TLS、UDPの疎通を修復するものではありません。
サブスクリプションの更新によって、サーバー設定や項目一覧が変わる場合があります。更新後は、想定した項目が選択されていることを確認してから、同じ接続先をテストしてください。サブスクリプションの更新、帯域幅の変更、ルールの変更、ネットワークの切り替えを同時に行うと、どの変更が結果に影響したのか判断できません。
Global Routingでプロトコルの問題とルールの問題を切り分ける
要点:同じHysteria2の項目でProxyなら接続でき、Configでは接続できない場合は、通信設定をすぐに変更せず、ルールの適用先と選択中のポリシーを先に確認します。以下の比較は、Global Routingにある3種類のモードを今回の確認に使う場合に限ります。Directは、対象へ直接接続できる場合の基準としてのみ利用できます。
Config
推奨現在有効なConfigルールに従って接続を処理します。対象はDIRECT、REJECT、または特定のプロキシポリシーに一致する可能性があるため、テスト対象のHysteria2が実際に使われているか確認してください。
適した用途:日常的なルールベースの利用と、接続確認後のルーティングチェック。
Proxy
アプリが処理する接続を、現在のプロキシポリシーに渡します。短時間、Configルールによるテストへの影響を抑えるのに使えます。ただし、システム内のすべての通信が必ず処理されるわけではなく、サーバー認証やネットワーク制限を回避することもできません。
適した用途:Configで同じリクエストに問題がある場合、ルール選択の影響を切り分ける。
Direct
アプリが処理する接続を、テスト対象のHysteria2経路を使わずに直接宛先へ接続します。直接接続に成功しても、その直接経路が使えることを示すだけで、プロキシサーバーが正常に動作している証明にはなりません。
適した用途:もともと直接接続できる宛先について、ローカルネットワークの基準を確認する。
ルールを確認する際は、DOMAIN-SUFFIXがドメインの末尾に一致し、IP-CIDRがIPアドレスの範囲に一致し、GEOIPがIPの地理データベースを基に判定し、FINALがそれ以前のルールに一致しない場合の最終ポリシーとなる点に注意してください。ルールは順番に処理されます。先にDIRECTまたはREJECTに一致すると、後続のプロキシポリシーで今回の判定結果を変更することはできません。DNSの解決結果がIPベースの判定に影響する場合もあります。
要点:テスト対象の通信経路を使っていることを先に確認する
対象へのリクエストが選択中のHysteria2を実際に使っていると確認できてから、ページの読み込み時間や転送速度で接続を評価してください。DIRECTに一致している場合は、プロトコルの性能として結果を記録せず、先にテスト条件を修正してください。
接続できない・速度が出ない・通信が途切れる場合の切り分け
要点:「サーバーに到達できるか → ハンドシェイクと認証が完了するか → ルーティングが正しいか → スループットにボトルネックがあるか」の順に確認します。遅延の数値だけでは、UDPの到達性、認証の有効性、継続的な通信の安定性をすべて証明できません。測定がタイムアウトした場合も、実際の接続結果と合わせて判断してください。
| 確認できる症状 | 優先して確認する項目 | 次に行うこと |
|---|---|---|
| Wi-Fiではタイムアウトするが、モバイル回線では接続できる | 2種類の接続ネットワークにおけるUDPの扱い、ルーティング、アドレス解決の違い。 | 設定項目は変えず、接続ネットワークだけを切り替えてテストを繰り返し、Wi-Fi側のネットワーク制限を確認します。 |
| TLSまたは証明書のエラーが表示される | SNI、証明書の対象名、デバイスの日時、証明書の有効性。 | 現在のサービス事業者の情報に従って設定を修正します。証明書検証は有効のままにし、ハンドシェイクのエラーをスループット設定で解決しようとしないでください。 |
| 接続後に認証エラーが表示される | 認証文字列が完全か、サーバー側で認証情報が更新されているか。 | 自身のサブスクリプションを更新するか、元の設定情報を確認します。再試行回数を増やしても解決にはなりません。 |
| Webページは開くが、大きなファイルの転送が遅い | サーバーの外向き回線、接続先の制限、ローカルの帯域幅、帯域幅の設定、継続的なパケットロス。 | ネットワークと設定項目を固定し、小さなリクエストと継続的な転送を比較して、開始後の変化を記録します。 |
| Proxyでは正常だが、Configでは異常 | ルールの順序、接続先に適用されるポリシー、DNSの解決結果。 | Config内の関連ルールを確認し、プロトコル設定は同時に変更しないでください。 |
| しばらく使わなかった後、最初のリクエストに失敗する | ネットワークの切り替え、UDPマッピングのタイムアウト、接続の再確立、On Demandの状態。 | 未使用時間と復旧までの経過を記録します。再接続後にもう一度テストし、接続ネットワーク側とサーバー側の問題を切り分けてください。 |
ここで示したのはトラブルを見分ける条件であり、当サイトでの実測結果ではありません。自身で比較記録を取る場合は、同じネットワークで同じファイルを3回続けてテストし、毎回30秒間観察してください。成功したか、安定時の速度、同時に開いたWebページの応答をそれぞれ記録します。テストする時間と接続先を固定すると、キャッシュ、接続先の速度制限、一時的なネットワーク変動による誤判定を減らせます。
- 1回のテストで変更するのは1項目だけ:たとえば、1回目はWi-Fiとモバイル回線の切り替えだけを行い、2回目に帯域幅の設定を確認します。
- 遅延とスループットの両方を見る:速度が上がっても操作への応答が明らかに遅くなった場合、キューが長くなっている可能性があります。設定が改善したとは限りません。
- 通信量に注意:継続的な転送やパケットロスへの対応によって、通信量が増える場合があります。テストの前に、ご自身のネットワークの料金条件を確認してください。
- 再確認できる記録を残す:接続ネットワーク、選択した項目、Global Routingのモード、テスト先、エラーメッセージを記録します。認証情報は公開しないでください。
適用できる条件と利用前の確認
Hysteria2は、UDPが利用でき、ランダムなパケットロスや遅延の変動があるネットワークで、手元の設定を使って比較テストする価値があります。UDPが制限されている、サーバーの外向き回線が飽和している、接続先自体に速度制限がある場合、プロトコル名を変えてもボトルネックは解消しません。継続利用するかどうかは、成功率、持続的なスループット、操作への応答、通信量を総合して判断し、最も遅延が低かった一度の結果だけで決めないでください。
- 設定が揃っているのにハンドシェイクが失敗する:帯域幅の数値を追う前に、UDP、TLS、認証を確認します。
- ハンドシェイクは成功するが接続先にアクセスできない:Global RoutingとConfigのルールを確認します。
- 接続できるが速度が安定しない:テスト内容とネットワークを固定して繰り返し測定し、輻輳制御と回線状況が合っているか判断します。
Shadowrocketはクローズドソースの有料アプリです。主にiPhone / iPadで利用でき、Mac、Apple TV、Apple Visionとの互換性はApp Storeの製品ページで確認できます。システム要件、互換性、ユニバーサル購入の有無はApp Storeの表示を確認してください。入手先はApp Storeのみです。開発者はShadow Launch Technology Limited、アプリIDは932747118です。アプリは買い切りで、価格はApp Storeの表示に準じます。
Shadowrocketの購入で入手できるのはクライアントアプリです。サーバー、帯域幅、サブスクリプションが付属するわけではありません。この記事で説明する読み込み、設定、接続テストは、ユーザー自身がサービス事業者の設定をすでにお持ちであることを前提としています。