v2rayNでコア起動直後に停止する、ログにエラーが出続ける、ローカルプロキシのポートが待ち受け状態にならないといった問題に適した内容です。最初のエラーを保存し、Coreの種類、生成された設定、待ち受けポート、ノードの各項目、DNSとTLSパラメータを順に確認します。最後に最小構成で、原因がクライアント、ノード、本体環境のどこにあるかを切り分けます。
まず失敗した段階を確認する
v2rayNは管理画面であり、インバウンドの構築、ルーティングの実行、リモートサーバーへの接続を実際に担うのはXrayまたはv2flyコアです。起動をクリックすると、クライアントはノードとルーティング設定を読み込み、実行用設定を生成してから、選択したコアを呼び出します。生成した設定を解析できない、ポートを待ち受けできない、必須項目が欠けているといった場合、コアは1秒以内に終了することがあります。
「起動失敗」と「起動は成功したがインターネットに接続できない」は分けて対処します。前者では継続実行中のCoreプロセスが見当たらず、ローカルポートも待ち受け状態になりません。後者では「started」のような起動ログが出ますが、ウェブサイトへのアクセス時に接続タイムアウト、名前解決失敗、TLSハンドシェイクエラーなどが発生します。段階を先に切り分ければ、原因に触れないままノードを何度も入れ替えることを避けられます。
-
ログを開く
v2rayNのメイン画面で「ヘルプ」→「ログを表示」を開きます。現在のバージョンで「情報」エリアが直接表示される場合は、そのエリアに切り替えて古い記録を消去します。
-
コアを確認する
「設定」→「パラメータ設定」→「Coreの種類」を開き、VMessやVLESSなどのノードが実際にXrayへ割り当てられていることを確認します。削除済みまたは無効なパスのコアが呼び出され続けないようにしてください。
-
もう一度再現する
まずサービスを停止し、3秒待ってからもう一度起動します。この起動で生成されたログだけを残し、サブスクリプション更新の記録や古い接続エラーを判断に混ぜないでください。
-
最初のエラーを保存する
下から上へたどり、最初に現れるerror、failed、panic、fatalの行を探します。その前後5行ずつを含めてテキストファイルにコピーしてください。
コアログを時系列で読む
コアログは通常、時系列で出力されます。最初の部分はバージョンと起動パラメータ、次が設定の読み込み結果、その後にポートの待ち受けとアウトバウンド接続が続きます。調査では、処理を最初に中断させたエラーを探し、最後の「exited」や「stopped」だけを見ないことが重要です。終了メッセージは結果を示すだけで、根本原因を説明することはほとんどありません。
2026/07/29 10:18:42 [Info] Xray 25.6.8 started
2026/07/29 10:18:42 [Info] loading config: config.json
2026/07/29 10:18:42 [Error] failed to listen TCP on 127.0.0.1:10809
2026/07/29 10:18:42 [Error] listen tcp 127.0.0.1:10809: bind: address already in use
2026/07/29 10:18:42 [Info] core exited with code 1
この例で本当に重要なのは4行目です。1行目はXrayプロセスが呼び出されたこと、2行目は設定ファイルを読み込めたことを示しています。3行目と4行目で、失敗箇所がローカルの10809ポートに絞り込めます。最後の行はプロセスがゼロ以外のステータスで終了したことを示すだけです。したがって、この時点でサーバーアドレス、UUID、通信方式を変更する必要はなく、まずローカルポートの競合を解消します。
| ログの位置 | 確認する主な項目 | 判断できる問題 |
|---|---|---|
| 起動前の1〜3行 | バージョン、実行ファイルのパス、Coreの種類 | コアファイルの欠落、アーキテクチャ不一致、Core選択ミス |
| 設定の読み込み段階 | config、decode、unmarshal、line | JSON構造の破損、項目の型エラー、生成設定の異常 |
| インバウンドの待ち受け段階 | listen、bind、address、port | ポート競合、権限制限、利用できない待ち受けアドレス |
| アウトバウンド接続段階 | dial、timeout、DNS、TLS | サーバーに到達できない、名前解決失敗、ハンドシェイクパラメータの誤り |
結論:最初の因果関係があるエラーを優先する
赤いログが十数行続いていても、まずは時刻が最も早く、具体的な対象が示された行を修正します。たとえば10809ポートのバインド失敗は、その後のインバウンド停止やCore終了を引き起こします。後続のエラーを1件ずつ処理する必要はありません。
ポート競合とプロセスの衝突を解消する
v2rayNでよく使われるローカルポートは、SOCKSが10808、HTTPが10809です。ただし、実際の値は「設定」→「パラメータ設定」→「基本設定」にあるローカル待ち受け設定を基準にします。別のv2rayNインスタンス、古いCoreプロセス、その他のネットワークプログラムが同じポートを使用していると、新しいコアはインバウンドの待ち受けを開始できません。
エラー:listen tcp 127.0.0.1:10809: bind: address already in use
原因と対処:10809は別のプロセスが待ち受け中です。重複起動しているクライアントを終了し、残っているCoreを停止します。並行して実行する必要がある場合は、ローカルHTTPポートを11809に変更して再起動してください。
エラー:failed to listen TCP on 127.0.0.1:10808
原因と対処:SOCKSインバウンドの作成に失敗しています。まず10808を使用しているプロセスを確認し、次に待ち受けアドレスが127.0.0.1のままであることを確認します。本体に存在しないアドレスを誤って入力していないかも確認してください。
エラー:bind: An attempt was made to access a socket in a way forbidden by its access permissions
原因と対処:ポートがシステムの予約範囲またはセキュリティポリシーによって制限されています。待ち受けポートを未使用の12080〜12089に変更し、クライアントを再起動して待ち受け結果を確認します。
Windowsのターミナルでは、ポートに対応するプロセスIDを直接確認できます。次のコマンドは現在の待ち受け状態を読み取るだけで、最後の列がPIDです。何も出力されなければ、そのポートは現在TCPプロセスによって待ち受けされていません。設定の生成や権限の問題を引き続き確認してください。
netstat -ano | findstr :10808
netstat -ano | findstr :10809
tasklist | findstr 4320
- PIDが別のv2rayNインスタンスに対応している場合は、タスクバーからそのインスタンスを終了します。メインウィンドウを閉じるだけでは不十分です。
- PIDが古いXrayまたはv2flyプロセスに対応している場合は、まず現在のクライアントでサービスを停止し、その後に残ったプロセスを終了します。
- ポートを必須のプログラムが使用している場合は、「設定」→「パラメータ設定」でv2rayNのローカルポートを変更し、ブラウザーやほかのアプリの手動プロキシポートも合わせて更新します。
- 変更後にもう一度確認コマンドを実行し、新しいポートが今回起動したCoreプロセスによって待ち受けされていることを確認します。
JSON形式エラーとプロトコル項目の不足
サブスクリプションから取り込んだノードは、v2rayNによってCoreが読み込めるJSONへ変換されます。ノードを手動編集したり、不完全な共有情報を取り込んだり、カスタム設定を変更したりすると、カンマの欠落、閉じ括弧の不足、数字が文字列として記述されるといった問題が起きることがあります。ログに行番号と列番号が示される場合は、まずその構文位置を特定し、直前の項目を確認してください。
{
"address": "edge.example.net",
"port": 443,
"id": "00000000-1111-4222-8333-444444444444",
"security": "auto",
"network": "tcp"
}
上の例は項目の型を理解するための断片であり、実行設定全体を置き換えるファイルではありません。ポートは数字、アドレスとUUIDは文字列で指定します。ログがある行の先頭を示していても、実際に欠けているカンマは前の行末にあることがよくあります。エラー項目を削除するだけでは、構文を通過した後にプロトコル必須項目の不足で失敗する可能性があります。
エラー:failed to decode config: invalid character after object key
原因と対処:JSONのキーと値の間にあるコロン、カンマ、引用符が不完全です。直近に行ったカスタム設定の変更を元に戻し、ログに示された行の直前の行を重点的に確認します。
エラー:json: cannot unmarshal string into Go struct field
原因と対処:項目の型が正しくありません。よくある例は443を文字列として記述するケースです。ノードを再編集し、ポートを数字に戻して保存してください。
エラー:failed to parse id: invalid UUID
原因と対処:VMessまたはVLESSのユーザーIDの長さ、ハイフン、文字の内容がUUID形式に適合していません。サブスクリプションからノードを再更新し、欠落した文字を手入力で補わないでください。
エラー:VLESS users: missing id
原因と対処:VLESSのアウトバウンドにユーザーIDがありません。ノード編集画面を開き、アドレス、ポート、IDを確認してください。サブスクリプション側で項目が欠けている場合は、ノード提供者による修正が必要です。
| ノードの種類 | 起動前に必ず確認する項目 | よくある入力ミス |
|---|---|---|
| VMess | アドレス、ポート、UUID、通信方式 | UUIDの途中欠落、ポート内の空白、パスのスラッシュ不足 |
| VLESS | アドレス、ポート、UUID、TLSまたはREALITYパラメータ | flowがサーバー側と不一致、public keyの欠落 |
| カスタム設定 | 完全なJSON、インバウンドポート、ルーティング参照名 | tagの重複、配列の括弧が閉じていない、数字の型エラー |
1つのノードだけが起動に失敗し、同じグループのほかのノードは正常に起動できる場合は、まずサブスクリプションを再更新し、そのノードの項目を確認します。すべてのノードで同じ行にJSONエラーが出るなら、グローバルルーティング、カスタムDNS、テンプレート設定の破損が疑われます。範囲が異なるため、対処の入口も異なります。
アドレス解決、TLS、Coreの種類に関するエラー
設定の構文を通過すると、ログにdial、lookup、certificate、handshakeなどが現れることがあります。この段階では、Coreは通常ローカルの待ち受けを完了しており、エラーはリモート接続中に発生しています。エラー対象がノードのドメイン名、ローカルDNSアドレス、証明書名のどれかを確認し、すべてのtimeoutを同じ原因と決めつけないでください。
エラー:failed to find an available destination
原因と対処:リモートアドレスの名前解決に失敗したか、候補となるアドレスへ到達できません。ノードのドメイン名を確認し、利用可能なDNSへ切り替えてコアを再起動します。具体的なIPへの接続記録が現れるか確認してください。
エラー:lookup edge.example.net: no such host
原因と対処:DNSからそのドメインのレコードが返されていません。まずv2rayNのデフォルトDNS設定に戻し、システム時刻とネットワーク接続が正常であることを確認してから、サブスクリプションを再更新します。
エラー:remote error: tls: handshake failure
原因と対処:TLSパラメータがサーバー側と一致していません。ポート、SNI、通信方式、安全性の種類を確認し、証明書検証を無効にしてパラメータの誤りを隠さないでください。
エラー:failed to execute core: The system cannot find the file specified
原因と対処:クライアントに記録されたCoreのパスが存在しません。「設定」→「パラメータ設定」→「Coreの種類」で正しい選択に戻し、v2rayNを再起動してください。
システム時刻のずれも、証明書の有効期間の判定に影響します。時刻、タイムゾーン、自動同期の状態を修正してから再接続するほうが、証明書検証の設定を直接変更するより問題の範囲を保ちやすくなります。ログに証明書名と対象SNIの不一致が明記されている場合は、ノード編集画面に戻ってサーバー名を修正してください。
2026/07/29 10:31:08 [Info] dialing tcp: edge.example.net:443
2026/07/29 10:31:08 [Error] tls: failed to verify certificate
2026/07/29 10:31:08 [Error] certificate is valid for node.example.net, not edge.example.net
この記録には2つのドメイン名が示されています。接続先がedge.example.netでも、サーバー証明書がnode.example.netに対応している場合、SNIには通常、ノード設定にある証明書の対象名を入力します。具体的な値は有効なサブスクリプションまたはサーバー設定から取得し、エラー文だけで推測しないでください。
結論:待ち受け成功後はポートを調べ続けない
ログにリモートドメイン、TLS、certificateの情報が現れているなら、ローカルのCoreは少なくともアウトバウンド接続段階まで動作しています。この時点で10808や10809などのローカルポートを変更しても、通常は解決しません。ノードアドレス、SNI、DNS、通信パラメータを確認してください。
最小構成で復元して結果を確認する
ログに複数種類のエラーが含まれる場合は、変数を減らすのが最も確実です。出所が明確なノードを1つだけ残し、いったんデフォルトのルーティングとDNSを使用します。テストに不要なカスタムインバウンドを無効にしてからCoreを起動してください。最小構成なら、サブスクリプションデータ、グローバルルール、ローカル待ち受けを分けて検証できます。
-
設定をバックアップする
現在のローカルポート、Coreの種類、DNS、ルーティングモードを記録し、重要なログを保存します。複雑な分割ルールの復元を記憶だけに頼らないでください。
-
サブスクリプションを更新する
「サブスクリプショングループ」で対象グループを選択して更新を実行し、項目が揃っていて最近利用できたノードを1つだけ選んでテストします。
-
デフォルトに戻す
カスタムJSON、追加のインバウンド、手動作成したDNSルールを一時的に無効にし、デフォルトのローカル待ち受け設定と基本ルーティングを残します。
-
コアを起動する
ログを消去してから一度起動し、10秒待ちます。started、待ち受けアドレス、ポートが表示され、その直後にfatalやexited code 1が出ていないことを確認してください。
-
項目を1つずつ戻す
設定は毎回1項目だけ戻して再起動します。戻した直後に初めてエラーが出た項目が、問題の範囲です。
利用可能な状態では、少なくとも次の3点を満たす必要があります。Coreプロセスが継続して実行されること、ローカルプロキシポートが待ち受け状態を維持すること、リクエスト時に正常なアウトバウンド記録が出ることです。起動成功だけが表示され、リクエストログがまったくない場合は、システムプロキシが有効か、アプリが実際にv2rayNの提供するプロキシポートを使用しているかも確認します。
ログが一瞬で消えてコピーできない場合は?
まず「ヘルプ」→「ログを表示」を開いてからCoreを起動し、ログファイルから完全な記録を読み取ります。最初のerrorの前後5行ずつを重点的に保存し、最後の終了メッセージだけを切り取らないでください。
ノードを変更しても同じポートエラーが出る場合は?
ポートはローカルのインバウンドに属し、リモートノードとは関係ありません。netstatで10808または10809を使用しているPIDを確認し、重複インスタンスを終了するか、ローカルポートを未使用の値に変更してください。
サブスクリプション更新後にinvalid UUIDが出る場合は?
まずそのグループの古いノードを削除し、完全にもう一度更新します。新しく生成された同じノードでもエラーが出るなら、サブスクリプションのユーザーIDが不完全です。配信元の修正を待つ必要があります。
Coreにstartedと表示されれば修復完了?
まだ不十分です。ローカルポートが待ち受け状態にあり、実際にリクエストを1回送ることを確認してください。ログにアウトバウンド接続が出て、timeout、DNS、TLSエラーがない状態が必要です。
クライアントを再インストールすれば設定エラーは解決する?
エラーの原因がサブスクリプションの項目、カスタムルーティング、保持された設定にある場合、プログラムファイルを置き換えるだけではデータは変わりません。まずログからポート、JSON、Coreのパス、ノードパラメータのどこに問題があるか特定し、その後に設定を作り直すか判断してください。