Shadowrocketの対応プロトコル一覧|Shadowsocks・VMess・VLESS・Trojan・Hysteria2・WireGuardを解説

ShadowrocketのShadowsocks、VMess、VLESS、Trojan、HTTP/SOCKS5、WireGuard、Hysteria2について、通信方式と主な設定項目を解説。ノードの種類を見分けるポイントがわかります。

この記事の概要

Shadowrocketは、さまざまなプロキシプロトコルとトンネルプロトコルに対応しています。選ぶ際はプロトコル名だけで比べず、サービス提供元が指定する種類を選び、認証情報・通信方式・TLSの設定を確認しましょう。この記事では、iPhone、iPad、Mac、Windows、Android、Linuxで設定項目を確認する方法を解説します。Home、Add Server、Configを目印にしながら、プロトコルとトランスポート層の違い、インポート後に確認すべき項目、接続トラブルの切り分け手順を紹介します。画面や項目は使用中のデバイスによって異なる場合があります。

プロトコル・通信方式・ルールの違い

ノードの種類はクライアントとサーバー間の通信方法を示し、通信方式はデータの運び方、ルールはリクエストの接続先を決めます。これらは関連していますが、互いに置き換えられるものではありません。たとえばVLESSは複数の通信方式と組み合わせられます。VLESSを選んだだけでは、WebSocketのパスやTLS、サーバーポートは決まりません。

サービス提供元からサブスクリプションまたは必要な設定情報を入手したら、指定されたプロトコルの組み合わせを維持してください。同じアドレスのTypeをVMessからTrojanに変更しても、サーバーがTrojanに切り替わるわけではありません。どちらの設定もポートが443でも、ポート番号が同じというだけで、認証方式やハンドシェイクが同じとは限りません。

7種類のプロトコル:設定項目早見表

以下の表は設定項目の確認用であり、そのまま使える設定テンプレートではありません。サービス提供元が認証情報、通信方式、証明書情報を1つの共有リンクにまとめている場合もあります。インポート後も各項目を確認してください。表中のポート番号は説明用です。Trojanでは443、WireGuardでは51820/UDPがよく使われますが、固定値ではありません。

Shadowrocketの主なプロトコルと設定項目
プロトコル 通信の特徴 優先して確認する項目
Shadowsocks 暗号化プロキシ。TCPに対応し、UDP転送の可否は双方の設定とネットワークによって異なる Address、Port、暗号化方式、Password
VMess 認証・暗号化機能を備え、さまざまな通信方式と組み合わせ可能 UUID、暗号化オプション、通信方式、TLS、システム時刻
VLESS 軽量な認証プロトコル。プロトコル自体はデータを暗号化しない UUID、通信方式、TLS、サーバー指定の追加パラメーター
Trojan 通常はTLSでプロキシ通信を保護。対応状況はサーバー側の設定にも依存 Password、TLS、SNI、証明書のドメイン名
HTTP / SOCKS5 汎用プロキシプロトコル。HTTP CONNECTはTCPトンネルを確立でき、SOCKS5はUDP ASSOCIATEに対応可能 プロキシの種類、アドレス、ポート、ユーザー名とパスワード、TLSの有効・無効
Hysteria2 QUICベースで、下位層にUDPを使用 認証情報、UDPポート、TLS、帯域幅と難読化の設定
WireGuard UDPベースの暗号化IPトンネル。鍵ペアで通信相手を識別 Private Key、Peer Public Key、Endpoint、トンネルアドレス、MTU

要点:まず設定情報が揃っているか確認

既存のノードにUUID、鍵、通信方式の設定がない場合は、サービス提供元に確認してください。Typeを変更したりポート番号を推測したりして接続を試すのは避けましょう。

Shadowsocks・VMess・VLESS:認証方式と暗号化の違い

Shadowsocks:暗号化方式を一致させる

Shadowsocksでは、サーバーアドレス、ポート、暗号化方式、パスワードが必要です。暗号化方式は速度設定ではありません。クライアントとサーバーで同じ方式を指定する必要があります。パスワードだけをコピーして暗号化方式が異なるままでは、正常に通信できないことがあります。サーバー側でプラグインや追加の通信方式が指定されている場合は、現在のクライアントが対応していることを確認し、正しく設定してください。基本の4項目が一致していても、それだけでは接続できない場合があります。

VMess:UUIDだけでなく通信方式も確認

VMessではUUIDで認証し、通信方式やTLSの設定が接続の確立に影響します。サービス提供元がWebSocketを使用している場合は、パスとHostも確認してください。TLSのSNIとWebSocketのHostは異なる役割を持つ場合があります。同じドメイン名だからといって、任意に置き換えることはできません。VMessではシステム時刻も重要です。認証エラーが発生したら、まずデバイスの時刻を自動設定に戻し、その後で設定項目を確認してください。

