この記事は、v2rayN、v2rayNG、v2flyNGを初めて使う方に適しています。読み終える頃には、クライアントの選択とサブスクリプションの追加を完了し、VMess、VLESS、システムプロキシ、ルールベースのルーティングの関係を理解できます。接続トラブルも、ネットワーク、時刻、サブスクリプション、ノード、パラメータ、ログの順に切り分けられます。
クライアントとプロトコルの選び方
質問1:Windows、macOS、Android、Linuxではどのクライアントを選ぶべき?
クライアントはノード名ではなく、まずプラットフォームで選びます。Windowsのデスクトップ環境では通常v2rayNを使用します。AndroidではXrayコアを搭載したv2rayNG、またはV2Flyコアを搭載したv2flyNGを選べます。macOSとLinuxはダウンロードセンターで現在提供されているデスクトップ版を確認し、ページに記載されたプラットフォームとアーキテクチャに合うバージョンを入手してください。
Androidユーザーで、サーバー側から特別な指定がない場合は、サブスクリプションに実際に含まれるプロトコルを基準に選びます。Xray関連の機能が必要ならv2rayNG、V2Flyコアが明記されている設定ならv2flyNGを選択します。クライアント名が違ってもサブスクリプションが必ず非互換とは限りません。最終的には、プロトコル、トランスポート、セキュリティレイヤー、コアのバージョンが対応しているかで決まります。
質問2:VMessとVLESSの違いは?初心者はどちらを選ぶべき?
VMessとVLESSは、どちらもProject Vエコシステムで広く使われているプロキシプロトコルです。VMessの設定には通常、ユーザーID、alterIdまたは互換用フィールド、セキュリティ設定、アドレス、ポートが含まれます。VLESSはよりシンプルな認証設計を採用し、ユーザーID、flow、トランスポート方式、セキュリティレイヤーのパラメータがよく使われます。クライアント上で自由に切り替えられる単純な設定ではありません。
最も確実なのは、サーバー側またはサブスクリプションで配信された内容に完全に従うことです。VMessが指定されていればVMessとして追加し、VLESSならVLESSのまま使用してください。プロトコル名だけを理由に手動で変更するのは避けましょう。アドレスとポートが同じでも、プロトコル、ユーザーID、トランスポート方式、TLS設定のいずれかが一致しなければ、接続はすぐに失敗する可能性があります。
| 比較項目 | VMess | VLESS |
|---|---|---|
| 認証情報 | ユーザーIDおよび関連する互換パラメータ | ユーザーID(一部の設定ではflowを使用) |
| 一般的なセキュリティレイヤー | TLSなど(サーバー側の指定による) | TLSまたはサーバー側が指定する方式 |
| 選択基準 | サブスクリプションまたはサーバー側で明示された内容 | サブスクリプションまたはサーバー側で明示された内容 |
| そのまま相互変更できるか | できない | できない |
質問3:XrayとV2Flyのコアは手動で切り替える必要がある?
多くの初心者は、初回利用時にコアを意識して切り替える必要はありません。v2rayNGはXrayコアで設定を処理し、v2flyNGはV2Flyコアで設定を処理します。v2rayNで利用できるコアやバージョン設定は、クライアントの画面表示を基準にしてください。追加後に起動、速度テスト、目的のサイトへのアクセスができるなら、「コアを変える」ためだけに設定を変更する必要はありません。
サブスクリプションURLの追加と更新方法
質問4:サブスクリプションURLはどこに貼り付ける?
サブスクリプションURLは通常のノードアドレスではなく、ブラウザのアドレスバーで長期間開いておくWebページでもありません。通常は完全なHTTPSアドレスで構成され、クライアントがそのURLにアクセスしてノード一覧を解析し、ローカルのサブスクリプショングループに保存します。コピー時は末尾の文字を欠落させないようにし、チャットアプリが付けた句点まで一緒に貼り付けないでください。
URLを確認
サブスクリプションURLを完全にコピーし、先頭のプロトコル、ドメイン、パス、クエリパラメータを確認します。前後に空白や日本語の句読点を付けないでください。
グループを追加
v2rayNのメイン画面で「サブスクリプショングループ」→「サブスクリプショングループ設定」→「追加」と進み、メモを入力してURLを貼り付けます。
サブスクリプションを更新
保存後、「サブスクリプショングループ」→「すべてのサブスクリプションを更新」と進み、ノード一覧がメイン画面に反映されるまで待ちます。
ノードを選択
まずノードを1つ選択して遅延テストを実行します。結果が正常であることを確認したら、そのノードをアクティブサーバーに設定します。
プロキシを起動
必要に応じてシステムプロキシまたは適切な動作モードを有効にし、ブラウザで目的のページが読み込めるかテストします。
Androidでは、バージョンによって入口の名称が変わることがありますが、操作の流れは同じです。サブスクリプショングループの管理を開き、「追加」をタップしてメモとURLを入力し、保存後に更新を実行します。QRコードを読み取る場合は、サブスクリプションURLか単一ノードのどちらが含まれているかを先に確認してください。前者ではノードグループが作成され、後者では通常1つの設定だけが追加されます。
質問5:サブスクリプションの更新に失敗したのに、古いノードが残っているのはなぜ?
更新に失敗した場合、クライアントは通常、直前に正常保存されたローカルデータを保持します。そのため、古いノードが表示されても今回のリクエストが成功したとは限りません。まず更新通知とログの時刻を確認し、サブスクリプションURLがまだ有効かを調べます。最初からグループ全体を削除するのは避けてください。比較に使える古い設定まで失われます。
よくある原因は、システム時刻のずれ、サブスクリプションURLのコピー漏れ、現在のネットワークからサブスクリプションのドメインにアクセスできないこと、URLの期限切れ、クライアントにバックグラウンド通信の権限がないことです。Androidでは、更新中にアプリがシステムによって一時停止されていないかも確認してください。特に画面ロック後やアプリ切り替え後は注意が必要です。
エラー:subscription update failed
原因と対処:クライアントがサブスクリプションの内容を取得できていません。元のURLで上書き保存し、システム時刻を合わせてから、ネットワークを切り替えて手動更新を1回実行してください。
エラー:unexpected EOF
原因と対処:内容の転送が完了する前に接続が切断されました。クライアントを前面に表示したまま安定したネットワークに切り替えて再試行し、サブスクリプションサービスが一時停止していないか確認してください。
プロキシモードとルーティング分岐の違い
質問6:システムプロキシを有効にすると、すべてのアプリがノードを経由する?
必ずしもそうではありません。システムプロキシはプロキシのアドレスとポートをOSの設定に書き込むだけで、システムプロキシに従うアプリだけが自動的に利用します。独自のネットワークスタックを使うアプリ、独自にプロキシを指定するアプリ、直接接続するアプリは、システムプロキシを迂回することがあります。AndroidのVPNサービスモードはより広い範囲をカバーしますが、アプリごとの設定、バイパスルール、システムの制限を受ける場合があります。
デスクトップ版では、ローカルの待受ポートがHTTP 10809、SOCKS 10808と表示されることがありますが、バージョンやユーザー設定によって異なる場合もあります。他のアプリにプロキシを手動入力するときは、クライアントに現在表示されている実際のポートを確認し、ネット上の例をそのまま写さないでください。ポートが他のプロセスに使用されていると、コアが起動できないこともあります。
質問7:グローバル、ルール、ダイレクトモードはどう選ぶ?
グローバルモードは通常、クライアントが取得した通信を優先的にプロキシ経由で送信します。ノードが動作するかを一時的に確認するのに適していますが、ローカルサービスやプロキシ不要のサイトまで迂回させることがあります。ルールモードは、ドメイン、IP、ルールセット、プロセスなどの条件に応じてプロキシ、ダイレクト、ブロックを決めるため、日常利用に適しています。ダイレクトモードは、プロキシの影響を停止し、ローカルネットワークと比較するときに使います。
初心者はまずグローバルモードで短時間のテストを行うとよいでしょう。グローバルでは使えるのにルールモードで使えない場合、原因は通常ノードではなく、ルーティングルールやDNSの振り分けにあります。確認後はルールモードに戻し、対象ドメインがどのルールにマッチしたかを調べます。ルールを変更するときは一度に1項目だけ変更し、DNS、ルーティング、プロトコルを同時に調整しないでください。
- グローバルモード:ノードとプロトコルパラメータが有効かを素早く確認するのに適しています。
- ルールモード:長時間の運用に適しており、ドメインとIPに基づいて通信の行き先を制御します。
- ダイレクトモード:ローカルネットワークと比較し、障害がプロキシ経路に起因するかを判断するのに適しています。
- ブロックルール:特定のリクエストを明示的に拒否するために使います。接続タイムアウトとは異なります。
ノード接続失敗の確認手順
質問8:ノードがタイムアウトするとき、最初に何を確認すべき?
最初から十数個のノードを次々に切り替えるのではなく、まず本体の基本ネットワークが正常か確認します。プロキシを無効にして安定した国内サイトにアクセスし、システムの日付、タイムゾーン、自動同期の状態を確認してください。TLS接続には正確な時刻が必要です。システム時刻のずれが大きいと、ノードのアドレスとポートが正しくてもハンドシェイクで失敗することがあります。
次に、サブスクリプションの状態と個別ノードのパラメータを確認します。アドレスに余分な空白がないこと、ポートが1~65535の範囲にあること、ユーザーID、プロトコル、トランスポート方式、Host、パス、SNI、セキュリティレイヤーがサーバー側と一致していることを確認してください。サブスクリプション由来の設定なら、まず再更新し、記憶だけで項目を手動変更しないでください。
3番目に、ネットワークやノードを切り替え、ログを確認します。家庭のネットワークでは失敗し、モバイルネットワークでは成功する場合、ローカルDNS、ルーティング、ネットワーク出口の違いが考えられます。すべてのネットワークで同じノードが失敗するなら、ノードの状態とパラメータを優先して確認します。遅延テストは1回につき少なくとも10~15秒は様子を見て、一時的な無応答を恒久的な無効と判断しないでください。
エラー:connection timed out
原因と対処:制限時間内に接続が完了しませんでした。まず本体のネットワークとシステム時刻を確認し、次にノードのアドレス、ポート、現在のネットワークからサーバーへ到達できるかを調べてください。
エラー:connection refused
原因と対処:対象アドレスには到達できますが、該当ポートが接続を拒否しています。ポートの入力ミスがないか確認し、サーバー側のプロセスがそのポートで待ち受けていることを確認してください。
エラー:invalid user
原因と対処:ユーザー認証パラメータが一致していません。サブスクリプションを再同期し、ユーザーID、プロトコル、サーバー側のユーザー設定を確認してください。
エラー:failed to find an available destination
原因と対処:アウトバウンドサーバーのアドレス解決に失敗しました。ノードのドメイン名に誤りがないか確認し、利用可能なDNSへ切り替えてからコアを再起動してください。
DNS、ログ、バックグラウンド動作の確認方法
質問9:接続できるのにWebページが開けない。DNSが原因?
可能性はありますが、まず「プロキシ接続が確立したか」と「対象ドメインを解決できたか」を分けて考えます。ノードの遅延が正常でも、プロキシサーバーまでの経路が使える可能性を示すだけで、対象ドメインが正しく解決できるとは限りません。IPアドレスへの直接アクセスは応答するのにドメイン名では失敗する場合、DNSの可能性が高くなります。すべてのリクエストがタイムアウトする場合は、ルーティング、アウトバウンド、プロトコルパラメータも確認してください。
切り分けでは、まずクライアントのDNS設定をデフォルトに戻し、出所の不明なサーバーを複数同時に設定しないようにします。次にコアを再起動し、システムのDNSキャッシュを消去してから、既知のアクセス可能なドメインでテストします。ルールモードでは、DNSリクエストがダイレクトかプロキシか、解決結果がルールによって意図したアウトバウンドへ送られているかも確認します。
基本確認の順序
1. プロキシを無効にし、本体のネットワークが利用できることを確認
2. プロキシを有効にし、コアが正常に起動したか確認
3. ローカルHTTPとSOCKSの待受ポートを確認
4. ノードの遅延と実際の接続をテスト
5. DNS解決とルールのマッチ記録を確認
6. 最初に表示された明確なエラーに基づき、1つのパラメータだけを変更
ログは障害が発生した時刻からさかのぼって確認し、最初のerrorまたはwarningを優先して探します。その後に大量に出るtimeoutは、最初のエラーによる連鎖的な結果にすぎない場合があります。v2rayNではメイン画面のログ領域でコアの出力を確認し、「設定」→「パラメータ設定」で関連する動作パラメータを確認できます。Androidクライアントでは、ログ画面から失敗した操作をもう一度実行すると、時刻とリクエストを対応させやすくなります。
質問10:Androidでバックグラウンド切断を防ぎつつ、安定性と電池消費を両立するには?
バックグラウンドで切断される原因は、通常、システムの電池設定、アプリのバックグラウンド権限、ネットワークの切り替え、メモリ回収などです。まずシステム設定でv2rayNGまたはv2flyNGのバックグラウンド動作を許可し、VPN接続が省電力機能によって制限されていないか確認します。Android端末によってメニュー名は異なりますが、一般的な手順は「設定」→「アプリ」→「v2rayNG」→「電池」→「バックグラウンドアクティビティを許可」です。
続いて、不要なバックグラウンド処理を減らします。サブスクリプションを数分おきに更新する必要はなく、ルールも変更がない限り何度も再読み込みしないでください。ブラウザ使用時だけ接続が必要なら必要なときに起動し、常時接続が必要ならシステムのステータスバーにVPNサービスの通知を残し、バックグラウンドプロセスを強制終了する端末のクリーナー機能は避けます。
バックグラウンド動作を許可
「設定」→「アプリ」→対象クライアント→「電池」と進み、バックグラウンドアクティビティを許可して過度な制限を解除します。
更新頻度を下げる
サブスクリプションの自動更新を数時間おきに設定し、ノードに変更がない場合は手動更新を利用します。
ネットワーク切替を確認
無線ネットワークとモバイルネットワークを切り替えた後に接続状態を確認し、必要ならサービスを一度停止して再起動します。
ログを残す
切断時刻、ネットワークの種類、最初のエラーを記録し、「開けない」という症状だけで原因を判断しないようにします。
初回設定が完了したら、動作確認済みのノードを1つ、比較用として残しておくことをおすすめします。問題が発生したときは、まずこのノードをテストし、サブスクリプション全体の変更なのか、現在のネットワーク異常なのか、新しいノードのパラメータ不一致なのかを判断します。固定した比較用設定があれば、手当たり次第の変更を減らし、ログから本当の変化点を見つけやすくなります。