この記事は、クライアントの選択、サブスクリプションの互換性確認、サーバー設定の移行を行うユーザー向けです。通常のVMess、VLESS、WebSocket、TLS設定は両コアで共通する部分が多い一方、XTLS Vision、REALITY、一部の拡張フィールドはXray系に固有です。ノードのプロトコル、クライアントの種類、ログの結果から使用すべきコアを判断できます。
2つのコア系統の関係と位置づけ
V2Flyコアは一般に、v2ray-coreを受け継ぐコミュニティ版を指し、インバウンド、アウトバウンド、ルーティング、DNS、トランスポート層、ポリシー設定を処理します。Xray-coreは初期のv2ray-coreコードを基盤に発展した独立系統で、共通する設定構造を多く残しながら、VLESS、XTLS、REALITYなどの機能を拡張しています。両者は同じプログラムのテーマ違いではなく、クライアント名を変更するだけで切り替えられるものでもありません。
デスクトップやAndroidのクライアントは、主にサブスクリプション管理、ノード編集、システムプロキシの制御、ログ表示を担います。実際に接続を確立し、ルーティングを実行するのはコアです。同じサーバーアドレス、ポート、ユーザー識別子でも、異なるコアで接続できるかどうかは、プロトコルのフィールド、トランスポート方式、セキュリティ層、コアのバージョンが一致するかに左右されます。
上記のバージョン番号は、この記事で設定を確認する際の世代を示すもので、ダウンロードセンターに表示される最新版を意味しません。コアの更新によりフィールドの追加、旧エイリアスの廃止、検証ルールの変更が行われる場合があります。設定を移行する際は、実際に動作しているバージョンを確認してから、ログの先頭行に表示されるバージョンを確認してください。
Xrayコア
推奨一般的なVMess、VLESS、Trojan、SOCKS、HTTPアウトバウンドに対応し、XTLS VisionやREALITYなどXray系の機能も利用できます。
適した用途:VLESS Vision、REALITYノード、日常的なメイン設定
V2Flyコア
v2ray-coreの設定体系を引き継ぎ、一般的なVMess、VLESS、WebSocket、gRPC、TLS、既存のルーティング設定に適しています。
適した用途:標準プロトコルのノード、既存のV2Flyサーバー、設定の保守
結論:まずセキュリティ層を確認し、その後にコアを選ぶ
共有リンクやサブスクリプションにsecurity=reality、flow=xtls-rprx-visionが含まれている場合はXrayコアを使用してください。VMessのみ、または標準VLESSとTLS、WebSocket、gRPCの組み合わせであれば、両方のコアで互換性がある可能性があります。
XTLS VisionとREALITYが主な違いになる理由
XTLSはXray系のトランスポート最適化技術で、現在のノード設定ではVLESSとxtls-rprx-visionのフロー制御を組み合わせる構成がよく使われます。クライアントとサーバーの双方が対応するflow値を理解していなければなりません。サーバーがVisionを要求しているのに、クライアント側のコアがこのフィールドを無視する、または認識できない場合、通常のTLSへ自動的に切り替わるのではなく、ハンドシェイク段階で接続に失敗します。
REALITYはXrayのセキュリティおよびハンドシェイク方式です。動作するクライアント設定には通常、サーバーアドレス、ポート、ユーザー識別子、serverName、公開鍵、shortId、fingerprintなどが必要です。サブスクリプションに公開鍵がない、またはshortIdが一致しない場合、アドレスとポートでTCP接続を確立できても、コアはその後のハンドシェイクを拒否します。
| 機能または設定 | Xray-core | V2Flyコア | 移行時の判断 |
|---|---|---|---|
| VMess + WebSocket + TLS | 対応 | 対応 | パス、Host、TLS名を重点的に確認 |
| 標準VLESS + TLS | 対応 | 対応 | トランスポート層のフィールドとサーバーのバージョンも確認が必要 |
| VLESS + XTLS Vision | 対応 | Xray Vision設定として扱わない | Xrayコアを維持 |
| VLESS + REALITY | 対応 | このXray固有フィールドには非対応 | 名前を変更するだけでは切り替えられない |
| ドメインとIPのルーティング規則 | 対応 | 対応 | ルールリソースとフィールド名を確認 |
Xray REALITYアウトバウンドの典型例
{
"protocol": "vless",
"settings": {
"vnext": [
{
"address": "198.51.100.20",
"port": 443,
"users": [
{
"id": "11111111-2222-3333-4444-555555555555",
"encryption": "none",
"flow": "xtls-rprx-vision"
}
]
}
]
},
"streamSettings": {
"network": "tcp",
"security": "reality",
"realitySettings": {
"serverName": "www.example.com",
"fingerprint": "chrome",
"publicKey": "フィールド位置を示すサンプル公開鍵",
"shortId": "6ba85179e30d4fc2"
}
}
}
このコードはフィールドの階層を確認するためだけのものです。アドレス、ユーザー識別子、公開鍵はいずれも接続可能なノードではありません。REALITYに対応していないコアに渡すと、設定の解析エラー、未知のセキュリティタイプ、起動失敗などが発生することがあります。正しい対処は、対応するXrayコアへ戻すことであり、エラーが出たフィールドを削除して接続を続けることではありません。
同じプロトコルでも設定をそのまま交換できるとは限らない
XrayとV2Flyは、inbounds、outbounds、routing、dns、policyなど、多くの設定概念を共有しています。基本的なVMessアウトバウンドは移行しやすいことが多いものの、完全な設定には系統固有のフィールド、ルールリソース、トランスポートパラメータ、実験的機能が含まれる場合があります。コアがJSONを読み込めたとしても、構文とフィールド検証を通過したことを示すだけで、トラフィックが期待どおりに振り分けられる保証にはなりません。
サブスクリプションでは、クライアントによる変換という工程も加わります。内容は共有リンクの一覧の場合もあれば、サーバーが生成した構造化データの場合もあります。v2rayN、v2rayNG、v2flyNGはまずサブスクリプションを解析し、その後コアが必要とする実行設定を生成します。そのため、同じサブスクリプションを2つのクライアントで読み込み、ノード名が同じように表示されても、最終的に生成されるJSONは異なる場合があります。
2種類のノードにおけるコアの使い分け
Xray専用フィールドを含む場合
- デスクトップではv2rayNのXrayコアを使用
- AndroidではXrayコアを搭載したv2rayNGを使用
- flow、publicKey、shortId、fingerprintを保持
- サーバーとクライアントを同時に更新してから新しいフィールドを有効化
標準VMessまたはVLESS
- サーバーで実際に使用しているコアに合わせてクライアントを選択
- WebSocketのパス、Host、ポートを確認
- TLSのserverNameとシステム時刻を確認
- 移行後にDNSとルーティングを再テスト
プロトコル名は最初の判断材料にすぎません。セキュリティ層、トランスポート層、フロー制御の各フィールドがすべて一致して初めて、設定を移行できる状態になります。
設定移行時の確認手順
- ノードのプロトコルがVMess、VLESS、その他のどれなのかを確認し、ノード名だけで判断しないでください。
- security、flow、network、serverName、Host、pathなどの重要なフィールドを確認します。
- 移行先のクライアントが実際に呼び出すコアとバージョンを確認し、起動ログの先頭行を記録します。
- まず単一ノードで接続を確立し、その後にドメイン解決、ダイレクト接続ルール、プロキシルールをテストします。
- 最後に完全なサブスクリプションを読み込み、複数ノードによって個別設定のエラーが見えにくくなるのを避けます。
結論:移行テストでは接続とルーティングを同時に確認する
ブラウザーで1つのWebページを開けても、移行が完了したとは限りません。少なくともプロキシ経由のドメイン、直接接続するドメイン、DNSクエリを1回ずつテストし、ログに表示されるアウトバウンドのタグが期待したルールと一致することを確認してください。
v2rayN、v2rayNG、v2flyNGが使用するコア
v2rayNはデスクトップクライアントで、現在の利用環境では通常、XrayコアでVLESS、Vision、REALITYノードを処理します。クライアントはノード一覧、サブスクリプション更新、システムプロキシ、ルーティング設定を担当し、実際の接続はコアプロセスが担います。トラブルシューティングでは「クライアントのUIバージョン」と「コアのバージョン」を区別してください。両者は同じバージョン番号ではありません。
v2rayNGはAndroidクライアントで、Xrayコアを搭載しており、REALITYやVisionノードを含むサブスクリプションをデスクトップと共有する用途に適しています。一方、v2flyNGはV2Flyコアの設定を対象としており、V2Flyサーバー、標準VMess/VLESS、既存のv2ray-core設定体系を明確に利用する環境に適しています。
- v2rayN:「設定」→「パラメータ設定」→「Core基本設定」を開き、コアのパスとログレベルを確認します。ローカル混合プロキシでよく使われるポートは10808ですが、実際の値は現在の設定に従ってください。
- v2rayNG:「設定」→「詳細設定」を開き、ローカルプロキシポート、DNS、ログの項目を確認します。ノードを有効にした後、ログ画面でXrayのバージョンとハンドシェイクエラーを確認してください。
- v2flyNG:V2Flyコアで生成された設定を実行するために使用します。インポート前に、サブスクリプションにREALITY、VisionなどのXray専用パラメータが含まれていないことを確認してください。
サブスクリプションに通常ノードとREALITYノードが混在している場合、どのコアを選ぶべきですか?
Xrayコアを優先してください。通常のVMess、標準VLESS、Xray専用ノードを処理できるため、V2Flyに切り替えてREALITYやVisionの設定が失われるのを防げます。
同じVMessノードが2つのコアで接続できる場合、速度は常に異なりますか?
いいえ。速度はサーバー負荷、回線のパケットロス、輻輳制御、TLS、トランスポート層、ローカルネットワークにも左右されます。同じ時間帯、同じノード、同じルーティングルールで、少なくとも3回繰り返しテストしてください。
v2flyNGにREALITY対応のサブスクリプションを直接インポートできますか?
サブスクリプション解析器でノードが表示される場合はありますが、V2FlyコアはそれだけでXray REALITY設定を実行できません。v2rayNGに切り替え、完全なフィールドを保持するため元のサブスクリプションを再インポートしてください。
コアを変更した後にWebページが開けなくなった場合、まずどこを確認すべきですか?
まずコアプロセスが起動していることを確認し、次にローカルSOCKSまたはHTTPポートが10808、10809のままか確認します。その後、システムプロキシのポートと、ログに表示される設定解析、DNS、ハンドシェイクのエラーを確認してください。
サーバーアドレスとユーザー識別子だけをコピーすればVLESSを移行できますか?
不十分です。ポート、トランスポート方式、セキュリティ層、serverName、flow、パス、Hostに加え、REALITYの場合は公開鍵、shortId、fingerprintもコピーする必要があります。
ノードの種類に応じたコア選択と接続トラブルの確認
サブスクリプションにVLESS、REALITY、Visionが明記されている場合、デスクトップはv2rayN、Androidはv2rayNGを選ぶのが、通常もっとも確実です。サーバーがV2Flyで動作し、ノードが標準VMessまたはVLESSで、検証済みのルーティング設定がある場合は、v2flyNGで同じコア体系を維持できます。
「ノードがタイムアウトした」だけでプロトコルの非互換と判断しないでください。タイムアウトは、アドレスに到達できない、ポートが遮断されている、システム時刻が正しくない、DNSの応答異常、サーバーが稼働していないことでも発生します。コアの非互換でよく見られるのは、unknown field、unsupported security、failed to parse config、invalid flowなどの設定またはハンドシェイクエラーです。
| ログの症状 | 優先して確認する項目 | 対処方法 |
|---|---|---|
| unknown field または unsupported security | コアの系統と設定フィールド | REALITY設定をV2Flyに渡していないか確認 |
| invalid flow | flow値とプロトコルの組み合わせ | VLESSとxtls-rprx-visionの組み合わせか確認 |
| connection refused | サーバーのポートとプロセス | アドレス、ポート、サーバーの待受状態を確認 |
| context deadline exceeded | 回線、DNS、ハンドシェイクパラメータ | アドレスへの到達性とserverNameを個別にテスト |
| ローカルポートの競合 | 10808、10809などの待受ポート | 重複しているコアプロセスを終了するか、クライアントのポートを変更 |
5ステップでクライアント側を確認
- 現在の接続を完全に停止し、旧コアプロセスが終了していることを確認します。
- クライアントの設定を開き、コア名、コアのバージョン、ローカルSOCKSポート、HTTPポートを記録します。
- ノードを1つだけ選択して起動し、設定の読み込みとローカル待受が完了しているかログで確認します。
- システムプロキシを有効にして対象ドメインへアクセスし、ログで適用されたルーティングルールとアウトバウンドのタグを確認します。
- 単一ノードの検証に成功してから、サブスクリプションの自動更新と完全なルーティングルールを戻します。
コア選択の最終判断
XrayとV2Flyには多くの基本プロキシ設定をカバーできる共通部分がありますが、両者はすでに独立して発展するコアです。Xrayの主な識別点はVLESS、XTLS Vision、REALITYの組み合わせであり、V2Flyの価値は独自の設定体系とサーバー展開の流れを引き継げる点にあります。すべてのノードを特定のJSON形式に書き換えれば必ず互換になる、というルールはありません。
一般ユーザーにとって最も確実な確認順序は、ノードのフィールド、クライアントのコア、サーバーの実装、実行ログです。デスクトップでv2rayN、Androidでv2rayNGを使えば、Xray専用ノードにも対応できます。V2Fly環境を明確に維持する場合はv2flyNGを使用してください。コアを変更した後は、サブスクリプション、DNS、ルーティング、ローカルプロキシポートを必ず再確認します。
- realityまたはxtls-rprx-visionがある場合:Xrayを選択。
- 標準VMess、VLESS、WebSocket、gRPC、TLSを使用する場合:両方で互換性がある可能性がありますが、完全なフィールドの確認が必要です。
- 設定の解析に失敗した場合:まずコアのバージョンと未知のフィールドを確認し、先にサーバーアドレスを変更しないでください。
- 接続は成功するがルーティングが異常な場合:ルーティングルール、DNS、クライアントが生成した最終設定を確認してください。