Shadowrocketの対応プロトコルと使い方|Shadowsocks・VMess・VLESS・Trojan・Hysteria2を解説

Shadowrocketの対応プロトコルを解説。Shadowsocks、VMess、VLESS、Trojan、HTTP/SOCKS5、WireGuard、Hysteria2の特徴と、Add Serverで選ぶTypeを紹介します。

この記事の要点

Shadowrocketは複数のサーバープロトコルに対応していますが、Typeはサーバー側の設定と一致させる必要があります。名前だけを変更してもプロトコルは切り替わりません。この記事では、利用するサービスと設定情報をすでにお持ちの方を対象に、7種類のプロトコルの用途、追加時に確認する項目、プロトコル・通信方式・ルールのどこに原因があるかを見分ける方法を解説します。サブスクリプションURLと接続情報は、ご利用のサービス提供元から入手してください。

1. 対応プロトコルとAdd ServerのTypeの選び方

まずサーバー側で使われているプロトコルを確認し、Home → 右上の「+」→ Add Server → Typeから該当する項目を選びます。この記事で扱うのは、Shadowsocks、VMess、VLESS、Trojan、Hysteria2、WireGuard、HTTP、SOCKS5です。実際に選べる項目や入力欄は、現在のアプリ画面でご確認ください。

プロトコルによって、クライアントとサーバー間のハンドシェイク、認証、データ転送の方法が異なります。サーバーアドレスとポートは接続先を示す情報であり、それだけでプロトコルは判断できません。たとえば443番ポートでは複数のサービスを利用できます。443だからTrojanを選ぶ、あるいはTLSが有効だと判断することはできません。

サーバー側のプロトコル対応するType主な確認項目
ShadowsocksShadowsocksアドレス、ポート、暗号化方式、パスワード
VMessVMessUUID、暗号化設定、通信方式、TLS
VLESSVLESSUUID、通信方式、TLSまたは該当するセキュリティ設定
TrojanTrojanパスワード、ポート、TLS、サーバー名
HTTP / HTTPSHTTP / HTTPSの該当項目プロキシの接続先、認証方式、TLSの有無
SOCKS5Socks5の該当項目アドレス、ポート、ユーザー名とパスワード、UDPの対応状況
WireGuardWireGuardローカル秘密鍵、ピアの公開鍵、エンドポイント、トンネルアドレス
Hysteria2Hysteria2認証情報、UDPポート、TLS、必要に応じて難読化設定

要点:サーバー側の設定に合わせてTypeを選ぶ

まず既存のサブスクリプションを読み込み、追加されたサーバーのTypeを確認します。手動で追加する場合のみ、各項目を入力してください。あるプロトコルに対応していても、任意の通信方式や拡張パラメーターをそのまま組み合わせられるとは限りません。

2. Shadowsocks・VMess・VLESSの違い

Shadowsocks:パスワードと暗号化方式をセットで確認

Shadowsocksは、あらかじめ設定したパスワードと暗号化方式を使ってプロキシ接続を確立します。Add ServerでShadowsocksを選んだら、アドレスとポートに加え、暗号化方式もサーバー側と一致させてください。パスワードが正しくても暗号化方式が異なると接続できない場合があります。名称が似ているからといって、別の暗号化方式に置き換えないでください。

サーバー設定に追加のプラグインや難読化パラメーターが含まれる場合は、アプリが対応しているか確認し、設定をすべて正確に反映してください。アドレス、ポート、パスワードだけをコピーしても、設定全体を読み込んだことにはなりません。サブスクリプション読み込み後は、サーバーの編集画面に表示される実際の項目を基準に確認します。

VMess:UUIDだけでなく通信レイヤーも確認

VMessはUUIDなどの識別情報を使って認証し、データのセキュリティ設定も備えています。サーバー側でWebSocketなどの通信方式が指定されている場合、クライアント側も一致させる必要があります。TLSが有効な場合は、サーバー名などの設定も確認してください。UUIDが正しいことは必要条件の一つですが、通信方式の設定に代わるものではありません。

VLESS:認証と接続のセキュリティを分けて考える

VLESS自体はデータを暗号化しません。接続の安全性は、利用するセキュリティレイヤーと設定全体によって決まります。VMessのTypeをVLESSに変更して、すべての項目をそのまま使い続けることはできません。TLS、REALITY、特定の通信パラメーターを使う場合は、サーバー側から提供された設定と照合し、現在のアプリに該当する項目があることを確認してください。

3. TrojanとHysteria2:TLSは共通、通信方式は異なる

