初めて使うときは、クライアント・コア・サーバーの違いを押さえてから、サブスクリプションを導入し、ノードを選んで通信をプロキシに通します。この記事では、この手順に沿って10の疑問に回答。デスクトップ版とAndroid版の操作の違い、よく使われるポートの意味、画面上の稼働表示だけでなく、Webアクセスとログで実際の接続を確認する方法を解説します。
1. V2Ray・クライアント・サブスクリプションの違いは?
V2RayはProject Vのプロキシツール群の一つです。コアはプロトコルやルーティング、ネットワーク接続を処理し、クライアントはGUIと設定管理を提供します。クライアントをダウンロードしただけでは、利用可能なサーバーは手に入りません。接続には有効なサーバー設定が必要で、通常はサブスクリプションURLか個別の共有リンクから取得します。
- クライアント:サブスクリプションのグループ管理、ノード選択、起動・停止、ログ確認を行います。デスクトップ版のv2rayN、Android版のv2rayNGやv2flyNGなどがあります。
- コア:クライアントが生成した設定を実行します。XrayとV2Flyは関連するエコシステムの別々の実装です。どちらもVMessを扱えるからといって、すべての機能に互換性があるとは限りません。
- サブスクリプション:クライアントが設定を取得するためのURLです。更新するとサーバー一覧を取得できますが、アカウントの有効期限が延びたり、サーバーが自動修復されたりするわけではありません。
- ノード:一覧に表示される接続設定の一つです。サーバーアドレス、ポート、認証情報、トランスポートやセキュリティのパラメーターが含まれます。
サブスクリプションURLにはアカウントのトークンが含まれる場合があるため、認証情報として取り扱ってください。URL全体を公開スクリーンショットやオンラインデコードサービス、問い合わせメッセージに載せないでください。
2. v2rayN・v2rayNG・v2flyNGはどう選ぶ?
まずOSに合ったクライアントを選び、次にサーバー設定との互換性を確認します。デスクトップではv2rayNを使います。Androidでは、Xray・VLESS・REALITYが指定された設定なら、まずv2rayNGの対応状況を確認してください。V2Fly用の設定を使う場合はv2flyNGも候補ですが、利用するトランスポートに対応したバージョンか確認が必要です。
v2rayN
おすすめデスクトップ初心者におすすめの選択肢です。Windows・macOS・Linuxに対応しています。OSとCPUアーキテクチャに合った形式を選び、特定のプロトコルを使う場合は、使用中のコアも確認してください。
おすすめの用途:デスクトップでのサブスクリプション管理、システムプロキシ、ルーティング設定。
v2rayNG
Xrayコアを使用するAndroidクライアントです。インポート後はノードのパラメーターが揃っているか確認してください。ノード名が表示されても、プロトコルへの対応が確認できたことにはなりません。
おすすめの用途:AndroidでのXray設定と、Xrayが対応するプロトコル機能の利用。
v2flyNG
V2Flyコアを使用するAndroidクライアントです。サーバーのパラメーターとコアの機能が合う設定に適しています。Xray専用の項目をそのまま流用しないでください。
おすすめの用途:Androidで互換性のあるV2Fly設定を利用する場合。
ここでのおすすめはデスクトップ初心者向けです。Android端末にもデスクトップ用アプリを選ぶべきという意味ではありません。対応プラットフォームやアーキテクチャの違いはクライアント比較をご覧ください。
3. v2rayNにサブスクリプションURLを追加するには?
サブスクリプションURLはサブスクリプショングループに追加します。サーバーアドレス欄に貼り付けないでください。以下では中国語UIの一般的なメニュー名を使っています。バージョンによってボタンの位置は異なる場合があるため、「サブスクリプショングループ設定」と「サブスクリプションを更新」の機能名を目印にしてください。
-
グループを作成
メイン画面で「サブスクリプショングループ」→「サブスクリプショングループ設定」を開き、新規作成からグループを追加します。「普段使い」など、見分けやすい名前を入力してください。
-
URLを入力
サブスクリプションURL全体を入力欄に貼り付け、先頭のスキームや末尾のパラメーターが欠けていないか確認します。説明文や空白、改行まで一緒にコピーしないでください。
-
一覧を更新
保存して「サブスクリプショングループ」に戻り、すべてのサブスクリプションを更新します。使えるプロキシがまだない場合は、まずプロキシを経由しない更新を試してください。直接接続できず、利用可能なノードがある場合は、プロキシ経由での更新を試します。
-
ノードを選択
サーバー一覧に項目が表示されたことを確認し、ノードを一つ選んで有効なサーバーに設定します。続いてシステムプロキシを設定し、この記事の9問目の方法で実際の通信を確認してください。
更新結果が空の場合は、まずサブスクリプション更新ログを確認してください。ログイン画面や期限切れの通知、通常のWebページが返ってきた場合、クライアントがノード一覧として直接解析することはできません。更新を繰り返しても、返される内容の形式は変わりません。
4. Androidでの導入方法とVPNの許可について
v2rayNGでは通常、メイン画面のメニューにある「サブスクリプショングループ設定」から管理します。URLを保存した後に更新も必要です。グループを追加しただけでは、ノードは取得されません。v2flyNGではアプリ内のサブスクリプション管理メニューを使い、両クライアントのボタン配置が同じだと思い込まないでください。
- v2rayNGで「サブスクリプショングループ設定」→「+」を開き、名前とサブスクリプションURLを入力して保存し、メイン画面に戻ります。
- メイン画面のメニューから「サブスクリプションを更新」を実行し、サーバーが一覧に表示されたことを確認してノードを選びます。
- 接続ボタンをタップします。初回起動時にAndroidのVPN接続要求が表示されたら、要求元のアプリを確認して許可してください。
- システムで別のVPN接続がすでに動作している場合は、停止が必要か確認してください。一般的な個人利用では、同一ユーザーがシステムVPNサービスを使った接続を2つ同時に維持できないことがほとんどです。
ここでのVPN許可は、クライアントがシステムのインターフェースを通じて通信を処理できるようにするものです。サーバーを購入したことにも、すべての宛先がリモートプロキシを経由することにもなりません。どの通信を直接接続・プロキシ・遮断するかは、クライアントのアプリ選択やルーティング設定によって決まります。
5. サブスクリプションURL・共有リンク・Base64の違いは?
文字列の長さではなく、用途で見分けます。https://で始まるURLは、サブスクリプションの場合も通常のWebページの場合もあります。vmess://やvless://は通常、単一ノードの共有設定を示します。インポート先を間違えると、「形式に対応していません」と表示されたり、1件だけしか登録されなかったりします。
- サブスクリプションURL:サブスクリプショングループにURLを保存し、クライアントからアクセスして応答を解析します。次回以降の更新でサーバーの変更を反映できます。
- 個別の共有リンク:コピーしたリンクは、「クリップボードからインポート」などのメニューから取り込みます。通常、サブスクリプショングループのような自動更新機能はありません。
- Base64形式のサブスクリプション内容:複数の共有リンクをまとめたテキストをエンコードした形式が一般的です。Base64はエンコード方式であり、暗号化でもプロキシプロトコルでもありません。
- JSON設定ファイル:クライアントのカスタム設定メニューとコアの構文に合わせる必要があります。サブスクリプションURLとしてそのまま使うことはできません。
設定の提供元が「サブスクリプションに対応」と案内していても、出力形式が使用するクライアントに対応しているか確認してください。出所が不明なオンライン変換サービスに認証情報を送信しないでください。
6. VMess・VLESS・REALITYの設定は手入力が必要?
まずはサブスクリプションから取得したパラメーターをそのまま使ってください。VMessとVLESSはプロトコル名、WebSocketはトランスポート方式です。TLSとREALITYは接続のセキュリティ層に関わるため、互いに置き換えることはできません。以下の項目は設定の確認用であり、接続可能なノードの例や共通の固定値ではありません。
VLESS + REALITY
- プロトコル
- VLESS
- セキュリティ層
- REALITY
- サーバー名
- サーバーから指定されたSNIと一致していることを確認
- 認証パラメーター
- UUID・公開鍵・shortIdを確認
この組み合わせに対応したXray設定を使います。flowを入力するかどうかや具体的な値は、サーバーの指定に従ってください。
VMess + WebSocket + TLS
- プロトコル
- VMess
- トランスポート
- WebSocket
- セキュリティ層
- TLS
- リクエストのパラメーター
- Host・パス・SNIを確認
WebSocketのパスを任意にルートパスへ変更しないでください。サーバーアドレス・Host・SNIが同じとは限りません。
ノード名にプロトコル名が書かれていても、設定内のすべての項目が正しいとは限りません。提供元が新しいパラメーターを明示した場合に限り、手動で変更してください。一度に変更するのは一項目だけにし、元の設定も戻せるように保存しておきましょう。
7. システムプロキシとTUNモード、どちらを選ぶ?
デスクトップでは、まずシステムプロキシで基本的な接続を確認しましょう。システムプロキシを設定すると、システム設定に従うアプリからの通信がローカルプロキシポートに送られますが、設定を無視するアプリもあります。TUNは仮想ネットワークインターフェースで通信を処理するため、一般により幅広いアプリを対象にできます。その一方、権限やルーティング、DNSとの連携に注意が必要です。
- ブラウザーで使い始める:v2rayNの「システムプロキシ」メニューまたはステータスバーで「システムプロキシを自動設定」を選び、テストページにアクセスします。ノードを選んだだけでアプリの通信をプロキシに通していない場合、ブラウザーは直接接続することがあります。
- システム設定に従わないアプリ:まず、アプリにHTTPまたはSOCKSプロキシを個別設定する機能があるか確認してください。必要な場合は、そのうえでTUNの利用を検討します。
- TUNを有効にする:クライアントの案内に従って必要な権限を許可し、他のVPNや仮想ネットワークアダプター、既存のルートとの競合がないか確認してください。初めてトラブルシューティングする際は、複数のモードを同時に変更しないでください。
- Androidで接続する:システムVPNサービスと、デスクトップの「システムプロキシ」は別の設定です。AndroidのWi-Fiプロキシ欄にデスクトップ側のポートを重ねて入力する必要はありません。
TUNを有効にしても、すべての通信がプロキシ経由になるとは限りません。ルーティングの振り分けによって、指定したドメインやアドレスを直接接続できます。同様に、システムプロキシを設定しても、ブラウザーのすべての接続が必ず同じ経路を通るわけではありません。
8. 10808・10809・443は何のポート?
ローカルの待ち受けポートとリモートサーバーのポートは別のものです。以下は説明用によく使われる値で、すべてのバージョンの初期設定とは限りません。新しいバージョンでは複数のプロトコルをまとめた待ち受けポートを使う場合があります。実際の値は、v2rayNの「設定」→「パラメーター設定」でローカルの待ち受け設定を確認するか、実行ログを参照してください。
たとえば、ローカルHTTPの待ち受けポートが10809に設定されている場合、手動プロキシに対応したソフトにはアドレス127.0.0.1、ポート10809を入力します。リモートサーバーのアドレスにローカルのループバックアドレスを指定しないでください。また、例の値に合わせるためにサブスクリプション内のリモートポートを変更しないでください。
- 「address already in use」と表示された場合は、待ち受けアドレスまたはポートが使用中です。クライアントを二重に起動していないか、別のプログラムが同じポートを使っていないか確認してください。
- ローカルでのみ使う場合は、ループバックアドレスで待ち受けてください。接続の問題を解決するために、安易にLANからのアクセスを許可しないでください。
- HTTPとSOCKSは別々のプロキシ接続方式です。HTTPだけに対応したアプリに、専用のSOCKSポートをHTTPポートとして入力することはできません。
9. 接続後、通信が本当にプロキシ経由か確認するには?
「稼働中」はローカルサービスが起動したことを示すだけです。遅延テストに成功しても、特定のテスト経路から応答があったことしか確認できません。アプリの通信が取り込まれているか、ルーティングが適用されているか、リモートにアクセスできるかを合わせて確認しましょう。プロキシ経由になることが想定され、かつ適法にアクセスできるHTTPSページを選んでテストしてください。
-
ローカルの稼働状態を確認
クライアントのログで起動失敗、設定の解析エラー、ポート使用中の警告がないか確認します。Androidでは、システムVPN接続が継続していることも確認してください。
-
新しいリクエストを送信
デスクトップでは、システムプロキシが有効になっていることを確認してから、新しいブラウザーウィンドウで目的のページを開きます。すでに開いているタブが表示できるかだけで判断しないでください。
-
ルーティングを確認
ログで接続を記録できる場合は、宛先ドメインとアウトバウンドの識別情報を確認し、direct接続とプロキシ経由を見分けます。ログレベルでリクエストが記録されない設定なら、記録がないことだけを理由に接続失敗と判断しないでください。
-
別の方法でも確認
プロキシ経由になるはずの別の宛先でもテストし、必要に応じて接続前後の送信元IPアドレスを比較します。ルールで通信を振り分けている場合、直接接続するサイトの送信元IPアドレスが変わらなくても正常なことがあります。
ブラウザーでアクセスでき、想定したルーティングが適用され、送信元IPアドレスも設定どおりであれば、テストした通信が想定どおり処理されたと判断できます。特定のWebページが開かない原因は、サイト側の障害かもしれません。すぐにクライアントを再インストールしないでください。
10. サブスクリプションはあるのにネットに接続できないときの確認項目
「サブスクリプションの応答内容 → ローカルサービス → アプリの通信設定 → リモート接続」の順に確認します。エラーメッセージを記録し、一度に変更する設定は一つだけにして、同じアクセス先で再テストしてください。設定の取得段階と、実際に通信を転送する段階のどちらに問題があるか切り分けられます。
サブスクリプションの更新がタイムアウトする場合、先にプロキシを有効にする?
必ずしも必要ではありません。まずプロキシを経由しない更新を試します。サブスクリプションURLに直接接続できず、利用可能なノードがすでにある場合は、プロキシ経由での更新を試してください。利用できるノードが一つもない状態では、更新方法を切り替えてもプロキシ接続は確立できません。提供元にURLへアクセスできるか確認してください。
ノードは表示されるのにWebページが開かない場合は?
まず、そのノードが有効なサーバーに設定されていることを確認し、次にシステムプロキシまたはAndroidのVPN接続を確認します。そのうえでログに接続タイムアウト、接続拒否、名前解決失敗がないか調べ、ルーティングルールによって通信が誤ったアウトバウンドに送られていないか確認してください。
証明書エラーやハンドシェイクエラーが出たら、検証を無効にしてもいい?
まずシステムの日付と時刻を合わせ、TLSのサーバー名、トランスポート方式、サブスクリプションのパラメーターを確認してください。証明書検証のスキップを常用の解決策にしないでください。設定がサーバーと一致しない場合は、設定を更新するか提供元に問い合わせてください。
特定のアプリだけ失敗する場合も、DNSを変更すべき?
まず、そのアプリがシステムプロキシに従うか、Androidのアプリ別振り分けから除外されていないか、独自のプロキシ設定を使っていないか確認してください。ログから名前解決の失敗が疑われる場合に限り、DNSを一つずつ確認します。ノード・DNS・ルーティングを同時に変更すると、原因の特定が難しくなります。
問い合わせの際は、OS、クライアントのバージョン、現在のコア、接続モード、エラー発生時刻、個人情報を伏せたログの抜粋を添えてください。サブスクリプションのトークン、UUID、サーバーの認証情報は削除します。ルーティングの振り分けやDNSの設定階層について詳しく知りたい場合は応用設定を、基本用語は用語集をご覧ください。