V2Ray初心者向けFAQ10選|コア・クライアント・サブスクリプション・接続トラブルを解説

コアとクライアントの違い、クライアント3種の選び方、サブスクリプションの取り込み、グローバルとルーティングの違い、接続できないときの確認点を解説します。

この記事のポイント

まずクライアント、コア、サーバーの役割を整理し、サブスクリプションの取り込みからWebページへの接続確認まで進めましょう。v2rayN、v2rayNG、v2flyNGを初めて使う方向けに、サブスクリプションの取得、ローカルでの通信処理、リモート接続、ルール設定のどこで問題が起きているかを切り分ける方法を紹介します。何度も再インストールして試す必要はありません。PCの操作手順はv2rayNの一般的な中国語版UIを例にしています。メニュー名はバージョンによって異なる場合があります。

1. V2Ray、Xray、クライアントの違いは?

設定画面と、実際に通信を処理するプログラムは分けて考えましょう。V2Rayはプロキシツールのプロジェクトで、コアプログラムがローカルポートの待ち受け、ルーティングルールの適用、リモートサーバーへの接続を担います。Xrayは関連する別の技術エコシステムに属するコアです。対応プロトコルや設定の詳細は完全には同じではないため、名前だけで互換性を判断できません。

v2rayNは複数のコアを管理できるPC向けクライアントです。v2rayNGはXrayコアを採用したAndroid向けクライアント、v2flyNGはv2flyコアを採用したAndroid向けクライアントです。「この設定項目はサポートされていません」と表示された場合は、クライアント名だけでなく、実際に動作しているコアとバージョンを確認してください。

2. v2rayN・v2rayNG・v2flyNGの選び方

まずOSに合わせて候補を絞り、次にノードの要件との互換性を確認します。PCではv2rayN、Androidではv2rayNGまたはv2flyNGを選びます。PC向け手順の「システムプロキシを設定」をAndroidにそのまま当てはめないでください。Androidでは通常、システムVPNの許可を使って端末の通信を処理するため、仕組みが異なります。

クライアント対応プラットフォーム最初に確認すること
v2rayNWindows、macOS、LinuxOSとCPUアーキテクチャに合ったものを選び、実際に使うコアを確認します。
v2rayNGAndroidノードのプロトコル、トランスポート、セキュリティ設定がXrayでサポートされているか確認します。
v2flyNGAndroid設定がv2flyでサポートされているか確認し、他のコア専用のパラメーターをそのまま流用しないでください。

選び方:設定全体に合うクライアントを選ぶ

プロトコル、トランスポート方式、TLS設定を確認してから、それらの項目に対応するクライアントとコアを選びます。「VLESS」や「VMess」という名前だけでは、設定全体の互換性は判断できません。

3. サブスクリプションURLと個別ノードのリンクの違い

サブスクリプションURLは通常、クライアントがアクセスしてノード一覧を取得するためのURLです。一方、個別ノードの共有リンクには、1つのノードの接続情報が含まれています。サブスクリプションの更新に成功しても、内容を取得・解析できたことを示すだけです。一覧内のすべてのサーバーが稼働中であることや、アカウントの利用枠が残っていることまでは保証されません。

サブスクリプションURLは認証情報と同じように管理してください。URL内のトークン、ノードのUUID、パスワードが写ったスクリーンショットを公開してはいけません。PCやスマートフォンを替える場合も、利便性のためにURL全体を公開の掲示板などに貼らないでください。漏えいした場合は、提供元の管理画面から再発行してください。

4. v2rayNでサブスクリプションを追加・更新する

現在使えている設定は残したまま、サブスクリプション用のグループを新しく作ると、更新元を分けて管理できます。以下ではv2rayNで一般的なメニュー名を使います。バージョンによってボタン表示になっている場合も、「サブスクリプショングループ設定」を開いてください。サブスクリプションURLを個別ノードとして読み込まないよう注意しましょう。

  1. グループを作成

    「サブスクリプショングループ」→「サブスクリプショングループ設定」を開き、新しいグループを追加します。識別しやすいメモとサブスクリプションURL全体を入力してください。URLの前後に空白や改行が入っていないか確認します。

  2. 更新を実行

    保存後、「サブスクリプショングループ」メニューから「すべてのサブスクリプションを更新(プロキシを使用しない)」を選びます。まずは直接接続で取得できるか確認してください。利用可能なプロキシがない状態で、プロキシ経由の更新に頼らないようにしましょう。

  3. 結果を確認

    更新メッセージと、グループ内のサーバー数を確認します。ノードが0件の場合は、クライアントをすぐ削除するのではなく、URLがログインページや期限切れの案内、互換性のないデータを返していないか確認してください。

  4. サーバーを選択

    サーバー一覧から1つ選び、右クリックメニューの「アクティブサーバーに設定」で切り替えます。コアの起動を確認してからシステムプロキシを有効にし、Webページにアクセスできるか試します。

