Shadowrocket プロトコルの選び方と設定項目
手元のサーバー情報に合わせて種類を選び、認証、転送、ルーティングを確認します。プロトコル名だけで速度や電池消費、接続結果が決まるわけではありません。
- 認証と暗号化
- TLSと転送
- DNSとルール
- 接続と電池消費の確認
- Shadowsocks
- VMess
- VLESS
- Trojan
- HTTP · SOCKS5
- WireGuard
- Hysteria2
このページは、必要な設定項目の理由、各プロトコルが適する条件、接続できないときに確認する順序を解説するリファレンスです。使い方では、設定の追加から初回接続までを順を追って案内しています。初回接続後は、プロトコルごとの解説を参照してください。ご自身で用意したサブスクリプションまたはサーバー情報をお持ちであることを前提としています。本サイトでは接続先やサブスクリプションを提供、販売、推奨していません。
01 / SELECTION
プロトコルの選び方:まずサーバー側の設定を確認
プロトコル、転送方式、セキュリティ、ルーティングを分けて考える
Shadowrocketでプロトコルを選ぶことは、クライアントがサーバーとどの形式で通信するかを指定することであり、自由に切り替えられる速度設定を選ぶことではありません。サーバーがShadowsocksを提供しているなら、対応するShadowsocksの種類と認証情報が必要です。サーバーがTrojanを提供している場合も、種類だけVLESSに変更して使うことはできません。アドレスとポートが同じでも、サーバーが同じハンドシェイク、認証、データ形式を受け付けるとは限りません。種類を選ぶ際は、手元の設定情報に明記されたプロトコルを基準にしてください。
接続には通常、4層の情報が関わります。1つ目は接続先を決めるアドレスとポート、2つ目はサーバーがリクエストを受け入れるかを決めるプロトコルと認証、3つ目はTLS、WebSocket、UDPなどの転送・セキュリティ設定、4つ目はどのリクエストを接続に流すかを決めるローカルルーティングです。プロトコルによっては複数の層が一体化しており、別のプロトコルではさまざまな組み合わせが可能です。トラブル時は層ごとに確認しましょう。そうしないと、DNSエラーをパスワードの誤りと取り違えたり、ルールに一致しない状態をプロトコルの非互換と誤認したりするおそれがあります。
速度や電池消費に決まった優劣はない
実際の速度は、接続ネットワーク、往復遅延、パケットロス、サーバー負荷、回線帯域、接続先のサービスなどに左右されます。カプセル化が増えるとデータ量や処理負荷は増えますが、どの環境でも必ず遅くなるとは限りません。利用中のネットワークに適した転送方式なら、再送が減ることでカプセル化の負荷を補える場合があります。逆に、同じプロトコルでもサーバーが違えば、同一サーバー上でプロトコルを変えた場合より大きな差が出ることがあります。そのため、このページではプロトコル名だけで速度の順位を決めていません。
iPhoneやiPadの電池消費も、使い方に応じて確認する必要があります。大容量通信を続けると、無線通信、暗号化・復号、アプリの処理が同時に働きます。一方、断続的なリクエストでは、接続の確立回数、バックグラウンドでの接続維持、ネットワークの再起動が影響しやすくなります。自動速度テストの頻繁な実行、短い間隔での更新、接続失敗後の再接続の繰り返しは、プロトコル自体の違いを分かりにくくします。比較する際は、端末、ネットワーク、サーバー、接続先をそろえ、画面の明るさやほかのバックグラウンド処理も考慮してください。一度の電池残量の変化だけで、特定のプロトコルが原因とは判断できません。
| 手元にある情報 | 優先して確認する項目 | その情報だけでは判断できないこと |
|---|---|---|
| 利用中のサブスクリプション | 読み込み後の種類、認証、転送設定 | 名前が似ていれば置き換えられる |
| サーバー設定 | サーバーで実際に有効なプロトコルとポート | 特定のポートなら必ずTLSを使う |
| ネットワークで明らかなパケットロスがある | 転送方式の互換性、再送、接続の安定性 | UDPなら必ず速い |
| アクセス権のある社内ネットワークを利用したい | アドレス範囲、ルーティング、DNS、戻り経路 | トンネルが確立すればリソースにアクセスできる |
再現可能な比較方法を用意する
まず、正常に使える設定を基準として保存し、項目を一つずつ変更します。同じ接続先で、初回アクセス、再アクセス、継続的なデータ転送、スリープ解除後の状態をそれぞれ確認してください。各テストでDNS、プロトコル、サーバーを同時に変更しないようにします。Connectivity Testは接続状態を確認する手段の一つですが、テストに成功してもすべての用途で通信できるとは限りません。Web閲覧、動画再生、リアルタイム音声では必要な転送条件が異なるため、数値だけを比べず、実際に使うサービスで確認してください。
手元の情報で指定されているプロトコルが1種類だけなら、その情報をすべて取り込んで動作を確認してください。名称を頼りに別の種類を探す方法は適切ではありません。プロトコルを切り替える場合は、新しい種類に必要な設定一式をサーバー側から入手してください。サブスクリプションの読み込み後に一覧が空の場合は、プロトコルの選択とは別の問題です。サブスクリプションを読み込んでも一覧が空の場合の確認方法を参照してください。以降の説明では、編集可能なサーバー設定が少なくとも1件あることを前提とします。画面に表示される項目は、アプリの現在の選択肢をご確認ください。
02 / SHADOWSOCKS
Shadowsocks:アドレス、パスワード、暗号化方式を正しく組み合わせる
設計上の特徴:シンプルなプロキシ転送
Shadowsocksは、プロキシ接続のデータ転送と暗号化を中心に設計されています。一般的な設定項目は、サーバーアドレス、ポート、パスワード、暗号化方式です。Webアプリのように、必ずHTTPリクエストを入口とするわけではありません。また、サーバーが一般的なWeb用ポートを使用しているからといって、TLSが必要とは限りません。Shadowsocksの設定一式を持っている場合、各項目の対応関係が比較的明確です。指定されたサーバーに接続し、設定されたパスワードと暗号化方式でプロキシデータを処理します。サーバー側とクライアント側で、互換性のあるプロトコル実装と設定を使用する必要があります。
暗号化方式は、自由に入れ替えられる性能設定ではありません。パスワードと方式を組み合わせて鍵に関する処理を行い、方式によっては認証情報の形式に固有の要件があります。既存のパスワードを残したまま、より新しそうな名称の方式に変更しても、通常は接続できません。リンクから読み込んだ設定では元の方式を維持してください。手入力する場合は、特にハイフン、数字、方式名の綴りを一文字ずつ確認します。サーバーで指定された方式が現在の選択肢にない場合は、似た名称で代用せず、互換性を確認してください。
設定項目の意味と入力時の注意
Addressまたはサーバーアドレスには、ドメイン名またはIPアドレスを指定します。ドメイン名はDNSによる名前解決やサーバー移行に柔軟に対応できますが、DNSが利用できることが前提になります。IPアドレスを直接入力した場合、ドメインに紐づくアドレス変更は自動では反映されません。Portはサーバーが待ち受けるポートを指定します。Webページが開くかどうかだけで正誤を判断することはできません。Passwordはサーバーの認証・暗号化設定の一部であり、App Storeのアカウントパスワードや端末のパスコードではありません。入力時は、前後の空白、改行、入力方式による文字の置き換えに注意してください。
手元の設定に追加の難読化やプラグイン関連の項目がある場合は、独立した条件として確認してください。接続の外側の形式に影響することがありますが、すべてのShadowsocks設定で同じ項目を有効にする必要があるわけではありません。必要な外側の設定が欠けるとハンドシェイクに失敗することがあり、不要な項目を追加してもサーバーが設定を認識できなくなる場合があります。まず追加の層が実際に必要かを確認し、手元の設定情報とアプリ内の項目を一つずつ照合してください。指定のない項目は変更しないのが基本です。
| 設定項目 | 役割 | 主な確認ポイント |
|---|---|---|
| Address | 接続先サーバーを指定 | ドメインの名前解決結果と設定の完全性 |
| Port | サーバーの接続口を指定 | プロトコルの待ち受けポートと一致 |
| Password | 認証と暗号化処理に使用 | 大文字・小文字、空白、文字コードが変わっていないか |
| Method | 暗号化方式を指定 | 両端の方式名と認証情報の要件が一致 |
TCPで接続できても、UDPが使えるとは限らない
Webページを開けても、通常はそのリクエストの通信経路が有効だと分かるだけです。リアルタイム音声、一部のゲーム、その他UDPを利用するサービスでは、クライアント設定、サーバーの機能、ネットワーク経路のすべてがUDP転送に対応している必要があります。TCPとUDPは同じ番号のポートを使っていても別の転送方式であり、ネットワーク側の処理が異なる場合があります。通常のWeb閲覧はできるのにリアルタイム通信が失敗する場合は、まず実際に使われている転送方式を確認し、UDPの対応状況と関連ルールを調べてください。すぐにパスワードや暗号化方式を変更する必要はありません。
モバイル端末でのShadowsocksの電池消費は、暗号化方式、ハードウェアの処理能力、通信量、再接続の頻度によって変わります。継続的なデータ転送と、小さなリクエストが集中する使い方は負荷が異なるため、同じ条件として扱わないでください。設定を読み込んだ直後から端末が明らかに熱くなる場合は、連続した速度テストや再接続を中断し、接続失敗を繰り返していないか確認してから、接続先を一つに絞って回数を限って試してください。電池消費の異常はあくまで現象です。接続履歴やネットワーク状態と合わせて原因を調べる必要があり、暗号化方式の選択ミスを直接示すものではありません。
問題が発生した箇所から確認する
接続をまったく確立できない場合は、まず名前解決、ポート、サーバーの稼働状態を確認します。接続直後に切断される場合は、パスワード、方式、外側の設定が一組として正しく対応しているかを確認してください。一部のWebサイトだけ開けない場合は、DNS、ルール、接続先への到達性を調べます。変更前の設定を保存しておくと、元に戻せます。サブスクリプションから読み込んだ設定は更新時に手動変更が上書きされることがあります。テスト前に、編集しているのがサブスクリプション管理下の設定か、独立した設定かを確認しておきましょう。更新による上書きを、アプリが設定を保存しない問題と誤認せずに済みます。
03 / VMESS · VLESS
VMessとVLESS:認証項目が似ていても同じプロトコルではない
設計の違いとプロトコルの区別
VMessは、専用のプロキシプロトコルとして認証とデータ処理を構成します。一般的な設定にはUUIDのほか、セキュリティや転送に関する項目が含まれます。一方、VLESSはよりシンプルなプロトコル層を採用し、プロトコル自体ではデータを暗号化しません。接続全体を理解するには、セキュリティを担う転送方式と合わせて考える必要があります。どちらにもUUIDが使われ、複数の外側の転送方式と組み合わせられる場合があります。そのため、リンク内の認証項目だけではプロトコルを判別できません。元のサブスクリプションまたはサーバー側に明記された種類を確認し、同じUUIDが異なるプロトコルで共通の認証情報になるとは考えないでください。
VLESSの構造がシンプルだからといって、接続全体のリソース消費が必ず少ないわけではなく、セキュリティ層を省略してよいという意味でもありません。TLS、WebSocketなどの転送方式を組み合わせる場合、実際のデータ量やハンドシェイクの流れは構成全体によって決まります。VMessの動作も、プロトコル名だけでなくサーバー設定やネットワーク状況に左右されます。種類を選ぶ際は、プロトコル、転送方式、セキュリティ層の3つを記録してから、互換性や用途を検討してください。1つの要素だけを取り出して比べると、実際の動作と異なる結論になりやすくなります。
UUID、転送方式、パス
UUIDは、サーバーが許可するユーザーを識別します。コピーする際は、すべての文字と区切り形式を保持してください。設定名で代用することはできません。設定名はユーザーが項目を見分けるためのもので、プロトコル認証には使われません。VMessの一部の項目は、プロトコル実装や過去の設定形式にも関係するため、ネット上の一つのスクリーンショットを基に一括変更しないでください。認証に時刻が関わる場合、端末の時刻が大きくずれていると接続に失敗することがあります。まずシステムの日付と時刻が正しいことを確認し、その後でサーバーが認証を拒否しているかを調べます。
転送設定は、プロトコルのデータをどのように運ぶかを決めます。WebSocketを使う場合、Pathはハンドシェイクのリクエストパス、HostはHTTP層のホスト情報に関係します。どちらも設定名ではなく、完全なURLを任意に分割して入力する項目でもありません。パスの先頭のスラッシュ、大文字・小文字、クエリ部分を残す必要があるかは、サーバー情報に従って確認してください。ほかの転送方式を選ぶと項目も変わることがあります。WebSocketの設定を別の転送方式にそのまま入力しないでください。画面に表示されない項目を、名前の似た別の項目で置き換えることもできません。
| 層 | 主な設定内容 | 確認のポイント |
|---|---|---|
| プロトコル認証 | VMess / VLESS、UUID | プロトコルの種類と認証情報の両方が正しいこと |
| 外側の転送方式 | TCP、WebSocketなど | サーバーの実際の組み合わせに合わせる |
| HTTP層の情報 | Host、Path | 接続先アドレスとは分けて確認する |
| セキュリティ層 | TLS、Server Name、証明書の検証 | 名称と信頼関係をそれぞれ確認する |
TLSの名称と追加の設定項目
接続先アドレスはサーバーへの接続に使います。TLSのServer Nameはハンドシェイクで名前を伝えるために使われ、証明書の名前の検証にも関係します。両者は同じ場合もあれば、サーバー情報で異なる値が指定される場合もあります。Hostはさらに別の層に属します。どれもドメイン名に見えるからといって、互いに置き換えることはできません。追加のセキュリティ拡張や特殊なハンドシェイク設定が指定されている場合は、現在のアプリがその組み合わせに対応しているか確認してください。入力欄があるというだけでは、任意の組み合わせでサーバーと通信できるとは限りません。
設定に含まれるFlowなどのオプションは、特定のプロトコル構成で使うもので、汎用の速度向上スイッチではありません。サーバーが明確に要求し、クライアントに互換性のある選択肢がある場合に限り有効にします。元の情報を確認せずに複数のセキュリティ設定を試すと、ハンドシェイク条件が同時に変わり、原因を特定するための基準がなくなります。サブスクリプションから読み込んだ設定は、まず元の状態を保存してから、独立したテスト用コピーを作成してください。読み込み時の情報不足か、後からの編集が接続に影響したのかを見分けやすくなります。
モバイルネットワークで比較する方法
iPhoneやiPadでこれらの接続を評価する際は、初回のハンドシェイクと、接続確立後のデータ転送を分けて確認します。ハンドシェイクの層が多いと、短いリクエストは往復遅延の影響を受けやすくなります。一方、長時間の転送では帯域や輻輳が主な要因になることがあります。ネットワークの切り替え後に古い接続が無効になり、アプリが接続を再確立する間、一時的に待ち時間が生じることもあります。特定の転送方式だけ復帰が遅い場合は、画面ロック解除後、Wi-Fi切り替え時、通常の連続利用時のどのタイミングで起きたかを記録してください。VMessとVLESSの全般的な違いとすぐに結びつけるべきではありません。
接続に失敗した場合は、アドレスとポート、プロトコルとUUID、外側の転送方式、セキュリティ層、接続先へのアクセスの順に一つずつ確認します。接続履歴にそのサーバーが選択されていないと表示される場合は、まずGlobal Routingと現在の設定を確認してください。よくある症状についてはトラブルシューティングも参照できます。ルーティングが確認できる前に、認証情報を何度も変更しないようにしましょう。
04 / TROJAN · TLS
TrojanとTLS:認証に加えて、正しい信頼関係を確立する
TLSでプロキシ接続を保護する仕組み
Trojanは、TLSで保護された接続内にプロキシリクエストを送り、パスワードでプロトコル認証を行います。理解するには、独立した2つの条件を確認してください。クライアントが想定どおりのサーバーと信頼できるTLS接続を確立できているか、サーバーがプロトコル認証情報を受け入れているかです。パスワードが正しくても証明書名の不一致は解消されず、証明書の検証に成功してもパスワードが正しいとは限りません。アドレスとポートだけを見るのではなく、接続先、TLS名、証明書チェーン、ユーザー認証を分けて確認してください。
TLSは通信内容を保護し、証明書が正しく検証された場合にはサーバーの身元確認にも役立ちます。速度を変える設定ではなく、接続を成功させるためだけに安易に変更するものでもありません。ハンドシェイクにはネットワークの往復が必要で、実際の負荷は接続の再利用、ネットワーク遅延、実装に左右されます。接続確立後の動作は初回ハンドシェイクとは異なります。そのため、最初の表示が少し遅いだけで、Trojanの継続的な通信速度に問題があるとは限りません。一度アクセスに成功しただけで、すべてのセキュリティ設定が正しいとも判断できません。
Address、Server Name、証明書の検証
Addressは、クライアントが実際に接続するアドレスです。Server Nameは通常、TLSハンドシェイクのSNIと証明書名の検証に関係するため、サーバー情報に従って入力します。証明書には検証対象の名前が含まれ、有効期限内で、信頼できる証明書チェーンが必要です。AddressにサーバーのIPアドレスを直接入力しても、サーバー証明書がドメイン名に対して発行されている場合は、適切な名前情報が必要になることがあります。IPアドレスに接続できるからといってドメイン名を削除したり、アクセス可能な別のWebサイトのドメイン名を代わりに入力したりしないでください。
証明書エラーには、端末の時刻の誤り、証明書の期限切れ、サーバーが中間証明書を正しく提供していない、名前の不一致、現在のネットワークが別の接続先に誘導しているなど、複数の原因があります。まず具体的なエラーを確認し、設定情報とサーバー側の状態を照合してください。証明書検証をスキップする項目がアプリにあっても、変わるのは信頼の境界であり、証明書を修復できるわけではありません。通常の利用では、名前、時刻、証明書チェーンの問題を解消してください。検証を長期間無効にしたまま使うことを標準設定にしないでください。
パスワード、ALPN、外側の転送方式
TrojanのPasswordはプロトコル認証情報です。大文字・小文字や特殊文字を含め、入力内容をそのまま保持してください。サブスクリプションからの読み込みではリンクのエンコードが関係することがあります。リンクから一部を手作業で切り出すと、エンコードされた文字列を実際のパスワードと取り違えるおそれがあります。アプリが対応する方法で設定全体を読み込むか、手元の情報に記載された項目を入力してください。スクリーンショットでパスワード全体を公開しないでください。認証エラー時の共有リンクを公開の問い合わせ欄に貼り付けるのも避けましょう。トラブルの確認には項目の構成が分かればよく、認証情報を公開する必要は通常ありません。
ALPNは、TLSでアプリケーション層のプロトコルをネゴシエーションするために使います。指定が必要か、どの値を受け付けるかは、サーバーと外側の転送方式の構成によって決まります。値を多く追加すればよいわけではなく、一般的な名称を加えても互換性が保証されるわけではありません。WebSocketなどの追加転送方式を使う場合は、該当するパスとホスト情報も確認してください。TLSの確立に成功していても、その後の転送ハンドシェイクやTrojanの認証に失敗することがあります。失敗が起きた順序に沿って原因を調べましょう。
証明書の問題とサービス側の問題を切り分ける
すべての接続先で接続の初期段階から失敗し、証明書またはハンドシェイクのエラーが出る場合は、まずTLSの設定を確認します。接続が確立した後に特定のWebサイトだけ開けない場合は、接続先のDNS、ルーティング、相手側への到達性を調べます。リアルタイム通信だけが失敗する場合は、UDP転送への対応とネットワーク経路を確認してください。現象を切り分けることで、接続先サービスが一時的に利用できないときに証明書設定を変更したり、DNSの誤りをパスワードの再設定で直そうとしたりせずに済みます。一度に変更する条件は一つにし、変更前後のエラーを記録してください。
電池消費も、実際の使い方に沿って確認してください。TLS接続を頻繁に確立すること、失敗後に再試行を続けること、バックグラウンドで少量の通信を維持して無線接続を起こし続けることは、いずれも消費を増やす場合があります。大容量通信時の暗号化処理とは異なる要因です。テストでは不要な継続的な接続確認を停止し、正常に使える設定を一つ基準として残してから、普段使うサービスで様子を見ます。アプリの入手先、公式アイコン、開発者情報の確認は、正規版の確認方法を参照してください。接続状況からアプリの入手元を判断しないでください。
05 / HTTP · SOCKS5
HTTPとSOCKS5:プロキシの入口を確認し、保護される範囲を把握する
2種類の汎用プロキシインターフェースの基本
HTTPプロキシは、HTTPリクエストを転送する仕組みとして発展しました。Webリクエストではプロキシ形式のリクエスト先を使い、HTTPSなどではCONNECTリクエストで接続先へのトンネルを確立することがあります。SOCKS5は、接続先のアドレス、ポート、接続リクエストを指定する、より汎用的なプロキシセッションのネゴシエーションを提供します。どちらもプロキシの入口で使うプロトコルの取り決めであり、同じ暗号化、認証方式、UDP機能が標準で備わっているわけではありません。サーバーにHTTPと指定されている場合、アドレスが同じだからといってSOCKS5を選ばないでください。
ここでは、接続先サイトがHTTPSを使うことと、クライアントからプロキシ入口までの通信でTLSを使うことを区別する必要があります。HTTPSサイトでは通常、接続先サイトまでコンテンツが保護されます。一方、TLSを使わないHTTPプロキシとの接続では、プロキシのネゴシエーション情報や一部の認証情報が保護される範囲は、暗号化されたプロキシ入口とは異なります。接続先サイトが安全な通信を使っていても、外側のプロキシ経路のすべてが同じように保護されるわけではありません。保護範囲はブラウザーのアドレスバーやサーバーの設定名だけで判断せず、接続経路ごとに確認してください。
アドレス、ポート、認証方式
HTTPとSOCKS5の基本設定には、通常、サーバーアドレスとポートのほか、必要に応じてUsernameとPasswordが含まれます。認証の要否はサーバー側で決まります。空欄のままで接続できると決めつけたり、別のプロトコルのUUIDをユーザー名に入力して互換性を期待したりしないでください。認証エラーとネットワーク到達不能は似た症状になる場合があるため、接続エラーと手元の設定情報を照らし合わせます。アカウントにドメインなどの接頭辞が含まれる場合もあります。残すべきかどうかは、サーバーが提供した完全な形式を確認してください。
プロキシ入口でTLSが必要な場合は、対応するセキュリティ設定を選び、証明書名を確認してください。ポート番号だけでは、その入口が暗号化通信か平文通信か、CONNECTを受け付けるかは分かりません。サーバーによっては、接続可能な宛先、ポート、認証方式が制限されています。入口への接続に成功しても、その後のリクエストが拒否されることがあります。一部の宛先ポートだけ失敗する場合は、アクセス権の範囲とサーバー側の方針を先に確認してください。ローカルDNSを何度も変更したり、すべてのHTTPプロキシがWebページにしか接続できないと考えたりしないようにしましょう。
| 確認項目 | HTTP | SOCKS5 |
|---|---|---|
| 一般的な動作 | リクエスト転送またはCONNECT | セッションのネゴシエーション後にプロキシ接続 |
| 認証 | 入口が対応する方式による | ネゴシエーションとサーバー設定による |
| 入口の暗号化 | TLSを使用するか別途確認 | プロトコル自体はデータを暗号化しない |
| UDP | 通常のHTTPプロキシはUDP転送と同じではない | 接続経路全体でUDP ASSOCIATEに対応する必要がある |
DNS名前解決とUDPの条件
SOCKS5では接続先をドメイン名で指定できますが、実際のリクエストでドメイン名がプロキシ側に渡されて名前解決されるかどうかは、クライアントの処理、DNSポリシー、接続先情報がすでにIPアドレスに変換されているかによって異なります。SOCKS5を選んだだけで、すべてのDNSリクエストがリモート側で処理されるとは限りません。HTTPプロキシもリクエストから接続先のホスト名を取得できる場合がありますが、アプリが発生させるほかのDNSクエリは個別に確認する必要があります。ドメイン名の問題を調べるときは、サーバーの種類だけでなく、実際の接続先とDNSの結果を確認してください。
SOCKS5の仕様にUDP ASSOCIATEが含まれていても、すべてのサーバー、接続ネットワーク、クライアントの組み合わせでUDP転送ができるわけではありません。通常、制御用の接続や転送先アドレスも関わり、ネットワーク側でその一部が制限される場合があります。TCPを使うサービスは利用できるのにUDPを使うサービスが失敗する場合は、サーバー側でUDPが有効か、返されたアドレスに到達できるか、同じ設定がルールで選択されているかをそれぞれ確認します。Webページのテスト結果を音声通話、ゲーム、その他のUDP通信にそのまま当てはめないでください。
利用場面とモバイル端末での確認
これらのプロキシ入口は、組織の既存プロキシ、認証が必要なネットワーク、汎用プロキシプロトコルを明示して提供する環境などで使われます。項目が少ないから長期利用に適していると考えず、管理者が指定した種類とセキュリティ要件に合わせて設定してください。iPhoneやiPadでの接続安定性は、ネットワークの切り替え、認証の有効期限、サーバー側の制限にも影響されます。認証エラーが繰り返し表示される場合は、頻繁に再接続するのではなく、認証情報の状態と利用権限を先に確認してください。
低遅延やUDPの通信が必要な場合は、プロキシ入口がその要件に実際に対応しているか確認します。許可された特定のリソースだけにアクセスする場合は、宛先のルーティングと認証の範囲を重視してください。プロトコルの選択は、手元にある接続条件に合わせるものであり、サーバーが提供していない機能を追加するものではありません。設定名には用途やネットワーク条件を記載できますが、パスワードは含めないでください。複数の接続先を切り替える際に用途を見分けやすくなり、一覧のスクリーンショットで認証情報が漏れるのを防げます。
06 / WIREGUARD
WireGuard:鍵、トンネルアドレス、許可アドレスが到達性を左右する
プロキシリクエストとIPトンネルの違い
WireGuardは暗号化されたIPトンネルとして設計されており、前述のように個々のプロキシリクエストを宛先として扱うプロトコルとは異なります。設定では、トンネルインターフェースのアドレス、対向の識別情報、UDPエンドポイント、許可アドレスの関係を確認します。公開鍵と秘密鍵で通信相手を識別するため、ユーザー名とパスワードをサーバーに送るだけで認証する方式ではありません。一般に設定一式はサーバー管理者から提供されます。Endpointだけ入手しても、実際に通信できる経路が構成されるとは限りません。各項目の関係を保ったまま設定してください。
WireGuardは比較的シンプルなプロトコルと明確な鍵の関係を重視して設計されていますが、設定ミスが少ないことや、あらゆるモバイルネットワークで最速であることを意味するわけではありません。通常UDPを使うため、利用中のネットワークで該当する通信が正常に通らない場合は、ハンドシェイクとデータ転送の両方に影響します。対向側から応答があっても、相手側ネットワークで正しく転送され、アクセス制御と戻り経路が設定されている必要があります。トンネルが確立しているかどうかと、目的のリソースに接続できるかどうかは別々に確認してください。
Private Key、Public Key、オプションの共有鍵
Private Keyは自分側の識別に使う秘密鍵なので、公開しないでください。対応するPublic Keyを相手側の設定に登録します。クライアントのPeer Public Keyには相手側の公開鍵を指定し、自分側の公開鍵を重複して入力しないでください。よくある間違いは両端の項目を逆にすることや、新しい秘密鍵に置き換えたのに、サーバー側のユーザーに登録された公開鍵を更新しないことです。鍵の形式が正しいように見えても、両端が正しく対応しているとは限りません。
Preshared Keyが設定に含まれている場合は、公開鍵・秘密鍵に加えて使う共有情報であり、両端で一致させる必要があります。この項目がない設定に、任意の値を追加しないでください。設定に含まれている場合は、クライアント側だけ削除することもできません。トラブル調査やスクリーンショットでは、Private KeyとPreshared Keyを必ず隠してください。公開鍵は秘密の認証情報ではありませんが、端末の識別につながる場合があります。エンドポイントや社内ネットワーク構成と合わせて公開するのは避けてください。サポートを依頼する場合は、項目の有無、エラーの種類、個人情報を除いた設定の構成を伝えれば十分です。
Address、Allowed IPs、DNSの役割
Addressは通常、自分側のトンネルインターフェースに割り当てられるアドレスです。リモートサーバーのパブリックアドレスでも、ローカルWi-Fiのアドレスでもありません。Endpointは、接続先となるリモートのホストとポートを指定します。Allowed IPsは、対向側が処理するアドレス範囲に関係し、WireGuardのアドレス選択や検証にも使われます。Shadowrocket上位のルールとは、完全に同じ概念ではありません。目的のリクエストが想定どおりトンネルを通るには、両方の設定で対象を適切にカバーする必要があります。
DNS設定は名前解決の方法を決めるもので、足りないルートを自動的に補うものではありません。社内ドメインにアクセスするには、DNSが正しいアドレスを返すこと、宛先への経路があること、リモート側でアクセスが許可され、応答が戻ることが必要です。IPアドレスでアクセスでき、ドメイン名では失敗する場合は、まずDNSを確認します。ドメイン名から想定したアドレスが返るのに接続できない場合は、Allowed IPs、上位のルール、リモート側の戻り経路を確認してください。トンネルを通っていないアドレス範囲の問題を、DNSの変更を繰り返して解決しようとしないでください。
| 設定項目 | 対象 | 確認のポイント |
|---|---|---|
| Private Key | 自分側の識別情報 | リモート側に登録された自分の公開鍵と一致 |
| Peer Public Key | 相手側の識別情報 | 自分側の公開鍵を誤って入力しない |
| Endpoint | リモート側の接続先 | ホスト、ポート、UDPの到達性 |
| Allowed IPs | 対向側のアドレス範囲 | 宛先と上位ルーティングを合わせて確認 |
MTU、Keepalive、モバイルネットワーク復帰
MTUは、トンネルでカプセル化した後のパケットサイズに関係します。値が大きすぎると、一部の経路で大きなパケットだけ正常に転送されず、小さなリクエストは通るのに大きなデータが止まることがあります。小さすぎる場合は、パケット数とオーバーヘッドが増えます。まず手元の設定で推奨されている値を使い、根拠がある場合にだけ少しずつ調整してください。Persistent Keepaliveは必要に応じてネットワーク上のマッピングを維持するための設定で、間隔が短いほど安定するわけではありません。頻度を上げすぎるとバックグラウンド通信と無線通信の起動が増えるため、ネットワーク機器の動作やリモート側の要件に応じて設定します。
モバイルネットワークを切り替えると、エンドポイントへの到達性、マッピングの状態、名前解決が変わることがあります。確認時は、ハンドシェイクが再実行されたか、一部のアドレス範囲だけ失敗するか、画面ロック後に問題が起きるかを分けて記録してください。アクセス権のある社内ネットワークを使う場合は、まず既知のリソースを一つ指定して確認し、段階的に対象を増やします。関係のない公開Webサイトを使って、トンネル全体が正常かどうかを判断しないでください。iPadでも基本的な確認方法は同じです。購入と復元についてはiPadの使い方を参照してください。
07 / HYSTERIA2
Hysteria2:QUIC転送を使う前にUDPの条件を確認
設計の目的とネットワークの前提
Hysteria2はQUICを基盤にしたプロキシ転送方式で、複雑なネットワーク環境でのデータ転送と輻輳制御を重視しています。QUICはUDP上で動作し、TLSと組み合わせて安全なハンドシェイクを行います。一つの接続内に複数のデータストリームを構成でき、単一のTCPバイトストリームとは異なる方法で処理されます。ただし、共有する接続は全体の帯域、輻輳、サーバーのリソースの影響を受けます。複数ストリームがあるからといって、ほかの通信の影響を一切受けないわけではありません。プロトコル名だけから実際の通信速度を推測しないでください。
利用前に最も重要なのは、UDPの経路が使えることです。Webページを正常に閲覧できるネットワークでも、UDPの入口が制限されたり、異なる方法で処理されたりすることがあります。TCPを使う設定が正常だからといって、Hysteria2の入口も使えるとは限りません。接続できない場合は、まずドメイン名の解決、ポート、UDPの到達性を確認し、その後で認証とTLSを調べてください。基盤となる経路が確立していない場合、帯域の設定やKeepaliveを追加しても、足りないネットワーク条件を補うことはできません。
認証、TLS、難読化の設定
手元のHysteria2設定には通常、サーバーアドレス、ポート、認証情報、TLS関連の項目が含まれます。認証情報はサーバー側の指定どおりにすべて入力してください。別のプロトコルのパスワードをそのまま試すことはできません。TLSの名前と証明書の確認方法は前述のとおりです。接続先、Server Name、証明書に含まれる名前の関係が正しい必要があります。UDPを使っていても、証明書の有効期限、名前、信頼チェーンは重要です。ハンドシェイクの失敗をすべてUDPの制限と決めつけないでください。
サーバー側で難読化が有効になっている場合は、クライアントでも対応する種類やパスワードなどを設定します。難読化、認証、TLSは別の層でそれぞれ役割が異なります。一つの項目が正しいからといって、ほかの項目を無視しないでください。難読化を使わない入口に、不明な設定を追加する必要もありません。読み込み済みの設定と手動で作り直した設定で結果が異なる場合は、項目を一つずつ比較してください。特に、簡略化された情報では省略されやすいオプションを確認します。
帯域の設定値は速度テストの結果ではない
設定によっては、上り・下りの帯域を指定する項目があり、特定の輻輳制御方式の動作に関わる場合があります。ここに入力する値はクライアントがリアルタイムで測定した速度ではなく、サーバーがその速度を継続して提供するという意味でもありません。サーバー側の方針やネゴシエーション方法によって、値が反映されるかどうかが変わることがあります。数値を大きくしても実際の帯域は増えません。入力時はアプリの項目で使う単位を確認し、バイト毎秒とビット毎秒を混同したり、自分の下り速度を上りの欄に入力したりしないでください。
実際の接続速度を大幅に上回る値を設定すると、該当する方式ではキューイング、パケットロス、不安定な通信につながることがあります。低すぎる値は、利用可能な転送能力を制限する可能性があります。実際のネットワーク状況とサーバーの説明に基づいて設定し、元の設定は基準として保存してください。テストではダウンロードの継続性、操作への応答時間、ほかのアプリにキューイングの影響が出ていないかも確認します。一度だけ短時間に高い速度が出ても、設定が適切とは限りません。ある程度の時間をかけて安定性を確認してください。
iPhoneとiPadでのリソース消費を確認する
QUICの処理、暗号化、データの送受信には端末のリソースが使われます。実際の電池消費は、実装、通信量、パケットロス、無線信号の強さによって変わり、すべての端末に当てはまる結論はありません。大容量の通信テストではアプリの処理と無線通信が同時に続くため、端末が熱くなっただけで設定ミスとは判断できません。同じ通信量を使ったときの持続的な動作、バックグラウンドで再接続を繰り返していないか、電波の弱い場所や画面ロック解除後に異常が出ないかを確認すると、より参考になります。
特定のWi-Fiだけで接続できない場合は、利用が許可された別のネットワークで経路の違いを確認できます。すべてのネットワークで失敗する場合は、元の認証情報、TLS、サーバーの状態を調べてください。接続は確立するものの大容量通信が止まる場合は、すぐ別の種類に切り替えるのではなく、経路上のパケットロス、データサイズ、帯域設定、リモート側のリソースを確認します。切り替えが有効なのは、サーバーが新しいプロトコルを実際に提供している場合だけです。「使えない」だけで済ませず、どの段階で失敗したかと簡潔なエラー内容を残すと、後から原因を判断しやすくなります。
テストが終わったら、繰り返しの速度テストや不要な継続通信を停止し、普段の設定に戻して電池の状態を確認してください。サブスクリプションの更新後だけ問題が起きる場合は、設定項目の変更を比較し、サーバー側の変更とローカルネットワークの変化を切り分けます。サブスクリプションから読み込んだ設定を手動で修正しても、次回の更新で上書きされることがあります。テスト用コピーとサブスクリプション管理下の設定を区別し、同じ問題が更新後に再発しないようにしてください。
08 / ROUTING · VALIDATION
ルール、DNS、動作確認:プロトコルの接続とリクエストの経路を分けて調べる
Global Routingの3つのモード
正しいプロトコルを選ぶことで、サーバーとの通信条件は整いますが、実際のリクエストがそのサーバーを使うかどうかはGlobal Routingで決まります。Configは現在の設定ファイルとルールに従ってポリシーを決めます。Proxyは主に選択中のプロキシにリクエストを渡します。Directは主に直接接続します。これらのモードが制御するのはリクエストの経路であり、プロトコル認証の誤りを修正するものではありません。DirectでWebサイトが開いても、そのアクセスがサーバーを経由していない可能性があるため、プロキシサーバーが正常とは判断できません。
| モード | 画面上の名称 | 確認するポイント |
|---|---|---|
| 設定に従う | Config | 現在の設定ファイル、ルールの順序、適用されるポリシー |
| プロキシ | Proxy | 選択した設定と実際のリクエスト経路 |
| 直接接続 | Direct | 直接のネットワーク経路と接続先への到達性 |
ルールの順序と最終ポリシー
ルールは通常、記載された順に照合されます。先にある具体的な条件に一致すると、後続のルールはそのリクエストの選択に使われないことがあります。DOMAINは完全なドメイン名、DOMAIN-SUFFIXはドメインの接尾辞、DOMAIN-KEYWORDはキーワードで照合します。IP-CIDRとIP-CIDR6はアドレス範囲、GEOIPはIPアドレスの地域情報で判定します。FINALは、先行するルールに一致しなかった場合に適用されます。以下の例はShadowrocketの設定におけるルールの構造を示すもので、接続情報は含まず、あらゆるネットワークで使える完全な設定でもありません。
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
GEOIP,CN,DIRECT
FINAL,PROXY
例にあるPROXYとDIRECTはポリシーを示すキーワードであり、特定の設定の名前とは異なります。GEOIPの判定はIPアドレスの地域情報に基づき、Webサイトの言語、運営主体、実際のコンテンツの所在地を表すものではありません。ドメイン名が複数のアドレスに解決される場合があり、結果も変わることがあります。IPアドレスを使うルールを設定する前に、名前解決がどこで、いつ行われるかを確認してください。ルールが正しく見えるのに適用されない場合は、実際のリクエストに照合可能なドメイン名が含まれているか、最終的な接続先アドレスは何か、先行するルールに一致していないかを確認します。
REJECTは接続を拒否するポリシーであり、ページの内容を意味的に判定するものではありません。同じドメインで複数の機能が提供されている場合、そのドメインを拒否すると必要な機能まで影響を受けることがあります。アプリ独自の接続方式も、確認できる一致情報に影響します。詳しくはREJECTルールの仕組みと適用範囲を参照してください。USER-AGENTなどアプリケーション層の情報に依存するルールでは、現在の接続で照合に使える情報が得られるかを確認します。すべての暗号化されたリクエストから、これらの項目を常に読み取れるとは限りません。
DNS、IPv6、接続先アドレス
DNSはドメイン名をアドレスに変換し、プロキシプロトコルはその後のデータ転送を担います。関連はありますが、同じ設定ではありません。ドメイン名の解決に失敗すると、接続先に接続できない場合があります。名前解決は成功しても到達できないアドレスが返ると、接続がタイムアウトすることがあります。接続先がIPv4とIPv6の両方に対応していても、現在のネットワークから両方に到達できるとは限りません。確認時は、DNSが何らかの結果を返したかだけでなく、実際に使われたアドレスの種類を記録してください。機能をまとめて無効にする前に、失敗との関連性を確認しましょう。
ドメインルールとIPルールで結果が異なる場合もあります。リクエストが照合される時点で利用できる情報が同じとは限らないためです。同じ接続先について、まずDNSの応答を確認し、接続履歴に表示される宛先アドレスと適用ポリシーを照合してください。DNS、ルールファイル、プロトコルを同時に変更しないようにします。アクセス権のある社内ネットワークでは、外部DNSが内部名を解決できないことがあり、内部DNSも現在の経路から到達できない場合があります。名前解決、DNSサーバーへの経路、宛先ルーティング、戻り経路の順に確認してください。
一連のトラブルシューティング手順
最初に、設定情報が自分の有効な情報であることを確認し、変更前のコピーを保存します。次に、種類、アドレス、ポート、認証情報を確認します。その後、転送方式、TLS、オプション項目を確認してください。次にGlobal Routing、現在のConfig、リクエストがどのルールに一致したかを確認し、最後に接続先を一つに絞って実際のサービスをテストします。各段階で確認可能な結果を得てから次へ進みます。Connectivity Testは判断の補助になりますが、実際のサービスでの確認に代わるものではありません。Dataに表示される通信量の変化も、通信が行われていることを示す手掛かりにとどまります。
問題を報告する場合は、端末のプラットフォーム、接続ネットワークの種類、プロトコルと転送方式の組み合わせ、失敗した段階、個人情報を除いたエラー情報を伝えてください。サブスクリプションのリンク全体、パスワード、秘密鍵、認証情報を含むQRコードは公開しないでください。再インストールの前に、自分の設定と必要な情報を保存し、確認の基準を失わないようにします。購入の復元とインストールについては購入済みアプリの復元方法を、初回接続の手順は使い方を参照してください。よくある症状はトラブルシューティングからご確認いただけます。