Trojanでは一般にTLSで接続を保護し、パスワードで認証します。Trojanを選んだら、サーバー側のポート、パスワード、TLSのサーバー名を確認してください。サーバーアドレスにIPアドレスを使う場合でも、証明書は通常ドメイン名に対応しています。接続先アドレスと証明書の名前は別々に確認してください。証明書エラーを、証明書検証を常に無効にして回避するのは避けてください。

Hysteria2はQUICをベースとし、下位の通信にUDPを使い、TLSと認証の仕組みを組み合わせています。Hysteria2を選んだら、アドレスと認証情報のほか、UDPポート、サーバー名、サーバー側で難読化が有効かどうかも確認してください。HysteriaとHysteria2は別のプロトコルバージョンです。名称の前半が同じだからといって互換性があるとは限りません。

確認項目Trojanの一般的な設定Hysteria2
基本の通信方式通常はTCPでTLS接続を確立UDPでQUIC接続を確立
認証パスワードを確認認証情報とサーバー側の要件を確認
ポートの例サーバー側でTCP 443が指定されている場合は443を入力サーバー側でUDP 443が指定されている場合は443を入力
ネットワーク制限の影響TCPポートとTLSハンドシェイクを確認現在のネットワークから接続先UDPポートに到達できるか重点的に確認

表中の443は、同じポート番号でも通信方式が異なる場合があることを示す例であり、共通の設定値ではありません。Hysteria2の実際の接続状況は、UDPの到達性、パケットロス、帯域幅、サーバー設定によって変わります。プロトコル名だけを根拠に速度を保証することはできません。同じ設定がWi-Fiでは使えてモバイルネットワークではタイムアウトする場合は、設定を変えずにネットワーク環境を比較してください。

4. HTTP・SOCKS5・WireGuardの特徴

HTTPとSOCKS5は汎用プロキシプロトコルです。HTTPプロキシではCONNECTを使って接続先への通信を確立できます。HTTPSプロキシはクライアントとプロキシサーバー間にTLSを追加するもので、「HTTPプロキシ経由でHTTPSサイトにアクセスする」こととは別の概念です。Typeはアクセス先のサイトではなく、プロキシの接続先自体がTLSを使うかどうかに基づいて選びます。

SOCKS5ではユーザー名とパスワードによる認証を交渉できますが、プロトコル自体に通信を暗号化する機能はありません。UDPが利用できるかどうかは、サーバーの対応状況、アプリの設定、中間ネットワークにも左右されます。Socks5を選んだからといって、すべてのUDPリクエストが成功するとは限りません。よく使われる1080番ポートは慣例的な例にすぎず、実際にはサーバー側から指定されたポートを使ってください。

WireGuardは鍵を使うトンネルプロトコルで、プロキシのパスワードだけを入力する方式とは異なります。通常、設定にはローカル秘密鍵、ピアの公開鍵、トンネルアドレス、リモートエンドポイントなどが必要です。事前共有鍵を有効にする場合は、双方の設定を一致させてください。エンドポイントはUDPを使用します。51820番ポートはよくある例ですが、必須の固定値ではありません。

5. サブスクリプションの読み込みから初回確認まで

サブスクリプションはサーバー設定を受け取る方法であり、データを転送するプロトコルではありません。1つのサブスクリプションに、異なるTypeのサーバーが含まれる場合があります。サブスクリプションを更新しても、プロトコルがアップグレードされるわけではありません。TLS、通信パス、認証パラメーターの入力漏れを防ぐため、サービス提供元から入手した設定一式を使ってください。

  1. 入手元を確認

    すでにお持ちのサブスクリプション、または接続情報一式を用意します。アプリをまだ入手していない場合は、正規版の確認ページでApp Storeのリンクをご確認ください。接続情報は別途、ご利用のサービス提供元から入手してください。

  2. サブスクリプションを読み込む

    Home → 右上の「+」→ Add Server → Type → Subscribeの順に進み、サブスクリプションURLを入力して保存します。Homeに戻り、サブスクリプションの更新操作でサーバー一覧を取得します。

  3. Typeを確認

    読み込んだサーバーの編集画面を開き、Type、アドレス、ポート、TLSなどの項目を確認します。手動で追加する場合は、Add Server → Typeで該当するプロトコルを選び、元の設定情報どおりに入力してください。

  4. サーバーを選んで接続

    Homeに戻り、使用するサーバーを選択します。選択状態を確認して、画面上部の接続スイッチをオンにします。初回接続時は、システムの案内に従ってVPN構成の追加を許可してください。

  5. 接続先へのアクセスを確認

    HomeでConnectivity Testを実行し、その後、実際の接続先にアクセスします。テストに成功しても接続先を開けない場合は、すぐにTypeを変更せず、Global Routing、現在の設定、DNSを確認してください。

