V2Rayを初めて使うとき、多くの人がつまずくのは特定の設定項目が複雑だからではなく、クライアント、コア、サブスクリプション、ノード、システムプロキシという概念が一度に登場するためです。ここでは実際の操作順に沿って10の疑問に答えます。v2rayN 7.xとv2rayNG 1.10.xの一般的な画面を例にしています。マイナーアップデートでボタンの位置が変わる場合はありますが、判断方法と設定の関係は変わりません。
サブスクリプションURLを入手したばかりで、初回接続がまだ完了していない方に適しています。読み終えるころには、クライアントの選択、サブスクリプションと単一ノードURLの見分け方、更新と接続の手順に加え、システムプロキシ、グローバルプロキシ、ルーティング、速度測定、設定のバックアップの違いも理解できます。
1. クライアントとコアの選び方
質問1: v2rayN、v2rayNG、v2flyNGは誰に向いている?
クライアントとは、ノード管理、サブスクリプション更新、ルーティング切り替え、画面操作を担うプログラムです。コアとは、VMessやVLESSなどのプロトコルを実際に解析し、接続を確立するネットワークコンポーネントを指します。両者は同じものではありません。クライアントが操作窓口を提供し、コアが接続を実行します。
Windowsのデスクトップ環境では、まずv2rayNを使うのがおすすめです。システムプロキシ、ルールルーティング、サブスクリプショングループ、ログ確認が必要なユーザーに適しています。Androidではv2rayNGまたはv2flyNGを選べます。v2rayNGはXrayコアを使用するため、VLESS、REALITY、XTLS Visionのノードは通常こちらへのインポートが向いています。v2flyNGはv2flyコアを使用し、VMess、VLESS、標準的なV2Ray設定をすでに利用していて、v2fly系の構成を維持したいユーザーに適しています。
おすすめ構成: デスクトップとAndroidで同じサブスクリプションを使う
デスクトップ版(v2rayN)
- v2rayN 7.xの一般的な画面を使用
- 「設定」→「パラメータ設定」→「Core タイプ」でコアを確認
- システムプロキシとルーティングルールで通信を制御
Android版(v2rayNGまたはv2flyNG)
- 同じ有効なサブスクリプションURLをインポート
- 接続前に具体的なノードを1つ選択
- 必要に応じてアプリごとのプロキシを有効化
サブスクリプションの内容は提供元によって決まります。両端で同じサブスクリプションを使うと、ノード名は通常同じになりますが、ローカルのルーティングと対象アプリの範囲はそれぞれ設定する必要があります。
質問2: V2Ray、Xray、VMess、VLESSは同じもの?
いいえ。V2RayとXrayはコアの実装および設定体系、VMessとVLESSは送信接続に使うプロトコルと考えると分かりやすいでしょう。ノード情報にはTCP、WebSocket、gRPC、TLS、REALITYなどのトランスポート層とセキュリティ層も含まれます。プロトコルが同じでも、ノードのパラメータをそのまま相互利用できるとは限りません。
VLESSノードをインポートするときは、少なくともサーバーアドレス、ポート、ユーザーID、トランスポート方式、セキュリティタイプを確認します。REALITYノードには通常、サーバー名、公開鍵、ショートID、フィンガープリントも含まれます。項目が1つでも欠けていると、クライアント上ではエントリが作成されても、接続ログにハンドシェイク失敗、接続リセット、タイムアウトなどが表示されることがあります。
2. サブスクリプションURLの入手先と正しいインポート方法
質問3: サブスクリプションとは? クライアントが自動でノードを用意する?
サブスクリプションとは、通常、ノードサービスの管理画面で発行されるURLです。クライアントがそのURLにアクセスすると、複数のノード設定を取得します。v2rayN、v2rayNG、v2flyNGはいずれも接続ツールであり、遠隔サーバーを自動生成することも、インストールしただけで利用可能なノードが表示されることもありません。
サブスクリプションURLは、実際に利用しているサービスの管理画面から取得してください。コピーするときは、プロトコルヘッダー、パス、クエリパラメータを含む完全なURLを保持します。チャットアプリによる自動改行、末尾の余分な空白、疑問符より前までしかコピーしない操作は、いずれも更新失敗の原因になります。管理画面のURL、決済ページのURL、単一サーバーのアドレスをサブスクリプションと取り違えないでください。
-
URLを完全な状態でコピー
サブスクリプション管理画面のコピー按钮を使い、URLの先頭と末尾に空白がなく、2行に分割されていないことを確認します。
-
サブスクリプショングループを新規作成
v2rayNのメイン画面で「サブスクリプショングループ」→「サブスクリプショングループ設定」→「追加」を開き、別名を入力してサブスクリプションURLを貼り付けます。
-
ノードを更新
保存後、「サブスクリプショングループ」→「すべてのサブスクリプションを更新(プロキシを使用しない)」を開きます。ローカルネットワークからサブスクリプションURLへ直接接続できない場合は、プロキシ経由の更新に切り替えます。
-
サーバーを選択
ノード一覧で対象エントリをダブルクリックするか、右クリックして「アクティブサーバーに設定」を選び、アクティブ行が変わったことを確認します。
-
コアの種類を確認
変更が必要な場合は「設定」→「パラメータ設定」→「Core タイプ」に進み、ノードのプロトコルに対応する項目を解析できるコアを選択します。
質問4: Base64サブスクリプション、vmess://、vless://の違いは?
vmess://とvless://は通常、単一ノードの共有リンクです。1回のインポートで追加されるノードは1つです。一方、サブスクリプションURLは更新可能な入口で、返される内容はBase64でエンコードされている場合も、構造化形式の場合もあります。Base64は単なるエンコード方式であり、プロキシプロトコルではなく、接続品質が高いことを示すものでもありません。
判断するときはURLの長さだけを見ないでください。単一ノードのリンクは通常、vmess://またはvless://で始まります。サブスクリプションURLはhttps://が一般的で、サブスクリプション管理画面に入力します。サブスクリプションURLを「クリップボードから共有リンクをインポート」に貼り付けると、クライアントで認識できないと表示されることがあります。逆に単一ノードのリンクをサブスクリプショングループに入れても、正常に更新できるノード一覧にはなりません。
サブスクリプションURL → サブスクリプショングループ → サブスクリプションを更新 → 複数のノードを生成
vless:// → クリップボードからインポート → 1つのVLESSノードを生成
vmess:// → クリップボードからインポート → 1つのVMessノードを生成
3. 接続後もプロキシモードの設定が必要な理由
質問5: 接続をクリックしたのに、なぜウェブページが通常のネットワーク経由のまま?
コアの起動に成功しても、それはローカルプロキシポートが待ち受けを開始したことを示すだけで、すべてのアプリが自動的にそのポートを使うわけではありません。v2rayNでは、システムトレイメニューのシステムプロキシ状態も確認します。通常は「システムプロキシを自動設定」を選び、システムプロキシ設定に従うブラウザーやデスクトップアプリの通信をローカルの待受ポートへ送ります。
ローカルポートはクライアントの設定によって決まります。一般的なSOCKS待受ポートは10808、HTTP待受ポートは10809ですが、バージョンやユーザー設定によって異なる数値になる場合があります。ブラウザーやアプリを手動設定するときは、プロトコルの種類とポートを正しく対応させてください。SOCKSポートをHTTPプロキシ専用の項目に入力することはできません。
質問6: グローバルプロキシとルーティングの違いは?
グローバルプロキシとは、通常、クライアントに入った通信を可能な限り現在のプロキシ経由で送信するモードです。初回確認に便利で、グローバルモードではアクセスできるのにルールモードではできない場合、問題はノードのハンドシェイクよりもルーティングルールにある可能性が高いでしょう。グローバルモードでも、OS上のすべてのプロセスが必ずプロキシを通るわけではありません。システムプロキシを参照しないプログラムは個別設定が必要です。
ルーティングとは、コアがドメイン、IP、ポート、プロセスのルールに応じて、直接接続、プロキシ、ブロックのいずれかを決める仕組みです。たとえば、中国本土のサイトは直接接続し、対象サイトはプロキシ経由にし、LANアドレスは直接接続のままにします。初心者はまずグローバルモードで接続を確認し、その後ルールモードへ切り替えると、ノードパラメータとルーティング判定を同時に調べずに済みます。
- 初回テスト: ノードを選択し、コアを起動してシステムプロキシを有効にしたうえで、グローバルモードで基本接続を確認します。
- 日常利用: ルールモードに戻し、ルーティング設定に直接接続、プロキシ、LANの例外が含まれているか確認します。
- 結果の確認: IP確認ページにアクセスし、切り替え前後の結果を比較します。同時に、直接接続すべきサイトも1つテストします。
4. 速度測定・遅延・ノードの可用性を判断する方法
質問7: 遅延が低いのに、なぜ実際のウェブ表示は遅い?
遅延測定、実接続テスト、ダウンロード速度の測定は同じものではありません。サーバーアドレスへの到達時間だけを測定しても、プロトコルのハンドシェイク、TLSやREALITYのやり取り、遠隔出口の品質、対象サイトの応答までは確認できません。45msと表示されたエントリでも、ハンドシェイクに失敗すればまったく使えないことがあります。一方、120msのノードのほうが実際のページ読み込みは安定する場合もあります。
より確実なのは、クライアントからノード経由で実際のリクエストを送る実接続テストです。テスト後も、ノードに接続して対象ページを開き、2〜3回更新したうえで、コアのログにタイムアウトや再接続が継続していないか手動で確認します。ノードは、ハンドシェイクの成功、最初の応答までの時間、持続速度、パケットロスを総合的に見て選びます。
質問8: サブスクリプションの更新は成功したのに、なぜすべてのノードがタイムアウトする?
「更新成功」は、クライアントがサブスクリプションの内容を取得できたことを示すだけで、すべての遠隔ノードが現在利用できることを保証しません。全ノードがタイムアウトする場合は、まず端末のシステム時刻を確認します。TLS系の接続は正確な時刻に依存するため、ずれが大きいと証明書やハンドシェイクの検証に失敗することがあります。続いて、ローカルファイアウォール、コアの起動状態、ポートを別のプロセスが使用していないかを確認します。
サブスクリプションの更新がタイムアウトする?
まずURLが完全か確認します。利用可能なノードがある場合は、v2rayNのサブスクリプション更新メニューで「プロキシ経由で更新」に切り替えます。利用可能なノードがない場合は、ネットワークを変更してから、プロキシを使わない更新を再試行します。
接続は成功するのにウェブページが開けない?
システムプロキシが有効になっているか確認し、「設定」→「パラメータ設定」でローカル待受ポートを確認します。ブラウザーに別の手動プロキシ設定が残っていないかも確認してください。
1つのノードだけが繰り返しタイムアウトする?
サブスクリプションを再更新し、そのノードのアドレス、ポート、トランスポート方式、セキュリティ項目を比較します。他のノードが正常なら、まずその単一ノードの状態またはパラメータ変更を疑います。
Androidでは接続できるのに、デスクトップでは接続できない?
両端のノード更新時刻とコアの種類を比較します。デスクトップでは「設定」→「パラメータ設定」→「Core タイプ」に進み、ログに未知の項目やハンドシェイクエラーがないか確認します。
速度測定の結果がすべて失敗になる?
まずノードの1つに直接接続して、ウェブページを開けるか確認します。ログにローカルポートの使用中と表示された場合は、重複起動しているクライアントを終了するか、待受ポートを未使用の番号に変更してコアを再起動します。
あるノードがWindowsとAndroidの両方で失敗し、同じサブスクリプションの他のノードが正常なら、その単一ノードが無効になっている可能性が高いでしょう。すべてのノードが1台の端末だけで失敗する場合は、サブスクリプションを何度も削除するのではなく、その端末の時刻、ネットワーク権限、ローカルポート、コアの種類、プロキシ状態を重点的に確認します。
5. クライアントの更新、設定保存、トラブル復旧
質問9: クライアントを更新すると、サブスクリプションやルーティング設定は消える?
設定が保持されるかどうかは、更新方法と設定ディレクトリによって決まります。v2rayNのノード、サブスクリプショングループ、ルーティング、画面設定はローカルのデータファイルに保存されます。新しいバージョンをまったく新しいディレクトリに解凍し、データを移行せずに新しいプログラムだけを実行すれば、新しいディレクトリに以前の設定がないのは当然です。上書き更新の前には、実行中のクライアントを終了し、元のディレクトリをコピーして保存してください。
より安全な手順は、現在のバージョン、コアの種類、ローカルポート、ルーティングモードを記録してから、プログラムのデータディレクトリ全体をバックアップすることです。更新後はまずサブスクリプショングループとアクティブサーバーを確認し、すぐに旧ディレクトリを削除しないでください。新しいバージョンでサブスクリプションを更新でき、コアを起動でき、ルーティングを読み込めることを確認してから、旧ファイルを整理します。
- クライアントを終了し、タスクトレイでメインプログラムが終了していることを確認します。
- 元のプログラムディレクトリ、またはクライアントからエクスポートした設定バックアップをコピーします。
- SOCKS、HTTPの待受ポートと、現在のシステムプロキシモードを記録します。
- 新しいバージョンを起動し、サブスクリプショングループ、ルーティングルール、Core タイプを確認します。
- サブスクリプションを1回更新し、ノードに接続してログを確認してから、ウェブページへのアクセスをテストします。
質問10: 問題が起きたとき、最も効果的な確認順序は?
まず、問題がどの層で起きているかを切り分けます。第1層はサブスクリプションで、更新できるか、ノードを取得できるかを確認します。第2層は設定で、アドレス、ポート、プロトコル、トランスポート、セキュリティ項目がそろっているかを確認します。第3層はコアで、起動できるか、ローカルポートが待ち受けているかを確認します。第4層はシステムプロキシとルーティングで、アプリの通信がクライアントに入っているかを確認します。第5層になって初めて、遠隔ノードと対象ネットワークの状態を調べます。
接続ボタンを何度もクリックするより、ログのほうが多くの情報を与えてくれます。「ポートはすでに使用中」と表示されたら、まずローカルの待受を確認します。「ホストを解決できない」と表示されたら、アドレスとDNSを確認します。ハンドシェイクに失敗したら、システム時刻、セキュリティタイプ、関連項目を確認します。遠隔アドレスへの接続が継続的にタイムアウトする場合に限り、他のノード、他のネットワーク、他の端末での結果を比較します。
subscription
まずサブスクリプション層を確認
URLが完全か、更新結果にノードが含まれているか、サブスクリプションが有効な状態かを確認します。
outbound
次にノード層を確認
サーバーアドレス、ポート、ユーザーID、トランスポート方式、セキュリティパラメータを1項目ずつ確認します。
inbound
ローカルの待受を確認
コアが起動していること、10808、10809、またはカスタムポートが他のプログラムに使用されていないことを確認します。
routing
最後にルーティングを確認
まずグローバルモードでノードを検証し、その後ルールモードに戻して対象ドメインがどのルールに一致したかを確認します。