この記事は、利用中のサービスから接続情報やサブスクリプションを受け取り、Shadowrocketでプロトコルを確認したい方を対象としています。まずプロトコル一覧でTypeを確認し、Address、Port、認証情報、通信設定を順に点検します。そのうえで、接続の問題とルールによる振り分けの問題を切り分けます。プロトコルの種類はサーバーの設定と一致させてください。Typeを変更するだけで、既存サーバーを別のプロトコルに切り替えることはできません。
対応プロトコルとAdd Serverの設定項目
Shadowrocketは以下の表に記載したプロトコルに対応しています。Homeではサーバーと接続を管理し、Configでは設定ファイルとルールを管理、Settingsではアプリの設定を行います。プロトコルの設定は主にHomeのAdd Serverで確認します。Typeを選ぶと、それに応じた項目が表示されます。追加の通信設定もプロトコルによって異なります。表には確認すべき情報をまとめていますが、すべてのプロトコルで同じフォームが使われるわけではありません。
| プロトコル | 通信方式と認証の特徴 | Add Serverで確認する項目 | よくある見落とし |
|---|---|---|---|
| Shadowsocks | 暗号化方式とパスワードでプロキシ通信を保護します。TCPとUDPを利用できますが、UDPの可否はサーバーと設定にも左右されます。 | Type、Address、Port、Method、Password。プラグインを使う場合は、その設定も確認します。 | Methodがサーバーと一致していない。または、プラグインの設定を通常のメモ欄に記載している。 |
| VMess | UUIDで認証し、複数の通信方式を利用できます。TLSは別途確認が必要な通信セキュリティ設定です。 | Address、Port、UUID、暗号化オプション。既存の設定情報に従ってTransport、TLS、追加項目を確認します。 | UUIDは正しいものの、WebSocketのHostまたはPathが一致していない。 |
| VLESS | UUIDで認証します。プロトコル自体にデータ暗号化機能はなく、セキュリティは実際に設定された保護レイヤーに依存します。 | Address、Port、UUID。サーバーの指定に従ってTransport、TLS、Flowなどのセキュリティ関連項目を確認します。 | UUIDだけをコピーし、サーバーが指定するセキュリティ設定を見落としている。 |
| Trojan | Passwordで認証し、通常はTLSで接続します。証明書のドメイン名と接続先アドレスが異なる場合があります。 | Address、Port、Password、TLS、Server Name。追加の通信設定がある場合は、それも対応させます。 | IPアドレスを入力した際に、元のServer Nameを残していない。 |
| HTTP / SOCKS5 | プロキシプロトコルです。基本形では通信経路は自動的に暗号化されません。HTTPプロキシではCONNECT、SOCKS5ではUDP転送を利用できる場合があります。 | Type、Address、Port。認証が必要な場合はUsernameとPasswordを入力し、安全な接続のオプションは実際のサービスに合わせます。 | HTTPプロキシのアドレスをWebページのURLとして入力する。または、すべてのSOCKS5サービスがUDPに対応していると思い込む。 |
| WireGuard | UDPで暗号化トンネルを構築し、鍵で認証します。UUIDや通常のログインパスワードは使用しません。 | Endpoint、Private Key、Peer Public Key、ローカルトンネルアドレス。設定情報に従ってAllowed IPsやMTUなども確認します。 | ローカルのPrivate KeyとPeer Public Keyを逆に入力する。またはトンネルアドレスを入力し忘れる。 |
| Hysteria2 | QUICをベースとし、UDPを使用します。認証情報とTLSの設定が必要で、サーバーの設定に応じて難読化を利用できます。 | Address、Port、認証情報、Server Name。Obfsを有効にする場合は、種類とパスワードも設定します。 | 現在のネットワークでUDPが制限されている。またはObfsの設定が漏れている。 |
まとめ:元の設定情報に合わせてTypeを選ぶ
サービスから指定されたプロトコル名を確認してから、認証と通信レイヤーの設定を確認します。既存のVMessサーバーは、VLESSに変更するだけでは使えません。接続できない場合はTypeを次々に試すのではなく、まず設定情報を元に戻して照合してください。
Address、Port、認証情報の入力方法
Addressにはサーバーのドメイン名またはIPアドレスを入力します。サブスクリプションのリンクではありません。手動入力では通常、ホスト名だけを指定します(例:server.example.com)。https://、サブスクリプションのパス、クエリパラメーターをAddressに含めないでください。Portには利用中のサービスで指定された実際のポートを入力します。443はよくある例ですが、Trojan、VLESS、Hysteria2のすべてがこのポートを使用するわけではありません。
認証項目は互いに置き換えられません。ShadowsocksのPasswordはMethodと組み合わせて設定します。VMessとVLESSのUUIDは省略せずに入力し、Trojanではサーバー側で指定されたPasswordを使います。WireGuardでは、ローカル側と対向側の役割が明確な鍵のペアが必要です。コピー時は前後の空白を確認してください。画面を共有する場合は、パスワード、UUID、鍵、サブスクリプショントークンを隠してください。
-
フォームを開く
Homeを開き、右上の「+」をタップしてAdd Serverを表示します。登録済みのサーバーはHomeから編集できます。変更前に元の設定情報を控えておくと、必要なときに戻せます。
-
Typeを確認する
Typeを開き、元の設定情報で指定されたプロトコルを選びます。WireGuardは通常のプロキシ設定と鍵やアドレスの項目が異なるため、VMessと同じ入力方法を当てはめないでください。
-
アドレスを入力する
AddressとPortを入力します。元の設定情報がドメイン名なら、そのままドメイン名を使います。IPアドレスが明示されている場合に限り、指定されたIPを入力してください。Portを独自に443へ変更しないでください。
-
認証情報を確認する
Typeに応じてPassword、UUID、または鍵を入力し、必要に応じてTLSやTransportなどの項目を設定します。Host、Path、Server Nameはそれぞれ個別に確認し、名前が似ていても同じ値を入れないでください。
-
保存して接続を確認する
保存後にHomeへ戻り、サーバーを選んで接続スイッチをオンにします。初回接続時は、システムの案内に従ってVPN構成の追加を許可してください。その後、Connectivity Testを実行し、目的のWebページが実際に読み込めるか確認します。
TLS、Transport、UDPで確認すること
プロトコル名だけでは設定の全容は分かりません。VMessやVLESSの設定には、WebSocketなどのTransportが指定される場合があります。TLSは該当する接続を保護し、HostやPathはサーバー側のルーティングに使われることがあります。Address、Port、UUIDが正しくても、追加項目が一致しなければハンドシェイクに失敗する可能性があります。元の設定情報と項目ごとに照合してください。「プロトコルに対応」とは、どの通信方式の組み合わせでも自動認識されるという意味ではありません。
- Server Name
- TLS接続で使用するサーバー名を設定します。AddressにIPアドレスを指定しても、Server Nameには証明書に対応するドメイン名を設定する場合があります。それぞれ役割が異なるため、機械的に同じ値を入力しないでください。
- Host / Path
- WebSocketでは、Hostはリクエストヘッダーのホスト情報、Pathはリクエストパスです。
/wsは書式の例にすぎません。実際の値は既存の設定情報に従い、先頭のスラッシュと大文字・小文字をそのまま保ってください。 - UDP
- Hysteria2のQUICとWireGuardのトンネルはUDPに依存します。他のプロキシプロトコルでは、クライアントのオプション、サーバーの対応状況、現在のネットワークで必要なUDP通信が許可されているかをそれぞれ確認してください。
- MTU
- WireGuardのトンネル設定の一つで、パケットサイズに影響します。設定情報や調査結果からパケットサイズに問題があると判断できる場合に限って変更してください。特定の数値を万能な最適化として使わないでください。
ネットワーク制限を調べるには、同じ既存設定を使ってWi-Fiとモバイル通信でそれぞれテストし、接続できたネットワークとタイムアウトしたネットワークを記録します。Hysteria2が一方のネットワークでのみ失敗する場合、UDPの到達性を確認する手がかりになりますが、それだけでプロトコルの問題とは断定できません。この記事では一律の速度ランキングは示しません。通信速度はサーバー負荷、経路、パケットロス、実際の設定などにも左右されます。
サブスクリプションを読み込んだ後も設定確認が必要な理由
サブスクリプションはサーバー情報をまとめて取得する方法であり、それ自体が接続プロトコルではありません。一つのサブスクリプションに複数のTypeが含まれることがあり、読み込み後も各サーバーは個別のプロトコルで接続します。すでにサブスクリプションを利用している場合は、Home →「+」→ Type → Subscribeを開き、自分のサブスクリプションURLを入力して保存し、更新を実行します。Configの設定ファイルは主にルールとポリシーを管理するもので、用途を混同しないでください。
- リンクとホストは別:サブスクリプションURLにはパスとtokenが含まれるため、通常のサーバーのAddressには入力できません。
https://example.com/sub?token=xxxxは、リンクの形式を示すための架空の例です。 - サーバー情報と設定ファイルは別:サブスクリプションを更新するとサーバー情報を取得できますが、現在のConfigにあるルールも同時に更新されるわけではありません。ルールで参照するポリシー名が、実際に利用できるポリシーと一致しているか確認してください。
- 読み込みと接続は別:一覧にサーバー情報が表示されても、設定が読み込まれたことを示すだけです。認証情報の有効性、TLS接続の成否、接続先サービスへの到達性は、別途接続テストで確認してください。
- 更新と手動変更は別:サブスクリプションのサーバー情報を再度更新すると、サービスから配信された設定に戻る場合があります。手動変更を継続して使う場合は、別のサーバー情報として保存し、変更理由も記録してください。
更新後に特定のサーバーだけ接続できなくなった場合は、更新前後のType、Port、通信設定を照合し、サービス側で認証情報が変更されていないか確認してください。すべてのサーバーを一度に変更せず、まず一つだけ検証します。ほかの設定を残しておくと、原因の切り分けが容易になります。サブスクリプションURLはアクセス認証情報を含むため、公開の質問文に全文を貼り付けないでください。
プロトコルが正しい場合はGlobal Routingを確認
プロトコルはサーバーへの接続方法を決め、Global Routingはリクエストのルーティング方法を決めます。両者は別の階層です。Homeでサーバーを選んでいても、Global RoutingがDirectのままだと、通常のプロキシリクエストは選択したサーバーに送られません。Configを使う場合は、現在のルールがどのポリシーに一致しているかも確認してください。
Config
推奨現在の設定にあるルールに従ってポリシーを選択します。DIRECTに一致したリクエストは直接接続し、PROXYに一致したリクエストはプロキシポリシーで処理します。明示的に記載されていないリクエストがすべて自動的に直接接続されるわけではありません。
適した用途:ルールを確認済みで、ドメイン名やネットワーク範囲ごとに通信を振り分けたい場合。
Proxy
通常プロキシで処理するリクエストをプロキシに送るため、ルール選択の影響を抑えて確認できます。システム通信やバイパス設定などが実際の経路に影響する場合があるため、すべてのパケットを必ず通すという意味ではありません。
適した用途:サーバー接続を一時的に確認し、プロトコルの問題とルールの問題を切り分けたい場合。
Direct
直接接続するため、通常のプロキシリクエストに選択中のサーバーを使用しません。Directに切り替えてWebページが開いても、サーバーの認証情報や通信設定が正しいとは限りません。
適した用途:直接接続を基準にして、問題がローカルネットワークに起因するか確認したい場合。
Global RoutingのSceneは、シーンに応じたルーティング処理を設定する機能であり、4つ目のサーバープロトコルではありません。新しいサーバー情報を検証するときは、まず明確なルーティング方法を選んで要因を減らし、その後、普段の設定に戻します。以下のルールは照合順序の例です。Configで確認するもので、Add Serverには入力しません。
[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はネットワーク範囲、GEOIPはIPアドレスの地域、FINALはそれ以前のルールに一致しなかったリクエストを処理します。ここではFINAL,PROXYにより、残りのリクエストを明示的にプロキシへ送ります。使用前にポリシーが利用可能か確認し、自分のネットワーク環境に合わせて調整してください。
プロトコル接続でよくある質問
UUIDが同じなのに、VMessをVLESSに変更すると接続できないのはなぜですか?
UUIDは認証情報の一部にすぎず、二つのプロトコルでは通信方式が異なります。Homeに戻って該当サーバーの編集画面を開き、Typeをサービスから指定された値に戻し、Transportとセキュリティ設定を確認してください。サーバーからVLESSの設定情報が明示されている場合に限り、その情報を使って新しいサーバーを登録します。
TrojanでIPアドレスを使うとTLSエラーが出る場合は?
該当サーバーを開き、AddressとServer Nameをそれぞれ確認します。IPアドレスでの接続が必要でも、ドメイン名の証明書を使う場合は、指定された証明書のドメイン名をServer Nameに設定してください。デバイスの時刻も確認します。それでも失敗する場合はエラーの種類を記録し、サーバー証明書の状態を確認してください。証明書の検証を先に無効にしないでください。
Hysteria2がタイムアウトする場合、パスワード以外に何を確認すればよいですか?
Port、Server Name、Obfsの設定を確認したうえで、現在利用できる別のネットワークから同じサーバーをテストします。Hysteria2はUDPを使用するため、パスワードの確認だけではネットワーク制限を除外できません。一度に変更する項目は一つにし、接続できたか記録してください。Portと難読化設定を同時に変更すると、原因を判断しにくくなります。
Connectivity Testは成功するのに、Webページが開かない場合は?
まずHome → Global Routingを開き、一時的にProxyを選んで同じWebページを再試行します。表示できるようになった場合は、Configに戻り、そのドメインのルールとポリシーを確認してください。それでも失敗する場合は、DNS、TLS、接続先サービスを確認します。Connectivity Testの成功は、そのテストが通ったことを示すだけで、すべての接続先や通信種別が正常であることを保証しません。