サブスクリプションを更新すると、手動で変更したサーバー項目が新しい内容で上書きされる場合があります。更新の前後で動作が変わった場合は、まずType、ポート、通信方式、TLSの項目を比較してください。サービス提供元に確認する際は、認証情報を削除したエラーの状況とネットワーク環境だけを伝えてください。

6. TypeとGlobal Routingは別の設定

Typeはサーバーへの接続方法を決め、Global Routingはリクエストの処理経路を決めます。プロトコル設定が正しくても、ルーティングの状態やルールの適用によって、想定したサーバーが使われないことがあります。以下は、信頼できるルール設定をすでにお持ちの方向けの日常利用の説明です。特定のプロトコルや接続先を推奨するものではありません。

Config

ルールに従う

現在選択している設定ファイルに基づいてリクエストを処理します。ルールは順に評価され、最終的な処理は一致したポリシーによって決まります。Configを、特定の種類のサイトが常に直接接続される設定と考えることはできません。

適した用途:適切なルール設定があり、接続先に応じて振り分けたい場合。

Proxy

プロキシをグローバルなルーティング状態として使い、Configのルールによる影響を比較します。サーバーのTypeは変更されず、パスワード、証明書、通信方式の問題も解決しません。

適した用途:ルールによる振り分けが失敗の原因か、一時的に確認したい場合。

Direct

直接接続の状態にし、選択したプロキシサーバーを経由せずに確認します。この状態でウェブページを開けても、読み込んだサーバーが有効だとは証明できません。

適した用途:現在のネットワークで直接アクセスできるか比較したい場合。

Scene

設定済みのシーン条件に応じて、対応するルーティング動作を適用します。問題を調べる際は、画面にSceneと表示されているかだけでなく、現在のシーンとその設定も確認してください。

適した用途:ネットワーク環境ごとのルーティング動作を明確に設定している場合。

ConfigのDOMAIN-SUFFIXはドメインのサフィックス、GEOIPは接続先IPの地理データベース情報、IP-CIDRはIPアドレス範囲に一致するルールです。FINALは最後のフォールバックとして使います。これらはルールのキーワードであり、Add Serverのプロトコル項目ではありません。Settings → On Demandではオンデマンド接続の条件を確認します。ここもプロトコルの選択画面ではありません。

7. プロトコルの選び方と接続トラブルに関するよくある質問

VMessをVLESSに変更すれば、接続は速くなりますか?

Typeだけを変更しても接続できません。Homeのサーバー編集画面に戻り、サーバー側で指定されたプロトコルに戻してください。サーバー側から別途VLESSの設定情報が提供されている場合は、独立したサーバーとして設定一式を読み込みます。認証方式、通信方式、セキュリティ設定はすべて一致させる必要があります。

Hysteria2がタイムアウトする一方、ほかの接続は使えます。どうすればよいですか?

まずTypeがHysteria2になっていることを確認し、認証情報、UDPポート、TLSのサーバー名を調べます。サーバー設定は変えずに、Wi-Fiとモバイルネットワークの両方でテストしてください。特定のネットワークだけで失敗する場合は、そのネットワーク環境を記録し、接続先のUDPポートに到達できるか確認します。

遅延の数値は表示されるのに、ウェブページが開けないのはなぜですか?

まずHomeで選択中のサーバーを確認し、Connectivity Testを実行します。次にGlobal Routingが想定どおりの状態か確認してください。Configを使っている場合は、現在の設定と一致したルールも確認します。遅延テストの結果は、そのテスト方式での応答を示すものであり、接続先へのアクセス全体を確認する代わりにはなりません。

証明書エラーが出た場合、検証を無効にしてもよいですか?

まずシステムの日付と時刻を確認し、サーバー編集画面のTLSサーバー名とサーバー側の証明書要件を照合します。証明書の期限切れ、名前の不一致、信頼チェーンの異常は、それぞれ原因を分けて対処してください。エラー情報を残してサービス提供元に確認し、検証を無効にする方法を通常の解決策にしないでください。

サブスクリプション更新後にプロトコルが変わりました。自分で元に戻す必要がありますか?

まず更新後のサーバーのTypeと接続設定を確認し、サービス提供元の変更案内と照合してください。以前の名前だけを頼りに新しい設定を上書きしないでください。設定が不完全と思われる場合は、認証情報を削除したエラーの内容を残し、サービス提供元に確認してからサブスクリプションを再更新し、動作を確かめます。

最終的には、プロトコルが一致しているか、接続情報がそろっているか、現在のネットワークで必要な通信方式が使えるか、ルーティングが想定どおりかの順に確認します。一度に変更する条件を一つに絞り、変更前後の状況を記録すると、複数のTypeを切り替え続けるより原因を特定しやすくなります。

App Storeで正規版を入手デベロッパ名とアプリIDを確認