Shadowrocketのプロトコル設定
と接続タイプの選び方
お手元のサーバー情報をもとに、プロトコル、トランスポート、ルーティングを区別し、設定項目や速度、電池消費を確認します。
このページは、疑問点を調べるための技術マニュアルです。プロトコルを選ぶ理由や設定項目の関係、接続できないときに確認する箇所を解説します。初めて使う場合は、まず使い方ガイドに沿って設定を読み込み、接続を確認してから、このページで詳細を確認してください。ここでは基本的な導入手順の代わりとなる説明や、サブスクリプション・サーバー情報の提供は行いません。
iPhone / iPad版はApp Storeで2.99米ドルの買い切りです。システム要件はApp Storeの掲載内容をご確認ください。Mac(Appleシリコン・Intel)、Windows、Android、Linux版は無料です。入手方法は全プラットフォームのダウンロードをご覧ください。その他のプラットフォームのインストーラーは、当サイトのダウンロードページからサイト内の /dl/ を通じて提供しています。
- プロトコルとトランスポートを分けて確認
- 速度と電池消費を個別に測定
- 一度に変更する設定は一つだけ
接続の各レイヤー:プロトコルだけでは通信全体を説明できない
まず三つの異なる要素を区別する
Shadowrocketでは、プロトコルは「クライアントとサーバーがどのようにリクエストをやり取りするか」、トランスポートは「データをどの経路で届けるか」、ルーティングは「接続をどのポリシーに振り分けるか」を決めます。これらは関連していますが、互いに置き換えられるものではありません。たとえば、VLESSを選んでもWebSocketを選んだことにはなりません。TLSを有効にしても、すべてのアプリ通信がプロキシ経由になるわけではありません。サーバーを選択しても、Config内のすべてのルールがそのサーバーを使うとは限りません。トラブル対処を始める前に三つのレイヤーを整理すれば、誤った箇所の設定を繰り返し変更せずに済みます。
通常、アクセスはローカルアプリからのリクエスト、名前解決、Global Routingとルールの判定、サーバーへの接続、認証またはハンドシェイク、サーバーから接続先へのアクセスという段階を経ます。キャッシュ、接続の再利用、リモート名前解決などにより順序が変わる場合もありますが、基本的な役割は同じです。Homeにサーバー項目が表示されるのは、設定が存在することを示すだけです。Connectivity Testの結果も、選択したテスト方法で使われた経路が利用できることを示すにとどまり、接続先のWebサイト、UDPを使うアプリ、すべてのルールが正常であることまでは証明しません。
プロキシプロトコルとトンネルプロトコル
Shadowsocks、VMess、VLESS、Trojan、HTTP、SOCKS5は、一般に接続やリクエストの転送に使われます。WireGuardはIPパケットを運ぶトンネル方式で、設定にはアドレス、ルートのプレフィックス、ピアの公開鍵が含まれます。Hysteria2はQUICを基盤としてプロキシ通信を行います。これらは名前だけの違いではありません。サーバーは対応するプロトコルを稼働させ、クライアントの認証情報やネゴシエーション方法も一致させる必要があります。TrojanのパスワードをSOCKS5に入力して、ポート番号が同じというだけで接続できるわけではありません。
| レイヤー | 主な項目 | 主な確認点 |
|---|---|---|
| プロトコルと認証 | Type、Password、UUID、PublicKey | サーバーのタイプと認証情報が一致しているか |
| トランスポートとセキュリティ | TCP、UDP、TLS、WebSocket | 通信経路、証明書の名前、パスが一致しているか |
| ルーティングとポリシー | Config、Proxy、Direct、Rule | 実際のリクエストが想定したポリシーに振り分けられているか |
| 接続先と名前解決 | DNS、接続先アドレス、ポート | 名前を解決できるか、接続先サービスに到達できるか |
速度も要素ごとに分けて確認する必要があります。ページを初めて開くときの待ち時間には、名前解決、接続、ハンドシェイクが含まれます。大きなファイルのダウンロードではスループットが表れやすく、ビデオ通話ではジッター、パケットロス、UDP経路がより重要です。ハンドシェイクを一度減らせば初回のリクエストが速くなる可能性はありますが、継続的なダウンロード速度が上がるとは限りません。サーバーの混雑、出口帯域、ネットワーク間の経路、接続先の速度制限が、より大きな制約になる場合もあります。そのため、プロトコルに一律の速度順位を付けるのは適切ではありません。
把握できる範囲で変数を絞る
選び方は、手元にある情報の確認から始めます。まずサーバーが指定するプロトコルを確かめ、次に提供されているトランスポート、安全設定、利用可能なポートを確認してください。サブスクリプションを読み込んだ後は元の項目を残し、複製した項目で試します。Subscribeの更新で項目が再生成される場合は、どの値がサブスクリプション由来で、どれがローカルで変更したものかを記録してください。プロトコル、DNS、ルール、サーバーを同時に変更すると、接続が復旧しても、どの変更が有効だったのか判断しにくくなります。
iOSでの電池消費も通信経路全体の影響を受けます。プロトコルの暗号化は処理リソースを使い、再送は通信量を増やし、キープアライブは無線接続を起こします。さらに、アプリの同期やメディアのデコードでも電力を消費します。VPNの状態が表示されるのは、システムのネットワーク拡張が動作していることを示すもので、消費電力の測定ではありません。後述のテスト方法では、こうした変数を分け、アプリのバックグラウンド動作をプロトコルの影響と取り違えないようにします。
Shadowsocks:シンプルなプロキシと暗号化方式
設計の背景と適用範囲
Shadowsocksは、比較的シンプルな暗号化プロキシ経路を提供することを重視して設計されています。クライアントは接続先アドレスと通信データを仕様に沿ってカプセル化し、サーバーが検証してリクエストを転送します。完全な仮想LANの仕組みではなく、Typeに選んだだけでアプリのルーティングが自動的に設定されるわけでもありません。ユーザーが押さえておくべきなのは、プロトコルの歴史より、同じプロトコル名でも暗号化方式や形式が異なる点です。サーバーが受け付ける方式と同じものをクライアントで選ぶ必要があります。名前が似ているからといって互換性があるとは限りません。
初期のストリーム暗号方式と、後に登場したAEAD方式では、データ形式と認証機能が異なります。AEADは暗号化と完全性検証を組み合わせ、改ざんされたデータを検出できます。ただし、AEADという名前を含む方式がすべて互換性を持つわけではありません。新しい方式の中には、鍵の長さやエンコード形式に特別な要件があるものもあります。入力時は手元にあるサーバー設定を基準にしてください。クライアントの一覧にない方式を、名前の似た別の方式で代用することはできません。
Address、Port、Method、Password
Add ServerでShadowsocksを選択したら、まずAddressとPortを確認します。Addressはプロキシサービスを提供するホスト名またはIPアドレスであり、サブスクリプションのURLやアクセス先Webサイトのアドレスではありません。Portはそのサービスが待ち受けるポートです。ホスト名にWebページのパス全体を含めないでください。IPv6アドレスも各フィールドの指定に従って入力します。QRコードやサブスクリプションから取得した情報は、まず自動解析された内容を維持し、元の情報と項目ごとに照合してください。手作業で分割する際にポートや追加パラメーターを落とすのを防げます。
Methodは両者が鍵と暗号文をどのように扱うかを決め、Passwordは一文字ずつ完全に一致させる必要があります。通常のパスワードから鍵を導出する方式もあれば、所定の形式の鍵情報を必要とする方式もあります。「パスワードが長いほど互換性が高い」と単純に考えることはできません。コピー時は末尾の改行、全角記号、見えない空白に注意してください。サーバーの管理画面に表示されたエンコード済み文字列を、独自に再エンコードしないでください。認証に失敗した場合は、すぐにDNSを変更するのではなく、まずMethodとPasswordの組み合わせを確認します。
| 項目 | 意味 | 混同しやすい内容 |
|---|---|---|
| Address / Port | プロキシサービスの接続先 | サブスクリプションURL、接続先Webサイトのアドレス |
| Method | 暗号化と認証の方式 | 名前が似ているという理由だけで方式を置き換えること |
| Password | その方式で使用する認証情報 | 余分なエンコード、貼り付け時の空白 |
| UDP | データグラムの転送機能 | TCPだけを確認してUDPも正常だと判断すること |
UDP、追加トランスポート、iOSでの動作
ShadowsocksではTCPとUDPの経路をそれぞれ確認する必要があります。Webページが開けても、ゲームや通話のデータグラムが届くとは限りません。クライアントの設定、サーバーの転送機能、途中のネットワークがUDPを制限する場合があります。接続先アプリが別のポートを使うこともあります。サーバー情報に追加トランスポートの設定が含まれる場合は、現在のクライアントに対応する項目があることを確認し、内容を正確に入力してください。基本のプロトコル名が同じでも、追加トランスポートの互換性まで同じとは限りません。
iPhoneでは、比較的シンプルなデータのカプセル化によって処理負荷を抑えられる可能性がありますが、実際の速度は暗号化方式、デバイスの性能、ネットワーク経路にも左右されます。大容量のダウンロードを続けると処理負荷が表れやすく、メッセージをたまに開く程度なら、接続の確立や無線の起動のほうが重要な場合もあります。プロトコルの構造がシンプルだから必ず電池消費が少ないとは言えません。また、1回の速度テストで出た高いピーク値を、継続的なスループットとみなすべきではありません。
トラブル対処は三つの状況に分けて考えます。接続先への接続が常にタイムアウトする場合は、ホスト、ポート、現在のネットワークを確認します。接続直後に失敗する場合は、MethodとPasswordを確認します。Webページは正常でも一部のアプリで失敗する場合は、UDP、ルールの一致、名前解決を確認します。Subscribeから取得した項目を変更する場合は、更新で修正内容が上書きされないよう、元の値を残して複製した項目で試してください。この順序で確認すれば、関係のない設定を次々に切り替えるより効率的です。
VMessとVLESS:認証、トランスポート、TLS
一つの設定に複数のレイヤーの名称が含まれることがある
VMessとVLESSでは、プロトコル本体と外側のトランスポートを区別する必要があります。設定にはUUID、TLS、WebSocket、Host、Pathなどが同時に含まれる場合があり、それぞれ役割が異なります。UUIDは識別に使われ、トランスポート設定はデータの運び方を決め、TLSは該当する通信経路を暗号化し、サーバーの身元を確認します。一つの値を正しく入力しても、ほかのレイヤーの不一致は補えません。特に、UUIDがあるからといって、その項目のプロトコルを判断することはできません。
VMessは独自の認証とデータ保護の仕組みを備えており、設定にセキュリティ方式などが含まれる場合があります。一方、VLESSはよりシンプルな設計で、内部のコンテンツ暗号化を中核機能とせず、通常は外部のセキュリティレイヤーと組み合わせます。この違いを「複雑なら遅く、シンプルなら速い」と単純化することはできません。実際の接続ではTLSや別のトランスポートが重なり、ハンドシェイクの回数、接続の再利用、サーバーの実装によって最終的な負荷が変わります。
UUID、セキュリティ方式、システム時刻
UUIDにはサーバーから割り当てられた値をそのまま使用してください。勝手に再生成したり、別のユーザーの識別子を現在の項目に流用したりしないでください。VMessの一部の認証処理は時刻に関係するため、デバイスの時刻が大幅にずれていると、設定が正しく見えても認証に失敗することがあります。その場合は、まずシステムの日付と時刻が正しく同期されていることを確認し、元の情報が有効かどうかを調べてください。時刻を調整するのは認証を回避するためではなく、ローカル時計の誤りを除外するためです。
VMessのセキュリティ方式は、サーバーの指定に従って選択してください。読み込み後に以前の互換性に関する項目が表示されても、別のガイドのスクリーンショットを根拠に特定の値へ変更しないでください。利用条件は環境によって異なります。VLESSの識別情報で外側のセキュリティ設定を代用することもできません。特に、TLSを無効にしてもVLESSと表示される場合、プロトコル名が不足した暗号化レイヤーを補うわけではありません。サーバーが提供する設定一式を確認してください。
| 項目 | 役割 | 確認方法 |
|---|---|---|
| Address | 実際に接続するサーバーの入口 | 名前解決ができ、ポートで対象サービスが稼働していることを確認 |
| Server Name / SNI | TLSハンドシェイクと証明書の身元確認 | サーバーの指定および証明書の名前と一致させる |
| Host | 一部のHTTP系トランスポートで使うリクエスト先ホスト | トランスポートの入口に合わせて設定 |
| Path | WebSocketなどのトランスポートで使うリクエストパス | 大文字・小文字、スラッシュ、パス全体を確認 |
WebSocket、TLS、接続時の負荷
WebSocketでは、まず所定のHTTP通信を確立してから後続のデータを運びます。TLSを有効にしている場合は、安全なハンドシェイクも必要です。そのため、初回接続の遅延には複数の準備段階が含まれることがあります。ただし、一度確立して再利用される接続では、すべての手順をパケットごとに繰り返す必要はありません。初回は遅く、その後は速い場合、すぐにプロトコルの不安定さと判断せず、名前解決のキャッシュ、TLSセッション再開、接続の再利用を考慮してください。
Address、SNI、Hostは、同じ場合もあれば、構成によって異なる場合もあります。無理に同じ値に揃えないでください。AddressにIPアドレスを使っても、証明書の検証にはドメイン名が必要な場合があります。Pathが一文字でも違うと、リクエストがサーバーに届いても、正しいプロキシサービスにつながらないことがあります。証明書エラーが出た場合は、名前、有効期間、デバイスの時刻を確認してください。検証を無効にしたまま使うのは避けてください。
iOSでは、追加のカプセル化によって接続確立の処理が増える場合がありますが、接続を再利用すればハンドシェイクを繰り返さずに済むこともあります。Wi-Fiとモバイル通信を頻繁に切り替えると、下位の接続を再確立する必要が生じます。短時間に何度も再接続することが、1回の暗号化処理より使用感に影響する場合もあります。VMessとVLESSを比較する際は、サーバー経路を近づけ、外側のトランスポートと負荷を揃えてください。条件が異なると、結果をプロトコルの差に結び付けられません。
Trojan、HTTP、SOCKS5:接続プロキシの異なる役割
TrojanでTLSが必要となる理由
Trojanは、プロキシ認証とTLS通信を組み合わせる設計です。クライアントはまずサーバーに到達し、適切な安全な接続を確立します。その後、サーバーが認証情報を確認してリクエストを転送します。そのため、Password、サーバーアドレス、ポート、TLSの身元確認設定がすべて必要です。パスワードが正しくても証明書名が一致しなければ、認証前に接続が失敗する場合があります。TCP接続が確立できたからといって、そのポートで想定どおりのTrojanサービスが稼働しているとは限りません。
設定時は、Addressが接続先を指定し、Server NameまたはSNIがTLSハンドシェイクで必要な名前に対応し、Passwordがプロキシ認証に使われます。サーバーがドメイン名の証明書を使い、接続先としてIPアドレスが指定されている場合は、手元の情報に記載された名前を維持してください。証明書の有効期間、システム時刻、信頼チェーンも検証に影響します。エラーを消すために証明書の確認を無効にしたまま使うのは避けてください。サーバーの身元確認が弱まり、本来修正すべき設定ミスも見逃すおそれがあります。
HTTPプロキシはHTTPサイトへのアクセスと同じではない
HTTPプロキシは、プロキシリクエストやCONNECTなどの仕組みを使って接続を中継します。TypeにHTTPと表示されるのは、クライアントとプロキシの通信方式を示しており、HTTPサイトだけにアクセスできるという意味ではありません。HTTPSの接続先には、通常トンネル方式で通信します。一方、接続先がHTTPSでも、クライアントからプロキシまでの通信全体がTLSで保護されるとは限りません。プロキシへの接続自体が暗号化されているか、認証情報がどのレイヤーで保護されるかを別々に確認してください。
HTTPプロキシは、既存の組織ネットワークや、明示的に提供された接続先で使われることがあります。Address、Port、Username、Passwordは同じ設定情報をもとに入力してください。ユーザー名が空の場合と、ユーザー名を入力しない場合をサーバーが区別することもあります。サーバーがCONNECTで接続できるポートや接続先の範囲を制限している場合、それはプロキシポリシーの一部です。あるWebサイトには接続できても別の種類のサービスに失敗する場合は、こうした制限を考慮してください。接続先のDNSを変えるだけでは解決できないことがあります。
SOCKS5の認証とUDPの条件
SOCKS5は、クライアントがプロキシに接続を要求する手順を定義しており、ユーザー名とパスワードによる認証を含めることもできます。基本のSOCKS5自体には、通信内容を暗号化する機能はありません。別途、保護された通信経路が用意されているかは、実際の構成を確認してください。管理されたネットワークで提供されるSOCKS5には明確な用途がある場合がありますが、ログインパスワードを暗号化通信と同じものと考えないでください。また、WebページがHTTPSだからといって、ほかの通信の保護範囲を無視することもできません。
| プロトコル | 主な前提条件 | よくある失敗原因 |
|---|---|---|
| Trojan | TLSとプロキシ認証の両方が一致している | 証明書名、パスワード、ポートの不一致 |
| HTTP | 必要なリクエストと接続先ポートを受け付ける入口 | 認証、CONNECTの許可、入口タイプの誤り |
| SOCKS5 | 必要な認証方式とコマンドにサーバーが対応している | UDP転送が利用できない、または認証方式が一致しない |
SOCKS5でUDPを使うには、サーバーとネットワーク経路の両方が対応している必要があります。TCP CONNECTが正常でも、UDP ASSOCIATEのネゴシエーションや、その後のデータグラムが制限される場合があります。プロキシが返すデータグラム用アドレスにクライアントから到達できないと、制御接続は成功してもアプリは使えないことがあります。その場合は、TCPのテスト結果だけですべての機能が正常だと判断せず、UDPの入口、返されたアドレス、接続先アプリを個別に確認してください。
iOSでの違いをどう捉えるか
TrojanのTLSハンドシェイクには一定の初期負荷がありますが、安定した接続なら、その後のデータ通信を継続して運べます。HTTPやSOCKS5はプロトコル上のやり取りが比較的シンプルでも、経路が短い、または速度が高いとは限りません。比較する際は、接続先、サーバーの出口、接続再利用の条件も揃えてください。特定のプロトコルが現在のWi-Fiだけで使える場合は、そのネットワークで許可されるトランスポートやポートを調べ、プロトコルに恒久的な優劣を付けないでください。
選ぶ順序は、「手元の接続先で何が使えるか」「用途に何が必要か」「保護範囲が明確か」です。TLSによる身元確認が必要なら、Trojanのセキュリティ設定を確認してください。組織からHTTPまたはSOCKS5の入口が提供されている場合は、許可された範囲で利用します。一般的な接続の疑問はよくある質問をご覧ください。Typeを変更しても、サーバーが対応プロトコルを自動的に追加することはなく、既存アカウントのアクセス権も変わりません。
WireGuard:鍵、アドレス、ルートプレフィックス
一般的なプロキシとは設定項目が異なる理由
WireGuardはIPパケットを運ぶトンネル方式で、固定された最新の暗号構成要素と、比較的シンプルなハンドシェイクを採用しています。ユーザー名とパスワードの入力欄で接続先を識別するのではなく、鍵で相手との身元関係を確立し、ピアを通すアドレス範囲をルーティングに関連付けます。そのため、ShadowrocketでWireGuardの項目を見るときは、鍵、トンネルアドレス、Endpoint、AllowedIPsを分けて理解してください。一般的なプロキシの「アドレスとパスワード」の入力方法をそのまま当てはめることはできません。
PrivateKeyはローカル側の秘密鍵で、PublicKeyは通常、ピアの公開鍵を指します。どちらもエンコードされた文字列に見えますが、識別する対象と方向が異なります。秘密鍵をピアの公開鍵欄に入力したり、文字列の長さが似ているからと入れ替えたりしないでください。PresharedKeyは任意の追加共有情報です。双方で使うと合意している場合にのみ入力します。独自に値を追加しても利用可能性は高まらず、かえって双方のハンドシェイク条件が一致しなくなります。
Endpointとトンネルアドレス
Endpointは、ピアがUDP通信を受け付ける実際のホストとポートです。トンネルのAddressは、ローカル側がトンネル内で使うアドレスです。両者は異なるレイヤーにあります。外部から到達できる入口があっても、内部アドレスの割り当てが正しいとは限りません。内部アドレスが正しくても、入口のポートに到達できなければ接続できません。手元の設定を画面に入力する際は、アドレスのプレフィックス長を維持し、IPv4とIPv6をそれぞれ資料どおりに設定してください。ローカルLANのアドレスを独自に置き換えないでください。
AllowedIPsは、どの宛先アドレスをピアに渡すかと、受信データがどの送信元アドレスに属するべきかの両方に関係します。広いプレフィックスはより多くの宛先を含み、狭いプレフィックスは指定されたネットワークだけを対象にしますが、一般的なWebサイトへのアクセス許可リストではありません。クライアントのGlobal Routing、Configのルール、システムのネットワーク拡張も、通信がこの項目に入るかどうかに影響します。そのため、広い範囲のプレフィックスが表示されているだけで、すべてのアプリがトンネルを使うと判断することはできません。
| 項目 | 役割 | 確認する関係 |
|---|---|---|
| PrivateKey | ローカル側の識別情報 | サーバーに登録されたローカル側の公開鍵と一致させる |
| PublicKey | ピアの識別情報 | 現在のピアから取得したもの。ローカル側の公開鍵ではない |
| Endpoint | 外部のUDP接続先 | ホスト、ポート、現在のネットワークからの到達性 |
| AllowedIPs | ピアに関連付けるアドレス範囲 | 必要な宛先が含まれ、ルート範囲を誤解しないこと |
| MTU | トンネルで運べるパケットサイズ | 下位経路とカプセル化のオーバーヘッドに合わせる |
MTU、キープアライブ、モバイルネットワーク
MTUはトンネル内のパケットサイズ上限を決めます。下位経路が大きなカプセル化パケットを運べないと、小さなリクエストは通る一方、大きなページの読み込みやアップロードが止まることがあります。MTUの変更は、認証とルーティングの誤りを除外してから行い、元の値を残して段階的に確認してください。特定のネットワークで有効だった値を、すべてのデバイスに共通の値と考えないでください。IPv6とIPv4で経路が異なる場合も、Webページの読み込みを一度見るだけでなく、個別にテストしてください。
PersistentKeepaliveは、所定の間隔で一部のネットワークアドレス変換のマッピングを維持するために使われます。頻度を上げれば安定するというものではありません。間隔を短くするとバックグラウンド通信や無線の起動が増える場合があり、長くするとマッピングの寿命に合わない場合があります。まず、通信がない状態の後に接続を復旧できない問題が実際にあるか確認し、サーバーの推奨に従って調整してください。モバイルネットワークの切り替え時には、入口への到達性、アドレスの変更、アプリの再試行動作も復旧に影響します。
WireGuardのハンドシェイク成功は、鍵の関係と一部の通信条件が成立したことを示すだけです。内部サービスへ接続するには、ピアの転送、戻りルート、アドレス割り当て、DNSも正常である必要があります。ハンドシェイクは成功しているのに通信できない場合は、ルールの一致を調べる前に、AllowedIPs、トンネルアドレス、サーバー側の戻り経路を確認してください。各項目の詳しい説明はWireGuard設定ガイドをご覧ください。問題を共有する際は、秘密鍵と実際の内部ネットワーク情報を伏せてください。
Hysteria2:QUIC、UDP、帯域設定
設計の目的と実際の制約
Hysteria2はQUICを基盤にプロキシ通信を行い、スループット、パケットロス、さまざまなネットワーク経路を考慮して設計されています。QUICはUDP上で動作し、安全な接続と多重化を提供しますが、アプリケーションのデータが失われた後に復旧が不要になるわけではありません。また、下位ネットワークがUDPを自動的に許可するわけでもありません。選択する前に、手元のサーバーがHysteria2を提供していることと、現在のクライアントがサーバー指定の認証やトランスポート設定に対応していることを確認してください。
TCPベースの方式とは、データの復旧や輻輳制御を行う実装レイヤーが異なるため、パケットロスや経路変化のある環境では挙動が変わることがあります。ただし、「UDPを使う」ことは速さを保証しません。ネットワークによってはUDPを制限したり、大きなデータグラムを制限したりします。サーバーの出口や接続先Webサイトがボトルネックになることもあります。実際の経路と負荷が合って初めて、プロトコル設計の利点が使用感に表れます。
接続先、認証、TLSの身元確認
AddressとPortはサーバーのQUIC接続先を指定します。認証欄には、手元の設定に記載された内容を使ってください。認証情報に区切り文字が含まれる場合もあります。別のプロトコルのユーザー名とパスワードに分けて入力しないでください。Subscribeから読み込んだ場合は、解析後のTypeと設定項目がすべて揃っているか確認します。名称が似ていたり、どちらもHysteriaという文字を含んでいたりしても、設定形式をそのまま置き換えられるとは限りません。
QUICでもTLSによる身元確認は重要です。Server Nameはサーバーの設定と証明書の要件に合わせてください。IPアドレスを接続先に使う場合でも、証明書名には指定されたドメインが必要なことがあります。証明書エラー、認証エラー、UDPのタイムアウトはそれぞれ異なる段階で発生するため、別々に対処してください。証明書エラーでは名前と信頼チェーン、認証エラーでは認証情報、タイムアウトでは接続先とネットワーク経路を確認します。すべてのエラーを「帯域の値が正しくない」と考えると、本当の原因を見失います。
| 設定項目 | 用途 | 注意点 |
|---|---|---|
| Address / Port | QUIC接続を確立する | TCPポートだけでなくUDP経路を確認する |
| 認証情報 | 利用が許可されたクライアントを識別する | 分割や再エンコードをせず、そのままコピーする |
| Server Name | TLS接続先の身元を確認する | サーバーの指定と証明書に一致させる |
| アップロード / ダウンロード帯域 | 対応する速度制御設定に使用する | 単位と方向を確認し、実際の経路に合わせて設定する |
| 追加パラメーター | サーバー指定の設定に合わせる | 資料で指定され、クライアントが対応している場合のみ設定する |
帯域の値は性能を保証するものではない
クライアントにアップロード・ダウンロード帯域の項目がある場合は、まず単位と方向を確認してください。MbpsとMB/sは異なる単位です。また、アップロードとダウンロードの値を取り違えないでください。数値を大きくしても、物理的な帯域は増えません。速度制御が働く状況では、実際の回線に合わない目標値が、キューの滞留やパケットロス、ほかのアプリの待ち時間を悪化させることがあります。設定が有効になるかどうかは、ネゴシエーションやサーバー設定にも左右されるため、根拠なく大きな値を設定しても汎用的な最適化にはなりません。
同じネットワークでまず安定した速度の範囲を測定し、手元のサーバー情報に従って値を設定します。そのうえで、Webページの応答、継続的なダウンロード、通話の状態を確認してください。ダウンロードのピークだけを見ると、通信を続けた際に遅延が大きくなる問題を見落とすことがあります。モバイル通信の利用可能な帯域は、電波状況や基地局の混雑で変動します。固定値が常に適するとは限りません。テスト時のネットワーク条件を記録し、正常に動作している元の設定も残してください。
iOSの電池消費と失敗時の切り分け
高スループットの継続、パケットロスからの復旧、ユーザー空間でのデータ処理はいずれも、処理負荷や無線通信の負担を増やす可能性があります。そのため、Hysteria2を一律に省電力、または電池を消耗しやすいと決めつけることはできません。同じ作業をより短時間で完了できれば、無線接続が高負荷状態にある時間が短くなる場合もあります。アイドル時に再接続を繰り返すなら、逆の結果になることもあります。電池消費を比較する際は、作業量と時間を揃えてください。片方のプロトコルで大きなファイルをダウンロードし、もう片方で待機した時間を比べることはできません。
特定のネットワークだけでハンドシェイクできない場合は、まずUDPが使えるか確認します。接続後もスループットが安定しない場合は、経路の通信能力、帯域設定、サーバー負荷を調べます。一部のアプリだけが失敗する場合は、ルーティングと接続先プロトコルを確認してください。Hysteria2を接続するために、無関係なルールをむやみに変更しないでください。手元の情報にない追加設定は、初期値のままにするか、設定の提供元に確認するほうが、関係のないサンプルから値を組み合わせるより確実です。
iOSで速度と電池消費を比較するテスト方法
ネットワークとテスト対象を固定する
iPhoneまたはiPadでプロトコルを比較する際は、まず利用環境の違いを除外します。デバイス、ネットワーク、接続先、テスト時刻を揃え、関係のない大容量ダウンロードを停止してください。写真の同期やシステムアップデートが終わるまで待ちます。テスト前にWi-Fiかモバイル通信かを記録し、デバイスが発熱していないか、低電力モードになっていないかも確認してください。電波状況が大きく変化したり、デバイスの温度制限が始まったりした場合、その回の結果を過去のデータと直接比較するのは適切ではありません。
サーバーの条件も揃える必要があります。プロトコルごとに異なるデータセンターや出口を使っている場合、測定結果が示すのは二つの通信経路全体の差であり、プロトコル単体の差ではありません。同じホストでも、帯域制限や同時接続の負荷が異ならないか確認してください。手元に既存のサブスクリプションが一つしかなく、条件を揃えた接続先を用意できない場合は、「どの項目が現在の用途に合うか」を調べるテストに切り替えましょう。あらゆる環境で通用するプロトコルの順位を作ろうとする必要はありません。
接続、アプリ通信、ルーティングを分けて記録する
Connectivity Testは初期確認に使えますが、結果は具体的なテスト方法によって変わります。接続だけのテストでは実際の通信をすべて確認できず、HTTP系のテストではテスト先の影響を受けます。実際に使うアプリも開き、初回の応答、継続通信、アイドル後の復旧を確認してください。失敗が名前解決、接続確立、コンテンツの読み込み、ネットワーク切り替えのどの段階で起きたか記録すると、「時々遅い」とだけ記録するより、原因の特定に役立ちます。
| モード | 用途 | テスト時の確認点 |
|---|---|---|
| Config | 現在の設定にあるルールに基づいてリクエストを処理する | 対象がどのルールとポリシーに一致したかを先に確認する |
| Proxy | このモードで対象の通信をプロキシに渡す | ルールの影響を切り分ける際に使えるが、実際のログも確認する |
| Direct | このモードで直接接続する | ネットワークの基本状態を確認するためのもので、プロキシの利用可否を証明するものではない |
Configで対象がDIRECTに一致した場合、その読み込み速度を現在のプロキシプロトコルの評価に使うことはできません。一時的にProxyへ切り替えると、ルールの問題とサーバーの問題を切り分けやすくなります。ただし、切り替えたモードを記録し、テスト後に元の設定へ戻してください。ポリシーグループ、DNS、ローカル接続も個々のリクエストに影響する場合があります。最終的には接続ログと照らし合わせて実際の経路を確認し、画面で強調表示されたサーバー名だけで結論を出さないでください。
結果を誤読せずに電池消費を測る
システムのバッテリー画面に表示されるのは、一定期間のアプリ別使用状況や動作状況であり、特定のプロトコル専用の電力計ではありません。画面の明るさ、メディアのデコード、アプリの更新、電波強度、接続の再試行も電池消費に関係します。比較する際は、一定時間のアイドル接続、同じ内容の閲覧、同じ作業量のダウンロードを分けて確認します。複数の時間帯で繰り返し、フォアグラウンドとバックグラウンドの動作も記録してください。数分間のバッテリー残量の変化だけで判断しないでください。
アイドル接続では、バックグラウンドでの起動、キープアライブ、再接続の繰り返しが重要です。継続通信では、作業あたりの所要時間、通信量、デバイスの温度を確認します。移動中は、Wi-Fiとモバイル通信を切り替えた後の復旧に注目します。On Demandは条件に応じて接続を確立するタイミングを決めるもので、速度を上げる機能ではありません。ルールによって接続と切断が頻繁に発生する場合、電池消費にも影響します。プロトコルの消費電力を議論する前に、まず発動条件を確認してください。
テストではTCPとUDPも区別してください。Webページは正常でも通話が途切れる場合、UDP経路、ジッター、パケットロスが原因の可能性があります。大きなファイルは問題ないのに初回アクセスが遅い場合は、名前解決やハンドシェイクを確認します。しばらくアイドル状態が続いた後、最初のリクエストに失敗する場合は、マッピング、キープアライブ、アプリの再試行を調べてください。現象ごとに記録しておけば、毎回プロトコルの変更から始めずに、次に確認すべき項目を選べます。
最終的な選択はピーク値ではなく、繰り返し得られる結果で判断してください。一度の短いテストで速くても、頻繁に手動で再接続する設定は日常利用に適さない場合があります。スループットがやや低くても応答が安定し、アイドル後に正常に復旧する設定のほうが、メッセージや仕事に向いていることもあります。ここで比較しているのは、現在のネットワークと用途への適合性であり、回線サービスの品質を保証するものではありません。
用途別の選び方:ルールの確認とトラブルの切り分け
名称ではなく、必要な機能から選ぶ
一般的なWeb閲覧や日常的なアプリには、手元の情報に設定項目が揃っていて、安定して接続できるものを選びます。プロトコル名だけを理由にサーバーを変更する必要はありません。内部ネットワークやアドレスのルーティングが必要な場合は、WireGuardのピアと許可されたネットワーク範囲を確認します。組織からHTTPまたはSOCKS5の入口が提供されている場合は、認証とアクセス権を確認してください。UDPを使うアプリでは、必要な機能を個別にテストします。必要な条件を満たさない場合、設定の問題か、サーバーの機能か、ネットワークの制限かを判断します。
VMess、VLESS、Trojanを選ぶ際は、それぞれに必要なトランスポートとTLSの組み合わせを維持してください。Shadowsocksでは暗号化方式とデータグラムへの対応を確認し、Hysteria2ではUDP経路と速度設定を確認します。Typeを切り替えるだけで、別のプロトコル向けのサーバーを使えるようにすることはできません。手元のサブスクリプションに複数のタイプがある場合は、元の項目を残して一つずつテストしてください。UUID、パスワード、トランスポートの設定を混ぜて、サーバー側で用意されていない組み合わせを作らないでください。
まず、ルールが実際にそのプロトコルを使っているか確認する
プロトコルの確認とルールの確認は、分けて行います。まず、明確なテストリクエストでサーバーが使えることを確認し、その後Configで対象が想定したポリシーに振り分けられているか確認してください。以下はマッチ順序を説明するためのShadowrocket .confルール例で、完全な設定ではありません。使用する前に、現在の設定で使えるPROXYポリシーが定義されていることを確認してください。例にあるドメインは説明用の文字列であり、アクセスすべきサービスを示すものではありません。
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
GEOIP,CN,DIRECT
FINAL,PROXY
ルールは通常、上から順に照合され、一致した時点で該当するポリシーが適用されます。DOMAIN-SUFFIXは指定したドメインとサブドメインに一致します。IP-CIDRはアドレス範囲を示します。no-resolveは、ルールの照合のためにドメイン名を積極的に解決することを避ける指定ですが、すでに接続先アドレスがある場合は、アドレスによる照合に使われる可能性があります。GEOIPはIPアドレスの位置情報データベースに基づいて判定するもので、Webサイトの所属地域と同じ意味ではありません。FINALは最後のフォールバックとして使います。先に判定したいルールより後に置かないと、後続のルールが意図どおり動作しないことがあります。
対象がREJECTに一致した場合、ポリシーの段階で接続がブロックされているため、プロトコルを変更しても解決しません。DIRECTに一致した場合は、意図した動作かどうかを先に確認してください。拒否ポリシーの役割と同じドメインの内容に関する範囲は、REJECTルールの解説をご覧ください。ルールを調整する際は設定を複製してから行い、一つの接続先を確認するために、ほかのアプリの既存の経路まで変えてしまわないようにしてください。
失敗した段階から確認範囲を絞る
| 現象 | 優先して確認する項目 | すぐには変更しない項目 |
|---|---|---|
| 接続先への接続が完全にタイムアウトする | アドレス、ポート、TCP / UDPの経路 | ルールの詳細、アプリ側の設定 |
| ハンドシェイクまたは認証に失敗する | プロトコル、認証情報、TLSの名前、時刻 | 帯域の目標値、速度テストの方法 |
| 接続は成功するが、接続先が開かない | DNS、ルールの一致、戻り経路、アクセス権 | 根拠なく暗号化方式を変更すること |
| 小さなリクエストは通るが、大きな通信が止まる | MTU、経路の通信能力、パケットロス、サーバー負荷 | 認証情報をすべて入力し直すこと |
| アイドル後またはネットワーク切り替え後に失敗する | キープアライブ、マッピング、再接続、On Demand | 一時的な現象をプロトコルの恒久的な非互換と判断すること |
ドメイン名でのアクセスだけが失敗し、接続先を直接指定したテストが正常な場合は、名前解決を行う場所、戻りアドレスの種類、DNSリクエストのルーティングを確認してください。証明書の検証を変更するだけで、すべての問題を解決しようとしないでください。IPv6ネットワークでのみ問題が起きる場合は、サーバーの入口、接続先アドレス、トンネルアドレスがそれぞれ対応しているか確認します。使える設定に戻してから必要なルールを一つずつ追加すると、どの変更が障害を引き起こしたか特定できます。原因の説明しにくい設定を残さずに済みます。
再現できる結果を記録する
トラブル対処が終わったら、使用したプロトコル、外側のトランスポート、成功したテスト内容、残っている制約を記録し、不要になった検証用の項目を削除してください。Subscribeの更新でサーバー設定が変わったり、システムのネットワーク環境が変わったりすると、以前の結果が当てはまらなくなることがあります。新たな問題が起きた場合は、以前の変更を機械的に繰り返すのではなく、現在の情報を確認してください。設定、QRコード、ログには機密情報が含まれる場合があります。共有前に一つずつ確認し、エクスポートしたファイルをそのまま公開しないでください。
操作手順を最初から確認する場合は使い方ガイドへ、現象から簡単な回答を探す場合はよくある質問をご覧ください。このマニュアルでは、タイプの選択をサーバー情報に基づいて行い、設定変更のたびに検証できる理由を持つことを目指しています。プロトコル名だけで接続条件の確認を済ませることはできません。