VLESS:認証と暗号化を混同しない

VLESS自体はデータを暗号化しません。実際に通信を保護できるかは、外部のセキュリティ機能とサーバーの構成によって決まります。UUIDが正しくても、TLSで保護されているとは限らず、サーバー指定の追加項目がすべて設定済みとも限りません。VLESSをインポートしたら、サービス提供元の設定に従ってTLS、通信方式、追加項目を確認し、内容がわからない設定を自己判断で削除しないでください。

Trojan・HTTP・SOCKS5:ポート番号だけでTLSを判断しない

Trojanは通常、TLSで安全な接続を確立し、パスワードでプロキシ認証を行います。接続先にはIPアドレスを指定できる場合もありますが、証明書の検証には正しいドメイン名とSNIが必要なことがあります。証明書名が一致しない場合は、証明書の検証を無効にするのではなく、サービス提供元が指定するドメイン名、SNI、デバイスの時刻を確認してください。

HTTPとSOCKS5は汎用プロキシインターフェースです。通常のHTTPプロキシ接続自体は暗号化されません。HTTPSサイトへの接続では、HTTP CONNECTを使ってサイトとのTLS接続を中継できますが、クライアントからプロキシまでの通信に別途TLSを使うかどうかは別の設定です。SOCKS5自体もデータを暗号化しません。ユーザー名とパスワードは通信の暗号化の代わりにはなりません。

Hysteria2とWireGuard:どちらもUDPを使うが用途は異なる

Hysteria2はQUICベースで、下位層にUDPを使用します。実際の通信状況は、UDPの到達性、パケットロス、輻輳制御、帯域幅の設定などに左右されます。ネットワークでUDPが遮断されている場合、同じサーバーのTCPポートに接続できても、Hysteria2が使えるとは判断できません。帯域幅は実際の回線速度とサービス提供元の説明を参考に設定してください。数値を大きくすれば速くなるわけではありません。

WireGuardは暗号化されたIPトンネルであり、ユーザー名とパスワードでログインするプロキシプロトコルではありません。Private Keyはデバイス内に保持し、Peer Public Keyは相手側の識別に使います。両者は入れ替えられません。Endpointは相手側のアドレスとポート、トンネルアドレスはデバイスに割り当てられる仮想アドレスです。公開サーバーのIPアドレスをトンネルアドレスに設定することもできません。

「UDPを使う」という理由だけで、両者を同じものと判断しないでください。Hysteria2はプロキシ通信に使われ、WireGuardはIPトンネルを構築します。インポートする項目、アドレスの割り当て、ルーティングの範囲はそれぞれ異なります。この記事では速度を比較せず、測定していない通信性能を固定の割合で示すこともありません。

Add ServerからHomeまで:設定確認と接続テスト

以下の手順は、サービス提供元と設定情報をすでにお持ちの場合を想定しています。サブスクリプションを使うとノード情報をまとめて更新でき、手動追加は個別の項目を確認するのに適しています。サブスクリプションの更新によって、リモート管理されている項目が上書きされることがあります。手動で確認・変更する前に元の設定を保存し、必要に応じて複製した項目を使ってください。

  1. 種類を確認

    Homeで既存ノードの編集画面を開くか、右上の「+」からAdd Serverを開いてTypeを確認します。ノード名から推測せず、サービス提供元の指定に従ってShadowsocks、VMess、VLESS、Trojanなどを選んでください。

  2. 認証情報を確認

    Add ServerでAddress、Portと、選択したTypeに対応する認証項目を確認します。UUIDに空白が入らないようにし、Passwordの大文字・小文字にも注意してください。WireGuardのPrivate Keyは他人に送らないでください。

  3. 通信方式を確認

    TLS、SNIのほか、設定で必要な場合はWebSocketのパスとHostを確認します。サービス提供元が明示した項目だけを入力し、指定のない項目を別のノードからコピーしないでください。

  4. 接続をテスト

    保存してHomeに戻り、対象のノードを選んで接続します。一時的にGlobal Routing → Proxyを使い、同じ接続先でテストしてください。タイムアウト、認証エラー、証明書エラーなどの結果を記録し、テスト後は元のルーティング設定に戻します。

  5. 更新内容を確認

    サブスクリプションを使っている場合は、Config → Subscribeで対象の項目を確認して更新し、Homeに戻ってノードに変更がないか確認します。サブスクリプションURLはサービス提供元から入手してください。クライアント設定ファイルのURLをノードのサブスクリプションURLとして使わないでください。

