Shadowrocket
プロトコルの種類と設定項目
サーバーの対応状況に合わせてTypeを選び、認証、通信方式、ルーティングを確認します。プロトコル名だけで速度は決まらず、接続テストの代わりにもなりません。
- 7種類のプロトコル
- 設定項目の確認
- 速度とバッテリー消費
- 接続診断
プロトコル・通信方式・ルールの役割
サーバーが対応するプロトコルを確認してからTypeを選ぶ
プロトコルの種類はサーバー側と一致させる必要があります。同じアドレスとパスワードを別の種類に切り替えて使うことはできません。Homeのサーバー編集画面またはAdd Serverで選ぶTypeは、クライアントが認証情報やデータをどのように扱うかを決めます。接続を確立するには、サーバー側も同じ形式に対応していなければなりません。既存のサブスクリプションには通常これらの設定が含まれているため、読み込み後はまず値を変更せずに確認してください。手動で項目を作成するのは、サーバー側の実際の設定を把握している場合に限ります。プロトコル名だけでは、必要な設定項目をすべて特定できません。
接続は複数の層に分けて考える必要があります。AddressとPortは接続先を指定し、プロトコル認証は相手が要求を受け入れるかどうかを決めます。通信方式はデータの運び方を定め、TLSは該当する通信経路の認証と暗号化を担います。Global Routingはどのリクエストをその経路に送るかを決めます。同じVLESSでも通信方式が異なる場合があり、TLSを使う接続同士でも認証方式が異なることがあります。これらの層を混同すると、実際には証明書の不一致が原因なのに、パスワードを変更してしまうといった誤った対処につながります。
7種類のプロトコルは速度ランキングではない
プロトコルの歴史や背景から分かるのは設計上の目的であり、あらゆるネットワークでの固定的な性能ではありません。Shadowsocksはシンプルなプロキシ転送を重視し、VMessは独自の認証とデータ保護の仕組みを備えています。VLESSは保護の多くを外側の仕組みに委ね、TrojanはTLS経由でプロキシリクエストを転送します。HTTPとSOCKS5は汎用プロキシのインターフェース、WireGuardはIP層のトンネル、Hysteria2はQUICベースの通信方式です。それぞれ解決する課題が異なるため、名称だけで古い順・新しい順に並べることはできません。
速度は通常、サーバーの外向き回線、往復時間、混雑、無線電波の状態に大きく左右され、プロトコルの処理負荷はその後に影響します。Webページの表示にはDNS検索やハンドシェイク、複数の短いリクエストが含まれますが、継続的なダウンロードではスループットがより重要です。そのため、両者で異なる結果が出ることがあります。iPhoneではモバイル回線の電波、低電力状態、バックグラウンドと前景の切り替えも考慮が必要です。速度テストの最高値を日常の使用感とみなすことはできません。比較する際は、デバイス、ネットワーク、サーバーの条件、テスト対象を固定し、変更する要素は一つに絞ってください。
| 層 | 確認する項目 | よくある誤り |
|---|---|---|
| プロトコル認証 | Type、Password、UUID、鍵 | 別のプロトコルの認証項目を使う |
| 通信方式と保護 | TLS、SNI、Path、UDPの到達性 | 外側の接続は確立するが、内部のリクエストが失敗する |
| リクエストのルーティング | Global Routing、Config、ルールの順序 | テスト対象のサーバーにリクエストが送られていない |
用途に応じてバッテリー消費と互換性を考える
バッテリー消費は、実際の通信量、接続の維持方法、無線モジュールの稼働時間によって変わり、特定のプロトコルに固定された性質ではありません。TLS接続を頻繁に確立すると、一時的な処理負荷が増えることがあります。Keepaliveパケットを継続的に送るとネットワークが頻繁に起動し、パケットロス後の再送も消費電力を増やします。長時間の動画視聴、少量のメッセージ送信、待機の3つの状況を分けて確認してください。デバイスの温度が上がった場合は、まずDataの通信量の変化やバックグラウンド処理を確認し、すぐにプロトコル実装の問題と判断しないでください。
TCPとUDPの対応状況も分けて確認してください。Webページが開けても、それは該当経路のリクエストが成功したことを示すだけで、音声通話などのUDP通信が可能とは限りません。プロトコルがUDPに対応していても、サーバー、現在の通信方式、上位ネットワークが許可しているとは限りません。反対に、UDPを外側の通信に使うプロトコルでも、アプリのTCPリクエストを転送することがあります。「アプリの通信種別」と「外側の接続種別」は別の概念です。UDPという表示だけで、アプリの通信全体を判断しないでください。
最初に確認するのは、サーバーが実際に対応しているもの、現在のネットワークで許可されているもの、必要な通信の3点です。その後、認証情報が揃っているか、証明書を正しく検証できるか、接続に失敗したとき原因を特定しやすいかを確認します。利用可能な種類が一つだけなら、まずその設定を正しく行ってください。サーバー側に対応設定がない項目を探しても解決にはなりません。共有形式を確認したい場合は、共有リンクとサブスクリプションリンクの違いを読んでから、該当するプロトコルの章に進んでください。
Shadowsocks:認証方式と暗号化方式をセットで確認
設計の中心はアプリのプロキシであり、完全なIPトンネルではない
Shadowsocksは、クライアントとサーバーの間に保護されたプロキシ転送経路を作り、宛先アドレスと後続のデータを転送します。デバイスのすべてのIPパケットをそのままリモート側に渡す仕組みではなく、システムプロキシのアドレスを設定するだけのものでもありません。Shadowrocketは処理対象のリクエストを受け取り、ルールに基づいて該当する項目へ送るかどうかを判断します。したがって、「Shadowsocksを使う」ことと「すべてのWebサイトがそのサーバーを経由する」ことは同じではありません。後者はGlobal RoutingとConfigの設定にも左右されます。
比較的シンプルなプロトコル構造のため、設定内容が明確で、追加の通信層をなるべく増やしたくない場合に適しています。ただし、実際の性能は暗号化の実装、サーバー負荷、ネットワーク条件によって変わります。現在の認証付き暗号化方式はデータの完全性も検証するため、クライアントとサーバーで同じ方式と鍵の仕様を使う必要があります。選択肢に同じアルゴリズム名が含まれていても、互換性があるとは限りません。モード、鍵の長さ、プロトコル世代の違いによってデータ形式が変わることがあります。
まずMethodとPasswordを確認し、その後に追加の通信方式を確認
手動で追加する場合は、既存のサーバー情報をもとにAddress、Port、Method、Passwordを一つずつ確認します。Addressにはドメイン名またはIPアドレスを指定します。Portはそのプロトコルが実際に待ち受けているポートです。Methodは暗号化方式を正確に選び、Passwordは大文字・小文字や文字を省略せず入力してください。Passwordに記号が含まれていても、独自にエスケープしたり削除したりする必要はありません。共有リンクから読み込んだ場合は、解析された各項目を確認し、リンク全体をPassword欄に貼り付けないでください。
方式によっては鍵の形式に固有の要件があり、すべてを通常のパスワードとして扱うことはできません。たとえば、特定の長さやエンコード形式の鍵が必要な方式があります。クライアント上の表示がPasswordでも、任意の文字列が使えるとは限りません。最も確実なのは、読み込み結果を保持し、サーバー側の実際の設定と照合することです。読み込み直後に設定エラーが表示されたら、まず形式と方式の組み合わせを確認してください。接続を試せるもののデータがまったく届かない場合は、ネットワークに到達できないのか、認証に失敗しているのかを切り分けます。
追加プラグインやカプセル化を使う場合は、それぞれに個別の一致条件が加わります。サーバーが特定のプラグイン、Host、Pathを要求する場合、基本プロトコルのパスワードだけでは通信経路を確立できません。サーバーで有効になっていない追加層をクライアント側だけで有効にすることもできません。選択肢の有無や名称は、現在のアプリ画面とサーバー情報を確認してください。判断できない項目がある場合は、元の設定情報に戻って確認しましょう。別のサーバーで使われている「よくある設定」を流用すると、問題が複数に広がるおそれがあります。
UDPと暗号化の正しさは分けて検証する
ShadowsocksはUDPリクエストを転送できますが、実際に使えるかどうかはサーバーの対応状況と現在の項目設定によります。TCPでWebページを開けてもUDPリクエストが失敗する場合は、まずサーバーが該当機能を許可しているか、ネットワーク経路が利用可能かを確認し、アプリが実際に使っている宛先とポートを調べます。追加の通信方式が一部の通信種別にしか対応しない場合もあります。基本的なTCP接続を安定させてからUDPを個別に検証すれば、すでに正しいパスワードを何度も変更せずに済みます。
iPhoneやiPadでは、接続がシンプルだからといって待機時の消費電力が必ず低くなるわけではありません。アプリが失敗するUDPリクエストを何度も再試行したり、サーバーの応答が不安定で接続を繰り返し確立したりすると、正常に動作する複雑な接続より電力を消費することがあります。同じ通信量で、ある程度まとまった使用時間を観察してください。短時間のダウンロード速度は明らかなボトルネックの確認には役立ちますが、一日のバッテリー消費を推測するには不十分です。Wi-Fiからモバイル通信に切り替えた後も、改めて接続を確認してください。
このプロトコルは、必要な情報が揃っており、サーバーが明確にShadowsocksを使っている場合に適しています。問題が起きたら、項目をすべて入れ替えるのではなく、アドレス解決、待ち受けポート、暗号化方式、パスワード、追加の通信方式の順に確認してください。変更は一度に一項目にとどめ、都度テストし、直近で動作した設定を残しておきます。サブスクリプションの更新後に同じ名前の項目の設定が変わった場合は、更新前後の実際の項目を比較してください。表示名が同じでも、Address、Method、認証情報が変わっていないとは限りません。
VMessとVLESS:プロトコル認証と外側の保護を区別する
UUIDが似ていても、接続方法が同じとは限らない
VMessはユーザー認証と独自のデータ保護機構を備えています。一方、VLESSはよりシンプルな識別構造を採用し、通信経路の保護を主にTLSなどの外側の仕組みに委ねます。どちらもUUIDを使うことがありますが、サーバー側の処理は異なります。TypeをVMessからVLESSに変更し、残りの項目をそのままにしても変換にはなりません。既存の共有情報で指定された種類を使用してください。サーバーに両方の接続先が設定されている場合に限り、それぞれの項目を作成して比較できます。
UUIDは識別情報であり、サーバーアドレスでもサブスクリプションリンク内の任意のクエリ項目でもありません。コピー時は空白、改行、引用符が混ざっていないか確認し、全体を欠けずに保持してください。VMessにはセキュリティ設定や互換性のための項目が含まれる場合があります。サーバー情報に従って設定し、古い解説をもとに、すべてのサーバーで同じ数値が必要だと決めつけないでください。VLESSの認証項目がシンプルでも、外側の保護を省略できるわけではありません。TLSが必要な接続先でTLSを無効にすると、通常は想定どおり接続できません。
通信方式の設定は一組として確認する
TCPやWebSocketなどの通信方式は、プロキシデータの運び方を示すもので、VMessやVLESSの認証を代替するものではありません。同じアドレスでも接続先が異なり、一方はWebSocketを要求し、もう一方は直接TCP接続のみを受け付ける場合があります。通信方式を間違えても、ネットワーク層ではポートに到達できるように見えることがありますが、その後のデータを正しく処理できません。サーバーを追加するときは、通信方式とHost、Pathなどの関連項目を合わせて確認し、先頭の選択肢だけを変更しないでください。
WebSocketのPathは、サーバーがリクエストを受け取るパスです。通常は先頭のスラッシュや大文字・小文字を含め、正確に一致させる必要があります。任意のWebサイトのディレクトリではありません。Hostは関連リクエストに含まれるホスト情報、SNIはTLSハンドシェイクで使われる情報です。同じ値になることもありますが、役割は異なります。Addressが実際の接続先を示し、HostやSNIには設定上指定された名称を使う場合もあります。3つの値が異なっていても、独自に同じ値へそろえないでください。それぞれ既存の設定情報に照らして確認します。
TLS証明書の検証は、接続先の身元を確認するためのものです。「接続できる」という理由で検証を無効にしないでください。証明書のドメイン名と想定名が一致しない、証明書チェーンが不完全、デバイスの時刻が大きくずれている、といった場合はハンドシェイクに失敗することがあります。SNI、証明書、時刻を確認し、検証をスキップしないでください。別のハンドシェイク方式や特定の設定の組み合わせを必要とする接続先では、読み込み結果をそのまま保持してください。画面に選択肢が表示されても、すべてのサーバーが対応しているとは限りません。
通信方式のオーバーヘッドも含めて比較する
追加のカプセル化やハンドシェイクは最初のリクエストにかかる処理を増やしますが、体感できるかどうかは接続の再利用、往復時間、通信内容によって変わります。連続するリクエストで既存の接続を再利用できれば、初回のコストは分散されます。短い接続を何度も確立する場合は、ハンドシェイク時間の影響が出やすくなります。安定したネットワークでのダウンロード速度から、電波の弱い環境での性能を直接推測することもできません。iPhoneの日常利用ではバックグラウンドからの復帰やネットワーク切り替えがあるため、少なくともこれらの状況を含めて確認してから、現在の環境に適した組み合わせを判断してください。
「サーバーのテスト結果は出るのにWebページが開かない」場合は、ポートへの到達とリクエスト全体の成功を分けて考えてください。まずGlobal Routingで対象の通信が該当項目に送られているか確認し、次にUUIDとType、TLS、通信方式の設定を確認します。ブラウザーに証明書関連のエラーが表示された場合は、プロキシ接続先の証明書なのか、最終的なWebサイトの証明書なのかも切り分けてください。両者は別の証明書です。具体的なエラーと発生段階を記録すると、「接続できない」とだけ記録するより、変更が必要な項目を見つけやすくなります。
| 項目のグループ | 役割 | 確認方法 |
|---|---|---|
| Type / UUID | プロトコルを選び、ユーザーを識別する | サーバーのプロトコルと認証情報に一致しているか確認 |
| TLS / SNI | 通信経路の保護と認証 | 接続先の要件と証明書名を確認 |
| Host / Path | 追加の通信方式に対応する接続先を指定 | 項目ごとに照合し、互いに代用しない |
複数のプロトコル接続先がある場合は、設定情報が揃い、証明書を正しく検証できるものを優先し、そのうえで実際の使い勝手を比較してください。VLESSの構造がシンプルだからといって必ず省電力とは限りません。VMessに独自の保護機構があっても、外側の設定を無視してよいわけではありません。プロトコル名を手早く確認するには、まず対応プロトコルの概要をご覧ください。この章では、項目間の依存関係と接続に失敗する条件を説明します。
Trojan、HTTP、SOCKS5:認証成功後は通信経路も確認
TrojanのPasswordとTLSは役割が異なる
TrojanはTLS経由でプロキシリクエストを転送します。クライアントは要件に合った保護層を確立してから、プロトコルに従って認証情報と宛先を送ります。Passwordはプロキシ認証に使い、証明書は接続先の確認に使います。互いに代用できません。パスワードが正しくてもSNIが誤っていれば、認証前に失敗することがあります。証明書を検証できてもパスワードが誤っていれば、プロキシ転送は利用できません。問題を調べるときは、ネットワーク接続、TLSハンドシェイク、プロトコル認証、宛先へのアクセスの4段階に分けて確認してください。
設定時は、まずAddress、Port、Password、TLS、SNIを確認し、追加の通信方式がある場合は既存の情報に従って設定します。Addressが証明書名の由来になるとは限りません。特にIPアドレスで接続する場合も、証明書は対応するドメイン名で検証することがあります。画面に証明書検証をスキップする選択肢があっても、通常の解決策として使わないでください。サーバー証明書、名前、クライアントが想定する名称を一致させることで、接続成功が明確な認証を伴うものになります。
TrojanとほかのTLS構成では、Webページを最初に開く際にハンドシェイクの往復時間が影響することがありますが、そこから固定的な速度順位を決めることはできません。接続をどれだけ再利用できるか、サーバーが速やかに応答するか、現在のネットワークでパケットロスがあるかは、プロトコルヘッダーのサイズより重要な場合があります。モバイルデバイスがバックグラウンドから復帰すると、以前の接続が有効とは限りません。一時的に再接続しても、認証情報の誤りとは限りません。接続を確立するたびに障害とみなすのではなく、通常のリクエストが再開できるかを確認してください。
HTTPとSOCKS5はインターフェース仕様であり、通信経路を自動で暗号化するものではない
HTTPプロキシはHTTP関連の仕組みでリクエストを転送し、HTTPSの宛先にアクセスする場合は通常CONNECTで宛先までのトンネルを確立します。「接続先のWebサイトがHTTPSを使うこと」と「クライアントからプロキシ接続先までTLSを使うこと」は区別が必要です。前者はWebサイトとのセッションを保護し、後者はプロキシ接続先までの通信を保護します。両者は同じ設定ではありません。HTTPプロキシでCONNECTが使えても、任意のポートに接続できるとは限らず、サーバーのアクセス方針で接続先が制限されることがあります。
SOCKS5は汎用の接続先ネゴシエーションを提供し、ユーザー名やパスワード、複数のアドレス形式を扱えます。仕様にはUDP関連の仕組みも定義されていますが、サーバーが実装または有効化しているとは限りません。SOCKS5自体がプロキシ経路上のすべての内容を自動的に暗号化するわけではなく、ユーザー名とパスワードによる認証も暗号化の代わりにはなりません。既存の接続先に追加の保護経路があるか、現在のネットワークの信頼境界はどこかを確認し、用途に適しているか判断してください。
ドメイン名をどちら側で解決するかによって、プロキシインターフェースの動作結果が変わります。宛先をドメイン名とIPアドレスのどちらでプロキシに渡すか、クライアントのDNS設定がどう動作するか、ルールが名前解決より先に適用されるかによって、リクエスト経路が異なります。プロトコル名だけで、すべてのDNSクエリが必ずリモート側で処理されると決めつけないでください。一部のドメインだけが失敗する場合は、名前解決の結果、宛先への到達性、プロキシのアクセス制限をそれぞれ確認します。すべての宛先が失敗する場合は、まず認証と接続先への接続を確認してください。
既存の用途に合わせ、汎用性を万能性と混同しない
HTTPとSOCKS5は、既存の汎用プロキシインターフェースがあり、設定項目とアクセス範囲が明確な場合に適しています。Typeは接続先の方式と一致させてください。同じポートで両方のプロトコルを処理できるとは限りません。ユーザー名を空欄にできるか、パスワードに特殊文字が含まれるか、特定の認証方式が必要かは、サーバー情報に従って確認します。接続テストでソケットが確立しても、経路の一部が機能したことしか分かりません。認証と転送の全体を検証するには、アクセスできることが分かっている宛先に実際にリクエストしてください。
リアルタイム音声などUDPを使うアプリでは、HTTPやSOCKS5の項目でWebページを閲覧できるだけで検証を終えないでください。接続先が必要な通信種別を扱えるか確認し、同じネットワークで継続的にテストします。接続先が特定の宛先だけを対象としている場合は、そのアクセス範囲を守ってください。クライアントの選択肢を何度も変更しても、サーバー側の方針は変えられません。最終的な選択は、一覧上で最も汎用的に見える名前ではなく、実際の用途に合わせてください。
WireGuard:鍵、トンネルアドレス、許可範囲をまとめて確認
プロキシの宛先だけを指定するのではなく、IPパケットを転送する
WireGuardは、シンプルなIP層の暗号化トンネルを中心に設計されており、公開鍵で接続相手を識別し、UDPでデータを転送します。宛先アドレスを指定するアプリケーションプロキシとは異なり、トンネル内部のアドレス割り当てや、宛先トラフィックを適切な相手に送る方法もクライアントとサーバーで把握する必要があります。Shadowrocketで使う場合も、外側ではアプリ全体の通信処理とルーティング機構の影響を受けます。トンネル設定の意味をGlobal Routingのモードと完全に同一視しないでください。
鍵の対応関係は問題を調べる際の出発点です。クライアントのPrivate Keyは秘密に保ち、対応する公開鍵をサーバーに登録する必要があります。クライアントのPeer Public Keyには、サーバー側の公開鍵を指定します。両者を逆にしたり、コピーが不完全だったり、古い公開鍵を使ったりすると、ハンドシェイクに失敗することがあります。事前共有鍵が設定情報に含まれる場合は、両端で一致させてください。サーバーの公開鍵をクライアントの秘密鍵欄に入力しないでください。また、接続を直すために実際の秘密鍵をフィードバック用のスクリーンショットや公開記録に載せないでください。
Endpoint、Address、Allowed IPsを混同しない
Endpointは外部ネットワークからサーバーへ接続する場所で、通常はドメイン名またはIPアドレスとUDPポートで構成されます。Addressはトンネル内部で使うアドレスであり、デバイスの現在のWi-Fiのローカルアドレスでも、サーバーのグローバルアドレスでもありません。既存の設定にアドレスとプレフィックスが指定されている場合は、そのまま使用してください。「空いていそうな」プライベートアドレスに変更すると、サーバーのルーティングやアドレス割り当てと競合することがあります。ハンドシェイクの成功で確認できるのは、鍵と接続先が基本的に利用できることだけで、内部アドレスの正しさまでは分かりません。
Allowed IPsは、相手側に関連付ける宛先アドレス範囲を表し、ルーティングの判断にも関係します。アプリケーション層のドメインルールではありません。範囲が不足していると、ハンドシェイクが成功しても業務データが想定した接続先に送られない場合があります。範囲が広くても、それだけでShadowrocketのすべてのリクエストがConfigの選択を迂回すると判断することはできません。サーバー項目のトンネル設定とアプリ側の方針を分けて確認し、実際の宛先で検証してください。IPv6を使う場合は、トンネルアドレス、宛先範囲、サーバーの転送機能がすべて対応しているか確認します。
DNSは独立した設定項目です。トンネル経由で特定のIPアドレスにはアクセスできても、ドメイン名ではアクセスできない場合、WireGuardの暗号化ではなく、DNSサーバーへの到達性が原因のことがあります。既存の設定にあるDNSアドレスがトンネル経由でしかアクセスできない場合は、関連するリクエストが通るよう経路とルールを設定する必要があります。調査ではまずIPアドレスでのアクセスとドメイン名でのアクセスを区別し、次にDNSの結果を確認してください。名前解決の失敗に対して鍵を変更したり、ハンドシェイクがあるからといってルーティングの問題を除外したりしないでください。
MTUとKeepaliveは通信経路に合わせて調整する
カプセル化には追加の領域が必要で、MTUは関連するパケットサイズを制限します。設定が大きすぎると、経路によっては大きなリクエストが止まる、一部のWebページが読み込みきれない、継続的な通信が不安定になることがあります。一方、小さすぎると実効的な転送効率が下がる場合があります。パケットサイズに関連する問題を示す根拠がある場合に限り、慎重に調整してください。元の値を記録し、同じタスクで比較します。別のネットワークの値を、そのまま全デバイス共通の固定値として流用しないでください。
Persistent Keepaliveは、必要に応じてネットワーク上のマッピングを維持するためのもので、スループットを上げるためのスイッチではありません。モバイル通信や一部のルーター環境では、戻りの経路を保つために定期的な通信が必要な場合があります。間隔を短くしすぎると、無線通信の起動が増えます。アイドル状態からの復帰に失敗する現象があるかを確認し、最初から短い間隔に設定しないでください。iPhoneでは、画面消灯後やネットワーク切り替え後の動作を、前景での継続的なダウンロードとは分けて確認します。
| 項目 | 該当する層 | 異常の手がかり |
|---|---|---|
| Endpoint | 外部ネットワークの接続先 | UDP経路またはポートに到達できない |
| Private Key / Peer Public Key | 認証とハンドシェイク | 鍵が一致しない、またはサーバー側の登録が無効 |
| Address / Allowed IPs | トンネルアドレスと許可範囲 | ハンドシェイク後に業務データが届かない |
| MTU / Persistent Keepalive | 経路への適応と接続の維持 | 大きなリクエストの異常、またはアイドル後の復帰失敗 |
WireGuardは、トンネル設定がすべて揃っており、IP層でのアクセス範囲を明確にしたい場合に適しています。構造がシンプルでも、サーバー側の転送、ファイアウォール、アドレス設計は必要です。Endpointと公開鍵しか分からない場合、通常は設定全体を再構築するには情報が足りません。元の設定情報から不足項目を確認してください。問題を共有する場合は、エラーが発生した段階、ネットワーク種別、宛先範囲を記録できます。ただし、鍵や内部アクセス情報は管理された環境に保管してください。
Hysteria2:UDP経路を確認してから帯域を設定
QUICベースでも、あらゆるネットワークで速くなるわけではない
Hysteria2はQUICベースの通信方式を使用し、外側の通信にUDPを利用して、TLS関連の仕組みで保護された経路を確立します。さまざまなネットワーク条件でのデータ転送を意識した設計ですが、すべてのUDPネットワークで同じ性能が得られるわけではありません。Wi-Fiやモバイル通信の経路によっては、UDPの扱いがTCPと異なり、速度制限、パケットロス、マッピングの変更が起こることがあります。基本的なハンドシェイクも完了しない場合は、帯域設定を上げる前に外側の接続先に到達できるか確認してください。
QUICのマルチストリーム設計は、異なるストリーム間で発生する一部の通信層のブロッキングを抑えるのに役立ちますが、パケットロスによる帯域消費や輻輳への対処は必要であり、クライアントとサーバーの処理能力にも制約されます。アプリのリクエストが速くなるかは、通信特性と実際の負荷が合っているかによります。大容量ファイルのダウンロードが改善しても、メッセージ待機時の消費電力が下がるとは限りません。電波が弱い状態で高い送信速度を保つと、再送や発熱が増える場合もあります。実際の用途全体を通して確認してください。
認証、証明書、任意設定をそれぞれ対応させる
基本項目としてAddress、Port、認証情報、SNIを確認します。サーバーが要求する認証情報は、その形式を保って設定してください。別のプロトコルのUUIDやPasswordをそのまま流用しないでください。既存の設定に追加の難読化設定が含まれる場合は、クライアントとサーバーの両方で一致させる必要があります。どちらか一方だけで有効にすることはできません。Hysteria2と名称の似た別世代のプロトコルも、アドレスだけを見て共通利用できるとは限りません。Typeは既存のサーバー接続先に明確に対応させてください。
証明書の検証も欠かせません。接続先にIPアドレスを使う場合でも、SNIには証明書に対応するドメイン名が必要なことがあります。ドメイン名と証明書の不一致、証明書チェーンの異常、デバイスの時刻のずれなどがあると、認証前に接続に失敗することがあります。検証をスキップする設定を標準の対処にせず、既存のサーバー情報に沿って確認してください。証明書関連のエラーがある場合は、エラーの種類と想定されるドメイン名を記録します。調査中にパスワード、ポート、証明書の設定を同時に変更すると、どの変更が有効だったのか判断できなくなります。
アップロードとダウンロードの帯域項目は、現在の画面で使われている単位を確認し、サーバーが該当する輻輳制御方式を許可しているかも踏まえて設定してください。大きな数値を入力しても、利用可能な帯域が増えるわけではありません。組み合わせによっては、キューイング、パケットロス、通信の競合が増えることがあります。ネットワークの利用可能容量は時間とともに変化します。家庭用回線の公称速度は、その時点のモバイル通信で継続的に得られるスループットとは異なります。明確な根拠がない場合は、読み込み時の値または現在の実装の初期動作を維持し、再現可能なテストをもとに変更を判断してください。
「接続できない」と「接続後に不安定」を切り分ける
まったく接続できない場合は、まずドメイン名の解決結果、UDPポート、現在のネットワークで該当経路が許可されているかを確認し、その後に認証とTLSを調べてください。ネットワークを切り替えて接続できるようになっても、2つの経路条件が異なることしか分かりません。元のパスワードが誤っていたとは限りません。同じデバイスで、正常に動作することが分かっている別のネットワークを使って再テストできますが、その際はサーバー設定を変更せずに行ってください。変数を明確にしてこそネットワーク切り替えが有効な診断になります。記録のない偶然の試行で終わらせないでください。
データを転送できるものの速度が不安定な場合は、パケットロス、継続的なアップロードによるダウンロードへの影響、デバイス温度、無線電波の変化を確認します。アップロード量が利用可能な容量に近づくと、キューの遅延が増え、Web閲覧やリアルタイム通信に影響することがあります。これは「最大ダウンロード速度が足りない」問題とは別です。テスト時はほかの大容量通信を一時停止し、短いリクエスト、継続転送、リアルタイム通信を個別に確認してください。設定は一度に一項目だけ変更し、元の値に戻せるよう記録を残します。
Hysteria2は、対応するサーバーを利用でき、現在のネットワークでUDPが許可され、実際の用途で検証できる場合に適しています。あらゆるWi-Fi、モバイル通信、待機状況で最適となる固定の答えではありません。前景での連続ダウンロードだけでなく、画面ロック後の復帰、ネットワーク切り替え、通信量の少ない用途もテストしてください。これらは日常の使い方に近い状況です。最終的に残す設定は、各項目の根拠を説明でき、証明書を正しく検証でき、複数回のテストで安定したものです。1回のテストで最高値が出た設定ではありません。
読み込み後の項目確認とGlobal Routingの役割
読み込みの成功は、内容が認識されたことを示すだけ
サブスクリプションや共有リンクがShadowrocketに受け付けられても、サーバーが現在利用可能であることや、すべての項目が接続先の設定に合っていることを意味しません。読み込み後はType、Address、Port、認証項目、通信方式を確認してから、サーバーを選んでテストしてください。既存のサブスクリプションは自分の設定元から更新情報を取得し、更新によって手動の変更が上書きされる場合があることにも注意してください。長期的に残したいローカル設定は、どの項目がサブスクリプションによって管理されるかを確認し、次回の更新時にアプリが勝手に変更したと誤解しないようにします。
共有リンクとSubscribeのサブスクリプションは役割が異なります。前者は通常、一つの項目を表します。後者は複数の項目を返し、継続的に更新されることがあります。また、異なるエンコードや形式が使われる場合もあります。QRコードは内容を別の方法で読み込むためのもので、誤った設定を正しくするものではありません。Scan QR Codeで読み込んだ後も、特に特殊文字を含む認証情報、パス、追加項目を確認してください。サブスクリプションのURL自体にアクセス情報が含まれることもあります。公開スクリーンショット、記録、共有可能な障害報告に表示しないよう注意してください。
まずモードで経路を確認し、次にルールで細かく振り分ける
Global RoutingのConfig、Proxy、Directは、それぞれ設定ルールに従う、プロキシ経路を使う、直接接続する状態を表します。Configは現在有効な設定ルールに基づいてリクエストを処理し、Proxyは主にリクエストをプロキシ経路へ送り、Directは直接接続します。これらが決めるのはリクエストの行き先であり、サーバープロトコルの認証方式ではありません。特定のサーバーを調べるときは、まず明確なプロキシ状態で確認してから、Configに戻って振り分けを調べてください。テスト後は、日常の用途に適したモードに戻します。
| モード | 主な用途 | これだけでは分からないこと |
|---|---|---|
| Config | 有効な設定のルールに従ってリクエストを振り分ける | 特定の宛先が必ず現在のサーバーを経由する |
| Proxy | プロキシ経路とサーバーの動作を確認する | すべてのアプリの動作がプロトコルだけで決まる |
| Direct | 現在のネットワークで直接接続した場合を比較する | プロキシ認証や通信方式の設定が正しい |
ルールは通常、記述順に照合されます。先にある具体的な条件が、後の広い条件より先に適用されることがあります。DOMAIN-SUFFIXはドメインのサフィックス、IP-CIDRはIPv4アドレスの範囲を扱い、FINALはそれ以前のルールに一致しない場合の最終方針です。ルールでPROXYまたはDIRECTを指定することはできますが、Password、UUID、証明書の誤りは修正できません。あるドメインが直接接続なら正常でConfigでは失敗する場合は、まず適用されたルールを確認し、プロキシ接続先と宛先サービスのどちらで失敗したかを判断してください。
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.168.0.0/16,DIRECT
GEOIP,CN,DIRECT
FINAL,PROXY
これは照合順序を説明するための.confの例であり、日常利用の完全な設定ではありません。example.comは説明用のドメインで、プライベートアドレスの範囲はアドレスルールを示しています。GEOIPの結果は、使用するデータと実際の宛先アドレスによって異なります。正しい[Rule]セクションに置いて読み取り、Add Serverの認証項目に貼り付けないでください。セクション間の関係について詳しくは、設定ファイルのGeneral、Rule、Host、URL Rewriteの解説をご覧ください。
DNSとOn Demandはプロトコル認証とは別の設定
DNSはドメイン名の解決方法を決め、ルールはリクエストの経路を決めます。両者は影響し合うことがありますが、どちらもサーバーのTypeとは別です。ドメイン名が複数のアドレスに解決される場合、アドレスごとに到達性が異なることがあります。プロトコル名だけを変更しても、名前解決の誤りは解消しません。IPv6も個別に確認してください。デバイスにIPv6アドレスが割り当てられていても、既存のサーバーがすべてのIPv6宛先を転送できるとは限りません。実際のアドレス種別とリクエスト経路を確認し、DNS、ルーティング、サーバー機能のどれを調整すべきか判断してください。
On Demandは条件に応じて接続を開始するタイミングを制御します。VMessをVLESSに変換する機能ではなく、Configのルールを代替するものでもありません。有効にした後、ネットワークの変化に合わせて自動接続が始まる場合は、まず起動条件を確認してください。接続済みなのに一部の宛先だけ失敗する場合は、ルール、DNS、プロトコルの設定に戻って確認します。「いつ接続するか」と「接続後にどう振り分けるか」を分けて記録すると、特定のWebサイトを直すために自動接続設定を繰り返し変更せずに済みます。
手動で変更する前に、復元可能な設定を残し、公開してはいけない情報が含まれていないか確認してください。アプリのDataで通信の有無を確認できます。利用可能な場合は接続記録も、適用方針やエラーの段階を判断する手がかりになります。ただし、通信量が増えてもリクエストが最終的に成功したとは限りません。効率的な確認順序は、項目の不足がないか、プロトコルが一致しているか、外側の接続先に到達できるか、認証に成功したか、ルールが適用されたか、宛先から応答があるかです。各段階の結果を明確にしてから次へ進み、複数の層を同時に変更しないでください。
用途ごとに速度・バッテリー消費・接続の安定性を比較
一つの数値だけでなく、再現できるテストを行う
有効な比較を行うには、デバイス、ネットワーク、テスト対象、使い方を固定し、サーバー項目とGlobal Routingの状態を記録します。2つのプロトコルが異なるサーバーに接続している場合、結果にはサーバー負荷、外向き回線、経路の違いも含まれます。すべてをプロトコルの違いとみなすことはできません。テスト前に明らかなバックグラウンド通信を一時停止し、その間にサブスクリプションの項目が変更されていないことを確認してから、同じ操作を数回実施してください。最高速度よりも、エラーが起きた段階を記録する方が原因の特定に役立ちます。
Connectivity Testの結果は、現在のテスト方法に照らして読み取ってください。DNS、プロトコル全体の認証、TLS、最終的なWebサイトへのリクエストのすべてを検証するとは限りません。テスト時間が短くても動画を安定して再生できるとは限らず、応答がない場合も、すべての用途が使えないと証明されたわけではありません。初期判断の手がかりとして利用し、実際のリクエストでも検証してください。テスト一覧では正常でも対象ページが開かない場合は、テストを繰り返すだけでなく、ルーティング、認証、宛先側の応答を確認します。
日常の通信を3つに分けて確認
Web閲覧や軽いリクエストでは、最初に使えるまでの時間と、繰り返しアクセスしたときの一貫性を確認します。正常にアクセスできることが分かっている宛先を選び、初回表示、戻ってからの再表示、複数ページへの連続アクセスをそれぞれ確認してください。初回は遅くても、その後は正常なら、名前解決、ハンドシェイク、接続の再利用が関係している可能性があります。特定の宛先だけ失敗し続ける場合は、宛先への経路とルールを調べます。この場合は、設定項目が簡潔で、検証が完了し、安定して応答する既存の設定を優先し、連続ダウンロードの最高値を追い求める必要はありません。
継続的なダウンロードや動画では、維持できるスループット、速度の変動、再試行の状況を確認します。開始直後は速くても、その後に低下する場合は、輻輳、サーバー負荷、無線環境が原因の可能性があります。最初の数秒だけの結果で判断しないでください。リアルタイム通信では、平均スループットが高くても音声が途切れることがあるため、遅延の変化、パケットロス、UDPへの対応が重要です。Hysteria2とほかの既存の接続先を比べる場合は、同じ用途でテストし、それぞれが必要とする外側の通信方式を現在のネットワークが許可しているか確認してください。条件が揃っていなければ公平に比較できません。
待機中や移動中の利用では、画面ロック後の復帰、Wi-Fiからモバイル通信への切り替え、通信量の少ない状態が長時間続いた場合を確認します。普段の利用に近い時間帯でシステムのバッテリー使用状況を観察し、画面、電波、ほかのアプリの動作も考慮してください。短時間のテストでは、プロトコル自体の消費電力を正確に切り分けられません。デバイスが発熱し、アップロード量の増加や再試行の繰り返しが見られる場合は、まず具体的な通信と失敗の原因を調べてください。異常な通信がない場合は、接続維持と復帰の動作を確認します。もともと安定している接続を省電力のために壊さないようにしてください。
失敗した段階から変更範囲を絞る
まったく接続できない場合は、まずデバイス自体がネットワークに接続できるか、Addressが解決されるか、Portと外側の通信方式に到達できるかを順に確認し、その後で認証と証明書を調べます。接続は有効なのにすべての宛先で失敗する場合は、Global Routing、現在選択しているSERVER、DNS、ルールを確認してください。一部の宛先だけが失敗する場合は、その宛先の名前解決結果、アドレス種別、適用ルール、サーバーのアクセス機能を優先して確認します。より詳しい手順は接続済みなのにWebページが開かない場合の確認リストをご覧ください。
| 現在の用途 | 優先して確認する項目 | 設定を選ぶ根拠 |
|---|---|---|
| 日常のWeb閲覧 | DNS、ハンドシェイク、ルール、短いリクエスト | 複数回のアクセスが安定し、エラーの原因を説明できる |
| 継続的なデータ転送 | 継続スループット、輻輳、デバイスの温度 | 瞬間的な最高速度ではなく、タスク全体の結果 |
| リアルタイム通信 | UDP、パケットロス、遅延の変動 | 実際の通信が途切れないこと |
| 内部IPアドレスへのアクセス | トンネルアドレス、宛先範囲、戻りのルート | 必要なアドレスに到達でき、範囲が想定どおりである |
複数の接続先がある場合は、まず設定情報が不完全なものや、身元を正しく検証できないものを候補から外し、実際の用途に応じて比較してください。内部アドレスへのアクセスが必要なら、設定が揃ったWireGuardをトンネルの範囲に照らして確認します。汎用プロキシのインターフェースを使う場合は、HTTPまたはSOCKS5をその対応機能に合わせて利用します。そのほかのプロトコルは、サーバーの対応状況と現在の通信経路をもとに選んでください。ここでの用途別の案内は固定の順位ではありません。同じプロトコルでも、ネットワークやサーバー設定によって結果は異なります。
最終的な設定について、次の4点を説明できるようにしてください。なぜこのTypeを選んだのか、各認証項目はどこから取得したのか、どのリクエストがこの接続先を通るのか、問題が起きたときどの層から確認するのか。設定の確認後は使い方に戻り、読み込みから接続までの手順をもう一度確認してください。アプリの入手元を再確認する場合は、正規アプリの3項目確認で、開発者のShadow Launch Technology Limited、公式アイコン、アプリID 932747118を照合します。根拠が明確で復元可能な設定を保つ方が、未確認の組み合わせを何度も試すより有効です。