Hysteria2を使う予定で、すでに利用するサービスやサブスクリプションをお持ちの方向けの記事です。まずQUICの通信機能と輻輳制御の役割を整理し、次にShadowrocketの接続パラメータを確認します。最後に、条件をそろえたテストでネットワークとの相性を判断します。必須項目と、接続タイムアウト・証明書エラー・通信速度の不安定さをそれぞれどの層で確認するかが分かります。
クライアント、プロトコル、通信経路の役割を確認
ShadowrocketはApple製品向けの有料クライアントで、主にiPhoneとiPadで利用できます。入手先はApp Storeのみです。App Storeでは開発者名のShadow Launch Technology LimitedとアプリID932747118を確認できます。アプリは買い切りです。システム要件、対応デバイス、ユニバーサル購入については、App Storeのページをご確認ください。
クライアントの買い切り購入と、通信サービスの契約は別です。この記事の手順は、利用するサービスやサブスクリプションをすでにお持ちであることを前提としています。Hysteria2は接続プロトコルであり、サブスクリプションそのものではありません。同じサブスクリプションに複数のプロトコルの接続情報が含まれる場合があり、更新できても、すべての接続情報が現在のネットワークで使えるとは限りません。Shadowrocketはクローズドソースの商用アプリです。アプリの入手、サブスクリプションの更新、サーバーの管理は、それぞれ別の作業です。
- クライアント:パラメータを読み込み、接続を確立し、ルーティング設定に従ってリクエストを処理します。
- Hysteria2:クライアントとサーバー間の通信方式を定めます。双方で互換性のあるプロトコルとパラメータを使用する必要があります。
- 通信経路:ローカルの接続環境、通信事業者の経路、サーバーの処理能力、サーバーから接続先サイトまでの経路を含みます。
- 設定ルール:リクエストをこの接続に通すかどうかを決めます。プロトコルを変更するだけでは、誤ったルーティングルールは修正されません。
QUICが速くなる理由:接続の再利用とパケットロスからの回復
Hysteria2はQUICをベースとしています。QUICはUDPを使って通信し、TLS 1.3のセキュアなハンドシェイクを統合しています。UDPだからといって、Webデータを送りっぱなしにするわけではありません。QUICはストリーム上で確認応答、再送、フロー制御を行い、信頼性のある順序どおりのデータ転送を実現できます。アプリ側のTCPリクエストとUDPリクエストは、Hysteria2を介してそれぞれ転送できます。
QUICを理解するうえで重要なのが、ストリーム間の分離です。従来のTCP接続では、データの一部が失われると、後続のデータは欠損部分が届くまで待つ必要があります。複数のリクエストが同じバイトストリームを共有していると、まとめて待たされることがあります。QUICでは複数のストリームを独立して処理できるため、あるストリームでデータが欠けても、すでに受信済みの別のストリームまで同じ欠損を待つ必要はありません。ただし、同じストリーム内では引き続き順序どおりにデータが届く必要があり、各ストリームは通信経路の容量と輻輳状態を共有します。
接続を再利用すると、接続を確立し直す手間を減らせます。ただし、いつでも待ち時間がゼロになるわけではありません。初回アクセス、証明書の検証、名前解決、接続先サイトの応答には時間がかかります。既存の接続を再利用するかどうかは、接続状態や実装にも左右されます。Webページの読み込みが遅くても、必ずしも通信プロトコルが原因とは限りません。
確認ポイント:まずUDPの到達性を確認し、その後に通信速度を調べる
現在のネットワークからサーバーのUDP待ち受けポートに接続できない場合、帯域幅のパラメータを調整しても効果はありません。まずサーバーで実際に使っているポートを確認して接続をテストし、その後、継続的なデータ転送が改善するかを確認します。
輻輳制御でできること、できないこと
高遅延のネットワークでは、通信の応答を受け取るまでに時間がかかります。パケットロスは、無線干渉、ネットワークの混雑、機器のキューあふれなど、さまざまな原因で発生します。従来型の輻輳制御では、パケットロスを送信速度を落とす合図として扱うものが多くあります。ランダムなパケットロスが目立つ一方で帯域幅に余裕がある経路では、送信ウィンドウが縮小し続け、帯域を十分に活用できないことがあります。
Hysteria2の性能はQUICだけでなく、輻輳制御の方式にも左右されます。Brutalは目標帯域幅とパケットロスの補償を組み合わせ、目標とする通信速度の維持を試みます。ただし、通信経路の容量を増やすものではありません。目標値が高すぎると、キューの増加やパケットロス、余分な通信が発生し、同じネットワーク上のほかの通信に影響する可能性があります。実際に使われる方式や帯域幅のネゴシエーションの有無は、クライアントの対応状況とサーバー設定によって異なります。接続情報の名前だけでは判断できません。
| ネットワークの状態 | 考えられる効果 | 確認が必要な点 |
|---|---|---|
| 高遅延で、ランダムなパケットロスがある | 適切な輻輳制御により、継続的な通信速度が向上する可能性がある | パケットロスの原因が混雑かどうか、利用可能な帯域幅が安定しているか |
| 低遅延で、パケットロスが少ない | 通常どおり動作する可能性はあるものの、顕著な効果が出るとは限らない | サーバーの負荷、接続先サイトの速度制限 |
| UDPが制限されている | タイムアウトや頻繁な切断が起きる可能性がある | 接続ネットワークのポリシーとサーバーのファイアウォール |
| アップロード帯域を長時間使い切っている | キューの影響で、ダウンロードや操作への応答も遅くなる可能性がある | 上り帯域の使用状況、機器のキュー、帯域幅の目標値 |
画面にアップロードやダウンロードの帯域幅を指定する項目がある場合は、項目に記載された単位に従って入力してください。MbpsとMB/sを混同しないようにしましょう。理論上、80 Mbpsは10 MB/sに相当しますが、実際の通信速度からはプロトコルのオーバーヘッドが差し引かれます。これは単位換算であり、速度を保証するものではありません。パラメータには、ブロードバンド契約の最大速度ではなく、現在の通信経路で安定して利用できる速度を設定してください。
ShadowrocketでHysteria2を追加する:まず設定項目を確認
まずは、すでに利用しているサブスクリプションに含まれる接続情報をそのまま使い、手入力による記載漏れを避けましょう。手動で追加する場合は、既存のサービス情報を参照して、プロトコルの種類、サーバーアドレス、ポート、認証用パスワード、TLSパラメータを確認してください。名前が似ているからといってHysteriaとHysteria2を同じものとして扱うことはできません。また、ほかのプロトコルのパスワードやポートをそのまま流用しないでください。
-
接続情報を読み込む
Home → 右上の「+」→ Type → Subscribeの順に進み、自分のサブスクリプションURLを入力して保存します。更新後、接続情報が表示されていることを確認してください。手動で追加する場合は、Home →「+」→ TypeからHysteria2を選びます。
-
アドレスを確認
サーバーアドレスとPortを確認します。アドレス欄にはサーバーから指定されたホスト名またはIPアドレスだけを入力し、Webページのパスを追加しないでください。たとえば、サーバーが
443/UDPで待ち受けていると明示されている場合に限り、Portに443を入力します。よく使われる値だからといって、ポートを推測しないでください。 -
認証情報を確認
サーバーから提供された認証情報をPasswordに入力します。サブスクリプションへのアクセス情報と接続先の認証パスワードは用途が異なるため、置き換えてはいけません。コピー時は末尾の空白、大文字・小文字、特殊文字にも注意してください。
-
TLS設定を確認
サーバーの指定に従ってSNIを入力し、証明書の検証は有効にしておきます。接続先にIPアドレスを指定していても、証明書に対応するドメイン名をSNIに入力する必要がある場合があります。ドメイン名の不一致や証明書の期限切れを、Allow Insecureを有効にして回避しないでください。
-
オプション項目を確認
サーバーで難読化が有効になっている場合は、同じ種類と難読化パスワードを設定します。有効になっていない場合は、独自に入力しないでください。アップロード・ダウンロード帯域幅やその他の拡張項目は、実際の画面とサーバーの説明に従ってください。読み込み後も、情報がすべて保持されているか確認します。
-
接続を確認
保存後にHomeへ戻り、該当する接続情報を選んでからGlobal Routingを確認します。テストするリクエストがどの経路を通るべきかを明確にし、接続を有効にして、決めた接続先にアクセスしてください。リストに表示される遅延の値を、ダウンロード速度全体の指標として扱わないでください。
ルーティングを確認:プロトコルとルールの問題を切り分ける
接続情報を選択しても、すべてのリクエストがその接続を通るとは限りません。Home → Global RoutingにあるProxy、Direct、Config、Sceneは、リクエストの処理方法を選ぶ項目です。トラブルシューティングでは、元の選択状態を記録し、一度に一つだけ短時間変更して、テスト後に元へ戻してください。プロトコル、ルール、DNSを同時に変更すると、改善の原因を特定できません。
Config
おすすめ現在有効な設定のルールに従ってリクエストを処理します。Hysteria2が使われているか判断するには、対象リクエストに実際に適用されたルールとポリシーを確認してください。Configを選ぶだけで、特定のドメインが必ずプロキシ経由になるわけではありません。
適した使い方:普段は既存のルールに従って利用し、個々のリクエストの経路を確認する。
Proxy
プロキシ経由の通信を基準にすることで、通常の振り分けルールがテスト結果に与える影響を減らせます。現在選択している接続情報も確認してください。システム側で除外される通信については別途考慮が必要です。
適した使い方:接続そのものを短時間テストし、異常がルーティングルールに関係しているか確認する。
Direct
直接接続の経路を使うため、Hysteria2経由の通信速度を検証するものではありません。ローカルネットワークから接続先への直接接続の状態は確認できますが、同じサーバーを通る経路との性能比較にはなりません。
適した使い方:基本的なネットワーク接続を確認する、または直接接続時の問題を調べる。
Sceneは、設定済みのシーン条件に応じてルーティングを選択します。常にProxyと同じ動作をする切り替え項目ではありません。Settings → On Demandが有効な場合は、現在の状態も記録し、条件に応じて接続が開始される動作がテストに影響しないようにしてください。On Demandは接続を開始する条件を制御するもので、Hysteria2の通信速度を直接向上させるものではありません。
DOMAIN-SUFFIX:ドメインの末尾に一致します。テスト対象のドメインが指定したポリシーに適用されるか確認する場合に便利です。IP-CIDR:IPアドレスの範囲で一致します。名前解決が関係するかどうかは、ルールのオプションとリクエストの状況に応じて確認してください。GEOIP:IPアドレスの位置情報データベースに基づいて一致します。結果はデータベースの内容に左右されます。FINAL:それ以前のルールに一致しなかったリクエストを処理します。最終的にどのポリシーへ振り分けられるか確認してください。
タイムアウト、速度低下、切断:症状ごとに確認
テストでは端末、接続先のデータ、実施する時間帯を固定し、一度に変更する条件は一つだけにしてください。同じデータの転送をWi-Fiとモバイル通信でそれぞれ3回行い、接続の成否、継続中の通信速度、切断の有無、そのときのルーティング設定を記録する方法がおすすめです。これはテスト手順であり、性能をあらかじめ保証するものではありません。一度の最高速度で、一日を通した性能を判断しないでください。
| 確認された症状 | 優先して確認する項目 | 次に行うこと |
|---|---|---|
| 接続がタイムアウトし続ける | アドレス、UDPポート、サーバーの待ち受け設定、ネットワークの制限 | 接続情報は変更せずに接続ネットワークを切り替え、接続できるか比較する |
| 認証失敗と表示される | Passwordとサーバーの認証要件 | 元の情報を確認し、既存のサブスクリプションを更新してから接続情報を再確認する |
| 証明書エラーと表示される | SNI、端末の時刻、証明書のドメイン名と有効性 | 該当項目を修正するか、サーバー管理者に証明書の修正を依頼する |
| 少量の通信は正常だが、大容量の転送が止まる | パケットロス、経路のMTU、帯域幅の目標値、ネットワークの混雑 | まず不適切に高い帯域幅の目標値を下げ、症状を記録してから経路を詳しく確認する |
| 接続は正常だが、特定のWebサイトだけ遅い | 適用されたルール、DNS、接続先サイト、サーバー側の出口 | 決めた別の接続先でもう一度テストし、特定サイトの問題か接続全体の問題かを切り分ける |
| Wi-Fiでは失敗するが、モバイル通信では正常 | ローカルルーター、接続ネットワークのUDPポリシー | ネットワークのポリシーを確認し、すぐに認証情報をすべて入力し直さない |
経路のMTUはトラブルシューティングの手がかりにはなりますが、「大きなファイルの転送が遅い」というだけで原因と断定することはできません。負荷が低いときは接続できても、継続的な転送で遅延が大きくなる場合は、上り帯域を使い切っていないか、帯域幅の目標値が高すぎないかも確認してください。設定を変更するときは元の値を記録し、一度に一つだけ変更したうえで、同じデータを使って再テストします。
まとめ:プロトコル名ではなく、安定性で選ぶ
UDPに接続でき、パラメータも正しく設定されていることを前提に、複数回のテストで通信速度が安定し、切断も少ない場合は、現在利用しているHysteria2の接続情報を引き続き使用できます。接続中のネットワークでUDPが継続的に制限される場合は、まずネットワーク環境を見直すか、すでにお持ちの別の利用可能な接続情報を使ってください。
トラブルの記録には、エラーの種類、テスト条件、個人情報を伏せた設定項目だけを残してください。サブスクリプションURL、Password、難読化パスワードは接続資格情報です。公開するスクリーンショットやログに含めないでください。基本設定を確認し直す場合は、サイト内のはじめにを読んでから、Homeに戻って接続情報とGlobal Routingを確認してください。