利用可能なプロキシがあり、サブスクリプションURLに直接接続できない場合に限り、「プロキシ経由」での更新を試してください。自動更新の間隔は現在の設定画面の単位を確認し、分と時間を混同しないようにしましょう。更新頻度を上げても、サーバーの品質が改善するわけではありません。

5. VMess・VLESS・TLSは手動で設定する必要がある?

手入力によるミスを減らすため、提供元が作成した共有リンクまたはサブスクリプションを使いましょう。VMessとVLESSはプロトコル名、TLSは通信のセキュリティ層です。トランスポート方式は別の設定項目です。これらはサーバー側の設定と一致させる必要があり、単独で「速度を上げる」ための項目ではありません。

たとえばサーバー側でWebSocketとTLSが必要な場合、クライアントにアドレスとUUIDだけ入力しても接続できないことがあります。新しい設定項目が見つかったら、まずコアの対応状況を確認し、提供元に問い合わせてください。他のガイドの設定一式を既存のノードに上書きしないようにしましょう。

6. システムプロキシ・TUN・ローカルポートの違い

システムプロキシを使うと、OSのプロキシ設定に従うアプリがローカルの待ち受けポートにリクエストを送ります。TUNは仮想ネットワークインターフェースを通じて通信を処理するため、対象範囲や必要な権限が異なります。まずはシステムプロキシでブラウザーの接続を確認し、その後にTUNが必要か検討すると、トラブル時の確認項目を減らせます。

127.0.0.1
端末内のループバックアドレス。リモートノードではありません
10808
ローカル待ち受けポートの例。実際の設定を確認してください
443
TLSでよく使われるポート。固定値ではありません

v2rayNの「設定」→「パラメーター設定」で、ローカルの待ち受けポートと関連項目を確認してください。HTTP、SOCKS、混合リスナーの構成はバージョンによって異なります。すべてのポートが同じ種類のプロキシプロトコルを受け付けるとは限りません。上記の数値はアドレスの役割を区別するための例であり、すべての環境での初期設定ではありません。

7. グローバルとルーティングの役割

システムプロキシはアプリの通信をクライアントに渡すかどうかを決め、ルーティングルールは受け取った通信の送信先を決めます。これは別の段階です。「グローバル」は通常、クライアントが受け取った通信をプロキシ経由で送る設定を指します。すべてのアプリの通信が対象になったり、TUNが有効になったりするという意味ではありません。

V2Ray/Xrayの通常のルーティングルールは上から順に評価され、最初に一致したルールで送信先が決まります。ドメインルールとIPルールでは必要な情報が異なり、ドメインの名前解決方法も判定結果に影響します。使い始めのうちはクライアントのルーティングプリセットを利用してください。特定のサイトだけ接続できない場合は、ログを確認して該当ルールを調整します。すべての接続先を同じ送信先に固定するのは避けましょう。ルールの詳細は応用ガイドをご覧ください。

8. 接続済みなのにWebページが開かないのはなぜ?

AndroidのステータスバーにVPNアイコンが表示されても、ローカルのVPNサービスが確立したことを示すだけです。PCでコアが動作している場合も、ローカルのプロセスが起動していることしか確認できません。いずれも、リモート認証、DNS名前解決、Webページへのリクエストが完了した証拠にはなりません。接続経路を手元から順に確認するほうが、接続ボタンを何度も押すより効果的です。

  1. ローカル環境を確認:コアの起動に失敗していないか、待ち受けポートが使用中でないか、ブラウザーに個別のプロキシ拡張機能や手動設定がないか確認します。
  2. 通信の取り込みを確認:PCでは「システムプロキシを設定」が有効か確認します。Androidでは、対象アプリがアプリごとのプロキシ設定から除外されていないか確認してください。
  3. リモート接続を確認:同じサブスクリプション内の別サーバーに切り替え、アカウントの有効期限、通信量、ノード設定を確認します。
  4. リクエストを確認:異なる2つのWebサイトにアクセスして試します。1つだけ失敗する場合は、そのサイトのDNS、ルーティング、サーバー側の制限を重点的に確認してください。

