Shadowrocketでは複数のプロトコルを追加できますが、プロトコルの種類は利用中のサーバー設定と一致させる必要があります。Typeを変更しても、あるプロトコルの接続先を別の種類に変えることはできません。利用するサービスやサブスクリプションがすでにある方向けに、プロトコル・トランスポート・ルーティングの違いを整理し、代表的な8種類の設定項目、インポートと接続テスト、トラブルの切り分け方を解説します。
1. 対応プロトコルと設定項目一覧
Shadowrocketでプロトコルを選ぶには、Home → 右上の「+」→ Typeと進みます。以下の表では、この記事で取り上げる8種類を紹介します。アプリで選択できるすべての種類を示すものではありません。入力できる項目は、現在のアプリ内にある追加画面で確認してください。プロトコルは名称から通信速度を推測して選ぶのではなく、手元にある接続情報に合わせて選びます。
| プロトコル | 通信方式の特徴 | 優先して確認する設定項目 |
|---|---|---|
| Shadowsocks | 指定した暗号化方式でプロキシ通信を保護。TCP・UDP転送に対応する場合があります | アドレス、ポート、暗号化方式、パスワード。プラグインがある場合はその設定も確認 |
| VMess | UUIDなどで認証し、複数のトランスポート方式と組み合わせ可能 | アドレス、ポート、UUID、暗号化オプション、トランスポート方式、TLS |
| VLESS | 認証と外部トランスポートを分けて扱い、単体ではデータを暗号化しません | アドレス、ポート、UUID、トランスポート方式と対応するセキュリティ設定 |
| Trojan | TLSを利用する構成が一般的で、パスワードで認証 | アドレス、ポート、パスワード、SNI、証明書の検証 |
| HTTP | HTTPプロキシを使用。HTTPSサイトへの接続では通常CONNECTでトンネルを確立 | アドレス、ポート、任意のユーザー名とパスワード、プロキシ接続のTLS設定 |
| SOCKS5 | 汎用プロキシプロトコル。TCP・UDPに対応する場合がありますが、両端での対応が必要 | アドレス、ポート、任意のユーザー名とパスワード、UDPの利用可否 |
| Hysteria2 | QUICベースで、下位の通信にUDPを使用 | アドレス、ポート、認証情報、SNI、証明書、任意の難読化設定 |
| WireGuard | UDPベースの暗号化トンネル。公開鍵で接続先を識別 | 秘密鍵、接続先の公開鍵、エンドポイント、トンネルアドレス、任意の事前共有鍵 |
結論:サーバーの接続情報に合わせてTypeを選択
まず、接続情報に明記されたプロトコルを確認し、項目を順に入力します。アドレスとポートだけでは接続情報を再現できません。認証・トランスポート・セキュリティ設定が不足している場合は、元の情報を確認してください。Typeを次々に切り替えて接続を試すのは避けましょう。
2. プロトコル・トランスポート・TLS・ルーティングの違い
プロトコルは、クライアントとサーバーの認証方法やデータの扱い方を定めます。TCP、UDP、WebSocketなどは通信方式やデータの運び方を表し、TLSは接続の暗号化と相手の認証に使われます。Global Routingはリクエストの振り分け先を決めます。これらは同じ設定に含まれることがありますが、ある層を変更しても別の層の問題が自動で解決するわけではありません。
- プロトコル層:VMessとVLESSは別のプロトコルです。どちらもUUIDを使う設定であっても、Typeを相互に置き換えることはできません。
- トランスポート層:WebSocketを使う場合、パスやHostなどの設定をサーバー側に合わせる必要があります。パスの大文字・小文字やスラッシュの有無も一致しているか確認してください。
- セキュリティ層:SNIはTLSハンドシェイクで使われるサーバー名です。接続先にIPアドレスを指定していても、証明書は指定されたドメイン名で検証する必要がある場合があります。
- ルーティング層:Global RoutingのProxy、Direct、Config、Sceneはルーティングの選択肢であり、プロトコル名ではありません。特定の接続を調べるときは、実際のリクエストがその接続設定を通っているか、まず確認してください。
Homeでは接続と記録を管理し、Configでは設定ファイルを扱い、Settingsではアプリの設定を変更します。Configルーティングでは、現在の設定に含まれるルールを確認してください。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
上記はルールの構文例であり、接続可能なサーバー設定ではありません。DOMAIN-SUFFIXはドメインの末尾、IP-CIDRはIPアドレスの範囲に一致します。GEOIPはIPアドレスの地域情報を使い、FINALはそれまでに一致しなかった通信を処理します。ルールは通常、上から順に照合されます。これらのキーワードは、接続先のパスワード・UUID・鍵の代わりにはなりません。
3. Shadowsocks・VMess・VLESS・Trojanの違い
Shadowsocks:暗号化方式とパスワードをセットで確認
Shadowsocksでは、パスワードが正しくても接続設定が揃っているとは限りません。暗号化方式もサーバー側と一致させる必要があります。設定一覧の名前が似ているという理由だけで、別の方式に置き換えることはできません。接続情報にプラグインが含まれる場合は、アプリで対応する設定ができるか、プラグインのモード・Host・パスも確認してください。プラグインの設定は汎用的なTLSスイッチではありません。
VMessとVLESS:UUIDが同じでも互換性はありません
どちらもUUIDを使う場合がありますが、認証方式とデータの処理方法は異なります。VMessではUUID、暗号化オプション、サーバーが指定するトランスポート設定を確認してください。認証に失敗する場合は、デバイスの日付と時刻も確認しましょう。VLESS自体はデータを暗号化しません。接続の安全性は外側のセキュリティ設定とトランスポート設定によって決まり、UUIDは暗号化設定の代わりにはなりません。
Trojan:パスワードだけでなくTLSも確認
Trojanの一般的な設定項目は、アドレス、ポート、パスワード、SNIです。ポート443はよく使われますが、必須ではありません。証明書の名前と接続先アドレスが異なる場合は、証明書検証を無効にするのではなく、サーバー指定のSNIを確認してください。パスワードの誤りと証明書検証の失敗は、発生する段階が異なります。
- まずプロトコル名を照合し、次にパスワードやUUIDを確認しましょう。異なるプロトコルの認証情報を混同しないようにしてください。
- 接続先にIPアドレス、SNIにドメイン名を指定する構成は正常な場合があります。役割の異なる項目なので、同じ値を無理に入力する必要はありません。
- WebSocketのHostとTLSのSNIも別の項目です。サーバーから同じ値を指定されている場合でも、それぞれ確認してください。
- トランスポート方式、セキュリティ設定、追加項目は、元の接続情報に基づいて入力します。不明な項目を推測で埋めないでください。
4. Hysteria2・WireGuard・HTTP・SOCKS5の確認ポイント
Hysteria2とWireGuardはどちらもUDPを使いますが、同じプロトコルではありません。Hysteria2はQUICベースで、認証情報、TLS、任意の難読化設定を確認します。WireGuardは公開鍵・秘密鍵とトンネルアドレスを使うため、接続先の設定を揃える必要があります。「UDPで通信できる」だけでは、認証・トンネルのルーティング・DNSが正しいとは判断できません。
| 種類 | 混同しやすい設定 | 接続できないときにまず確認すること |
|---|---|---|
| Hysteria2 | 認証情報と難読化用パスワードは役割が異なる場合があります | 現在のネットワークから指定ポートへのUDP通信が可能か確認し、その後に認証情報と証明書名を確認 |
| WireGuard | ローカルの秘密鍵と接続先の公開鍵は入れ替えられません。トンネルアドレスはサーバーのエンドポイントではありません | エンドポイント、鍵の組み合わせ、トンネルアドレス、許可するルートの範囲が揃っているか |
| HTTP | HTTPSサイトを閲覧できても、クライアントからプロキシまでの接続にTLSが自動で使われるわけではありません | プロキシ接続に必要なTLS設定、ユーザー名とパスワード、サーバーがCONNECTを許可しているか |
| SOCKS5 | プロトコル自体は通信を暗号化しません。TCPに対応していてもUDPが使えるとは限りません | 認証方式、サーバーのUDP対応状況、ネットワークからの到達性 |
プロトコル名だけで速度を判断しないでください。通信速度や遅延は、経路・パケットロス・サーバー負荷・帯域制限にも左右されます。利用中の接続を比較する際は、ネットワーク・接続先・時間帯などの条件をできるだけ揃え、成功率と具体的なエラーを記録してください。一度の遅延測定だけで、どのネットワークでも特定のプロトコルが最適だとは判断できません。
5. 既存のサブスクリプションや接続情報を追加・確認する
サブスクリプションは接続情報をまとめて取得する方法であり、9番目のトランスポートプロトコルではありません。1つのサブスクリプションに複数のプロトコルが含まれることがあり、更新時に接続情報が変わる場合もあります。この記事では、利用するサービスとサブスクリプションをすでにお持ちであることを前提としています。操作前に元の情報を保存し、サブスクリプションURLや共有リンクに含まれる認証情報は慎重に扱ってください。
-
元の接続情報を確認
サブスクリプションURLか、個別の接続情報かを確認してください。サブスクリプションURLは
https://example.com/sub?token=xxxxのような形式です。これは説明用のダミー値で、接続には使えません。ノードのServerアドレスとして入力しないでください。 -
追加方法を選択
既存のサブスクリプションを追加するには、Home → 右上の「+」→ Type → Subscribeと進み、自分のサブスクリプションURLを省略せず入力して保存します。手動で追加する場合は、Typeで接続情報に明記されたプロトコルを選びます。Subscribeは選択しません。
-
インポートした項目を確認
サブスクリプションを保存して更新したら、Homeに戻って作成された接続情報を確認します。対象の項目を開き、Type、アドレス、ポートを照合してください。TLSや追加のトランスポート設定が含まれる場合は、元の情報と項目ごとに比較します。表示名だけを確認して終わらせないでください。
-
テスト時のルーティングを確認
Homeでテストする接続を選び、Global Routingを確認します。ルールの影響を切り分ける場合は、一時的にProxyを選んで一般的なWebページへのリクエストをテストし、完了後に元のルーティングへ戻してください。プロトコル・DNS・複数のルールを同時に変更しないでください。
-
接続後に再確認
接続を開始し、システムの案内に従ってVPN構成を許可してから、目的のサイトにアクセスできるか確認します。自動接続の動作を調べる場合は、その後にSettings → On Demandを確認してください。手動接続の問題と自動接続の問題は分けて対処しましょう。
サブスクリプションの更新は、リモートの接続情報を再取得する操作です。アプリのアップデートではなく、各項目に加えた手動変更が保持される保証もありません。更新後にプロトコル・ポート・名前が変わった場合は、まず新旧の情報を照合してください。リストが空の場合は、サブスクリプションの応答内容とURLが正しいか確認しましょう。特定のプロトコルにアプリが対応していないと、すぐに判断する必要はありません。
6. プロトコル選択と接続に関するよくある質問
アドレスとポートしかありません。Trojanを選べば接続できますか?
それだけではプロトコルを特定できません。Trojanにはパスワードと正しいTLS設定も必要です。ほかの種類ではUUIDや鍵が必要な場合があります。まず手元の接続情報でプロトコル名と必要項目を確認し、Home →「+」→ Typeから該当する種類を選んでください。
VLESSをVMessに変更すると接続できないのはなぜですか?
Typeは表示ラベルではなく、実際に使うプロトコルを指定する項目です。VMessに変更しても、接続先のVLESSサーバーがVMessを受け入れるようにはなりません。元のTypeに戻し、UUID・トランスポート方式・セキュリティ設定を確認してください。
Hysteria2が特定のネットワークでは使えて、別のネットワークでは失敗するのはなぜですか?
まず接続設定を変えずに、2つのネットワークそれぞれでUDPが到達するか確認してください。ネットワークによってはUDPが制限されます。TLSや認証に関するエラーが出た場合は、SNI・デバイスの時刻・認証情報を確認してください。タイムアウトだけを根拠にパスワードの誤りとは判断できません。
接続済みと表示されるのに、Webページを開けないのはなぜですか?
VPNの接続状態は、接続先プロキシへのリクエスト成功を意味するものではありません。まずHomeで選択中の接続を確認し、Global RoutingがDirectになっていないか調べてください。Configを使っている場合は、一致するルールと最終的なポリシーを確認します。ドメイン名の名前解決とプロキシの認証は分けて検証してください。
1つのサブスクリプションに複数のプロトコルを含められますか?
できます。取得したデータがアプリで解析できる形式で、各接続に必要な項目を含んでいる必要があります。インポート後、各項目のTypeを確認してください。接続情報が不足している場合は、サブスクリプションの応答内容と該当項目の形式を確認します。不足を補うために、ほかの項目のTypeを変更しないでください。