たとえばhttps://example.com/sub?token=xxxxは、サブスクリプションURLにクエリパラメーターが含まれる場合を示す明らかなダミー値です。実際のリンクにはアクセス情報が含まれていることが多いため、トラブル確認用のスクリーンショットではサーバー名だけでなく、リンク全体とQRコードを隠してください。

Global Routing:プロトコルとルールの問題を切り分ける

同じノードでProxyなら接続でき、Configでは失敗する場合は、ノードを作り直す前にルールとポリシーの指定先を確認してください。Configは設定済みのルールに従って接続先を選びます。ドメインルールに一致しない通信が必ず直接接続になるとは限りません。最終的な動作は後続のルールとFINALによって決まります。

Config

推奨

現在の設定にあるルールとポリシーに従って通信を処理します。まずConfigが有効になっていることを確認し、対象のリクエストがどのルールに一致したかを調べてください。

おすすめの用途:利用可能なルール設定を使った日常的な振り分け

Proxy

プロキシ処理の対象となるリクエストをプロキシ経由にし、Configのルール選択による影響を一時的に切り分けます。認証やTLSの設定ミスは修正されません。

おすすめの用途:ノードから接続先に到達できるか短時間で確認

Direct

選択中のプロキシノードを経由せず、直接接続します。この状態でWebページを開けても、ノードのプロトコル設定が正しいことの証明にはなりません。

おすすめの用途:ローカルネットワークからの直接接続結果との比較

Global RoutingのSceneは、設定済みのシーンに応じて動作を決める機能であり、別のプロキシプロトコルではありません。診断時はSettings → On Demandも確認してください。自動接続の条件が有効だと、手動で切断した後に再接続する場合があります。一時的に無効にするときは、元の設定を記録し、テスト後に戻してください。

[Rule]
DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.0.2.0/24,DIRECT,no-resolve
GEOIP,CN,DIRECT
FINAL,PROXY

上記はルール構成の例であり、そのまま置き換えて使える完全な設定ではありません。example.comと192.0.2.0/24は説明用です。PROXYは設定内に存在する有効なポリシーを指定してください。DOMAIN-SUFFIXはドメインとサブドメインに一致し、IP-CIDRはIPアドレス範囲に一致します。GEOIPはIPの地理データベースに基づいて判定し、FINALはそれ以前のルールに一致しなかったリクエストを処理します。通常、ルールは上から順に評価されます。no-resolveを指定すると、このIPルールの評価だけを目的としたドメイン解決を避けられます。

プロトコル選びと接続トラブル:よくある質問

ノード名に「高速」とあります。どのTypeを選べばいいですか?

ノード名は識別用のラベルにすぎません。Homeで対象ノードの編集画面を開いてTypeを確認するか、サービス提供元から完全な共有リンクを入手して再インポートしてください。アドレスとポートしかわからない場合は、プロトコルと認証情報を確認しましょう。ノード名に含まれる宣伝文句をプロトコルの設定項目と混同しないでください。

遅延テストの数値が出るのに、Webページが開かないのはなぜですか?

遅延テストの結果は、そのテスト方法での応答を示すもので、目的のWebサイトに接続できることを意味しません。Homeで同じノードを選び、一時的にGlobal Routing → Proxyに切り替えて同じ接続先を試してください。その後、DNS、TLS、認証情報を確認します。Configに戻したときだけ失敗する場合は、ルールとポリシーを確認してください。

Hysteria2がタイムアウトします。Trojanに変更すれば解決しますか?

Typeだけを変更しても解決しません。サーバー側でTrojanが提供され、必要な設定情報がすべて揃っている必要があります。まず元のHysteria2設定を使い、別のネットワークでUDPに接続できるか確認してください。プロトコルを切り替える場合は、サービス提供元から別の完全な設定情報を入手してください。

サブスクリプションを更新したら、手動で変更した設定が元に戻りました。

リモートサブスクリプションの更新で、管理対象のノード項目が新しい内容に上書きされることがあります。Config → Subscribeで更新前後の項目を比較し、サービス提供元に変更内容を確認してください。一時的な確認にはノードを複製して使い、上書きされる元の項目を何度も変更しないようにしましょう。

パソコンとスマートフォンで同じプロトコルを必ず使う必要がありますか?

その必要はありません。まず各デバイスの画面で、サービス提供元が指定する設定項目をすべて入力できるか確認し、それぞれのネットワークでテストしてください。同じプロトコルでも、ネットワーク、DNS、サーバー側のポリシーによって結果が異なることがあります。プロトコル名だけで比べるより、設定の違いを記録する方が有効です。

Shadowrocketをダウンロード