遅延テストが一度成功しても、Webページにアクセスできるとは限りません。TCP接続、プロキシ経由のリクエスト、実際のページ読み込みでは、確認している処理が異なります。「どのテストが成功し、どれが失敗したか」を記録すると、「接続できない」とだけ報告するより原因を特定しやすくなります。

9. ログによく出るエラーの読み方

まず問題が起きた時刻を記録し、もう一度再現して前後のログを確認します。エラーに表示されたアドレスは、ローカルの待ち受け先、DNSサーバー、リモートノード、最終的な接続先のいずれかです。前後の内容から判断してください。以下はよくあるエラーの一部で、OSやコアのバージョンによって表示内容が完全には一致しない場合があります。

エラー:address already in use

原因:待ち受けに使うアドレスとポートが、別のプロセスに使用されています。対処:クライアントの重複起動や競合するプログラムを終了してください。必要に応じてローカルポートを変更し、アプリに手動設定したプロキシのアドレスも合わせて更新します。

エラー:connection refused

原因:接続先のポートから拒否されています。サービスが待ち受けていないか、アドレスやポートが間違っている可能性があります。対処:ログに表示された接続先が端末内かリモートかを確認し、該当するサービスとポートの状態を調べてください。

エラー:i/o timeout

原因:ネットワーク処理がタイムアウトしました。名前解決、接続、応答待ちのいずれかで発生している可能性があります。対処:前後のログから発生段階を判断し、ネットワークとノードをそれぞれ変更して比較します。一度に変更する条件は1つにしてください。

エラー:x509: certificate has expired or is not yet valid

原因:証明書の有効期間を確認できませんでした。端末の時刻が間違っているか、リモートの証明書が期限切れの可能性があります。対処:まずシステムの日付と時刻を同期してください。時刻が正しいのにエラーが続く場合は、提供元に証明書の修正を依頼します。

ログを共有する前に、サブスクリプションのトークン、UUID、パスワードなどの認証情報を隠してください。エラーの原文、発生時刻、クライアントとコアのバージョン、操作手順を残せば十分です。最後の「失敗」という一文だけを切り取ったり、認証情報を含む設定ファイル全体を公開したりしないでください。

10. 初期設定後に残しておきたい設定

動作確認済みの基本設定を残しておきましょう。アクティブサーバーを1つ、通信を処理する方法を1つ、ルーティングプリセットを1つにします。その後は設定を一度に1つだけ変更し、問題が起きたら元に戻してください。新しいルール、DNS設定、ノード自体のどれが原因か切り分けやすくなり、使えていた設定が再現できない状態になるのを防げます。

画面を消すと接続が切れる場合、サブスクリプションを再登録する必要はある?

まずAndroidの「設定」→「アプリ」→対象のクライアント→「バッテリー」でバックグラウンド制限を確認します。メニュー名はメーカーによって異なります。必要なバックグラウンド動作を許可し、アプリごとのプロキシ設定とシステムVPNも確認してください。サブスクリプションはすぐに削除しないでください。

PCを再起動したら、TUNも有効にする必要がある?

起動時に接続するためだけにTUNを有効にする必要はありません。まずv2rayNを起動し、アクティブサーバーとコアの動作状態を確認してから、以前使えていたシステムプロキシの設定に戻します。システムプロキシに従わないアプリの通信も処理する必要がある場合に、TUNの利用を別途検討してください。

更新後に動かなくなった場合、設定をそのまま上書きしてよい?

まずクライアントとコアのバージョンを記録し、現在の設定をバックアップしてください。新しいバージョンの設定と照らし合わせて、待ち受けポート、アクティブサーバー、ルーティングプリセットを確認します。バックアップを取らずにデータを消したり、異なるバージョンのコアファイルを混在させたりしないでください。

v2rayN をダウンロードプラットフォームに合ったクライアントを選択