v2rayNは起動するのにコアが動かない場合は、「起動処理、設定の読み込み、パラメーターの検証、ポートの待ち受け」の順に原因を切り分けます。この記事ではWindows版v2rayNを例に、起動ログの保存、ポートを使用しているプロセスの確認、JSONとコアファイルの検査、修正後の待ち受け確認方法を解説します。コアは起動しているのに接続がタイムアウトする場合は、接続やルーティングの問題として調べてください。
まず確認:コアが起動しないのか、起動後に接続できないのか
v2rayNはサーバー情報やサブスクリプション、各種設定を管理するGUIクライアントで、実際に接続を確立するのは呼び出されたコアです。メインウィンドウが開き、サーバー一覧が表示されても、コアが動作しているとは限りません。一方、Webページが開けないからといって、コアの起動失敗とは限りません。コアが正常に起動した後に、ノードへの接続、DNSの名前解決、ルーティングの問題が発生する場合もあります。
この流れは障害の発生箇所を切り分けるための目安であり、すべてのコアが内部で同じ順序で処理するわけではありません。ログのfailed to startは全体的なエラー表示にすぎず、実際の原因は後続のfailed to listenやファイルパス、解析エラーに記録されていることがよくあります。最後の1行だけでなく、エラー全体と前後の行を保存してください。
| 確認できた状況 | まず疑う原因 | 次に行うこと |
|---|---|---|
| 設定の解析エラーが表示され、直後にプロセスが終了する | 設定またはパラメーターの問題 | エラーが示す項目、ファイルパス、コアの種類を確認する |
| ローカルアドレスとポートを含む待ち受けエラーが表示される | ポート競合またはバインドの制限 | 該当ポートを使用しているプロセスを調べる |
| プログラムファイルが見つからず、コアの起動ログも出力されない | ファイル、パス、または展開内容の不足 | 実際に呼び出されている実行ファイルを確認する |
| ローカルの待ち受けは正常で、リクエスト時にタイムアウトする | 接続段階のトラブル | ノード、DNS、システム時刻、ルーティングを確認する |
起動ログを一式保存する
まず、クライアントのバージョン、現在のノードで使われているプロトコル、選択中のコア、直近の変更内容を記録します。メニュー名はバージョンによって異なるため、以下では一般的な日本語UIの項目名を示します。表示場所が異なる場合は、同じ設定項目を探してください。メニューの位置を合わせるために設定全体をリセットする必要はありません。
-
現在の状態を記録する
「ヘルプ」→「バージョン情報」でクライアントのバージョンを記録し、「設定」→「パラメーター設定」でローカルの待ち受けポートとCoreタイプに関する項目を確認します。バージョンによってコアを個別の画面で管理している場合は、その画面に表示されたコア名も記録してください。
-
確認する変数を絞る
設定をバックアップし、TUNを一時的に無効にして、ノードを1つだけ選んでテストします。システムプロキシはアプリの通信経路であり、コア起動の前提条件ではありません。分割ルーティング、DNS、サブスクリプションの内容を同時に変更しないでください。
-
起動を再現する
メインウィンドウ下部のログ欄で現在時刻を確認し、ツールバーまたはタスクトレイのサービス再起動から起動を1回だけ実行します。連続クリックすると、複数回の失敗ログが混在するため避けてください。
-
ログをそのまま保存する
今回の起動で使われたファイルパス、エラーの連なり、終了時のメッセージをコピーします。コアの出力が表示されない場合は、ログ関連の設定でコアログの表示を有効にして再試行してください。ログを共有する前に、サブスクリプションURL、ノードの認証情報、個人用のパスを伏せてください。
ポート競合:待ち受けアドレスから使用中のプロセスを特定する
以下はよくある英語のエラー例です。アドレス、ポート、先頭のメッセージは実際のログに合わせて確認してください。例では127.0.0.1:10808を使っていますが、すべてのバージョンで固定の既定値とは限りません。設定画面やエラーに表示されたポートを調べてください。
エラー:bind: address already in use
原因と対処:対象のアドレスとポートがすでに使用されています。待ち受け中のプロセスを調べ、重複して起動したクライアントを終了するか、現在のインバウンドに空いているポートを割り当てて再起動してください。
エラー:Only one usage of each socket address (protocol/network address/port) is normally permitted.
原因と対処:Windowsでよく見られるソケットアドレスの競合メッセージです。同じエラーに記載されたポートを確認し、そのポートを待ち受けているプロセスを調べてください。このメッセージだけで、リモートサーバーの障害と判断することはできません。
PowerShellで次の読み取り専用コマンドを実行します。1つ目でTCPの待ち受け情報とPIDを一覧表示し、2つ目で該当プロセスの名前、実行ファイルのパス、起動パラメーターを確認します。パスが空欄の場合はタスクマネージャーでも確認し、必要に応じて管理者権限で照会してください。
Get-NetTCPConnection -LocalPort 10808 -State Listen -ErrorAction SilentlyContinue |
Select-Object LocalAddress, LocalPort, OwningProcess
Get-NetTCPConnection -LocalPort 10808 -State Listen -ErrorAction SilentlyContinue |
ForEach-Object {
Get-CimInstance Win32_Process -Filter "ProcessId = $($_.OwningProcess)"
} |
Select-Object ProcessId, Name, ExecutablePath, CommandLine
- クライアントを2つ起動している:タスクトレイとタスクマネージャーを確認し、不要なインスタンスを正常終了してから、残すほうを起動してください。
- 古いコアのプロセスが残っている:先にv2rayNを終了し、パスとコマンドラインから残存プロセスを特定します。所有元を確認してから終了し、名前だけを使って一括終了しないでください。
- 別のサービスがポートを使用している:不明なシステムサービスを停止しないでください。「設定」→「パラメーター設定」で該当するローカル待ち受けポートを、例の10808から空いていると確認できた10818に変更して保存し、再起動します。
- 変更後は接続先のポートも更新する:手動でプロキシを設定したブラウザー、ターミナル、アプリが以前のポートを参照している場合があります。該当する設定も更新してください。ログにUDPのバインド失敗が記録されている場合は、
Get-NetUDPEndpoint -LocalPort 10808で確認します。
要点:使用中のプロセスを確認してからポートを変更する
ポートを使用しているのが、現在のクライアントの正常なコアかどうかを確認してください。ログが古く、現在の待ち受けが正常なら、ポートを変更する必要はありません。再現時にも競合する場合に限り、重複インスタンスを終了するか、該当するインバウンドのポートを変更します。
JSONエラー:まず構文を修正し、次に項目の意味を確認する
JSONの構文が正しいことと、コアがその設定を受け付けることは別の問題です。引用符や括弧の不足、余分なカンマは構文エラーです。項目の位置が誤っている場合や、現在のコアが未対応のトランスポートパラメーターを指定している場合は、設定内容または互換性の問題です。「設定エラー」と表示されても、サブスクリプションを繰り返し更新しないでください。
エラー:unexpected EOF
原因と対処:データの読み込み中に予期せず末尾に達しています。設定が途中で切れている、または括弧が閉じられていない可能性があります。まず外側のログを確認して、サブスクリプションの応答ではなく設定ファイルを解析中に発生したエラーか確かめ、完全なファイルに戻してください。
エラー:invalid character '}' looking for beginning of object key string
原因と対処:オブジェクトのキーを読み込む前に閉じ括弧に達しています。よくある原因は、最後の項目の後に余分なカンマがあることです。該当するオブジェクトを特定して末尾のカンマを削除し、実際に使うコアで再度検証してください。
以下の設定例は、厳密なJSONにおける末尾カンマの問題を示すためのもので、そのまま実行できる完全なプロキシ設定ではありません。オブジェクトや配列の最後の項目の後にカンマを残さず、文字列には半角の二重引用符を使ってください。
{
"log": {
"loglevel": "warning"
}
}
通常のノードモードでは、実行用の設定は通常、ノード情報と設定からv2rayNが生成します。生成ファイルを直接編集しても、再起動時に上書きされることがあります。ノード編集画面または設定画面に戻り、元の設定を修正してください。カスタム設定モードでは、読み込んだ元ファイルを編集し、ログに記載されたパスがそのファイルと一致していることを確認します。
inboundsやoutboundsなどの配列・オブジェクトで括弧が対応しているか、真偽値を誤って文字列にしていないか確認してください。- ログに行番号、列番号、バイト位置が表示される場合は、その位置と直前の項目を確認してください。カンマが不足していると、次の項目の位置がエラーとして示されることがあります。
- サブスクリプションのテキスト、単一ノードの共有リンク、クライアントのバックアップファイルを、コアが読み込むJSON設定として扱わないでください。
- 設定ファイル全体をオンラインのフォーマッターにアップロードしないでください。ノードのアドレス、ユーザーID、鍵の漏えいを防ぐため、ローカルのエディターを使用してください。
コアファイルの欠落とパラメーターの非互換は別々に調べる
コア自身の出力がまだ一切ない場合は、まずプログラムが実際に起動されているかを確認してください。WindowsでThe system cannot find the file specified.と表示された場合は、例外に記載されたファイル名を確認します。不足しているのはコアの実行ファイルとは限らず、起動に必要な別のファイルの場合もあります。サブスクリプションが無効だと決めつけないでください。
-
パスを確認する
起動エラーから実際に呼び出されているパスを特定し、ファイルが存在するか確認してください。同じ名前のファイルがフォルダー内にあっても、クライアントの設定がそのファイルを参照しているとは限りません。
-
すべてのファイルを展開する
使用中のOSとプロセッサーアーキテクチャに対応したクライアント一式を、新しい専用フォルダーに展開し、フォルダー構成を保ってください。圧縮ファイルのプレビュー画面から直接実行したり、メインプログラムだけをコピーして古いフォルダーに上書きしたりしないでください。
-
ブロック状況を確認する
Windows セキュリティの保護の履歴とファイルのアクセス許可を確認してください。ファイルが隔離・削除されている場合は、入手元と検出理由を確認してから復元または再取得を判断します。問題の切り分けのために、保護機能全体を無効にしないでください。
-
コアの種類を確認する
「設定」→「パラメーター設定」でCoreタイプに関する項目を確認し、現在のノードで個別のコアが指定されていないかも調べます。クライアントに付属するコアファイルを優先して使い、入手元の異なるプログラムと設定を混在させないでください。
パラメーターの非互換では、設定の読み込み段階まで進んでいることが一般的です。たとえば、VLESSノードの一部のセキュリティ設定やトランスポート設定には、対応するコアが必要です。VMessも、プロトコル名だけを根拠にすべてのパラメーターが共通だと判断できません。V2RayとXrayには共通する設定もありますが、項目や機能が完全に同じではありません。無条件にコアを切り替えても解決するとは限りません。
.\xray.exe version
.\xray.exe run -test -config ".\config.json"
テストに成功すれば、その設定ファイルをこのコアが読み込み、設定検査を通過したことが分かります。ただし、ポートが空いていることや、ノードに接続できることを保証するものではありません。失敗した場合は、最も内側のエラーを記録し、示されたプロトコル、トランスポート、セキュリティ設定、外部ファイルを修正してください。一度に変更する項目は1つにして、その都度テストします。
修正後に再テスト:待ち受け、プロキシの入口、リクエストログ
復旧時は、まずコアが継続して動作することを確認し、次にシステムプロキシを戻し、最後にTUNを個別に検証します。最初からすべての入口を同時に有効にすると、新たな権限、仮想ネットワークアダプター、ルーティングの問題が元の障害を覆い隠すことがあります。
- 起動:サービスを1回再起動し、今回のログに新たな設定エラー、バインド失敗、即時終了のメッセージがないことを確認します。
- 待ち受け:前述のポート確認コマンドで実際のポートを調べます。待ち受け中のPIDが今回起動したコアに対応していることを確認してください。
- リクエスト:必要なプロキシの入口を戻してアクセスし、クライアントのログでリクエストがコアに届いているか確認します。アクセスログが無効の場合、記録がないからといってリクエストが届いていないとは限りません。
- 機能:基本的なプロキシ接続が使えることを確認してから、TUNとカスタムルーティングを戻します。その段階で失敗した場合は、追加した機能を調べてください。JSONの句読点を繰り返し変更する必要はありません。
PCを再起動するとポート競合が再発します。どうすればよいですか?
エラーに表示されたポートのPIDとプログラムパスを調べ、タスクマネージャーのスタートアップアプリとタスクトレイのインスタンスを確認してください。クライアントのコピーが2つ自動起動する場合は、起動方法を1つに絞ります。重複起動を残したまま、ポートだけを変更しないでください。
管理者として実行したら直りました。ずっとこの方法で使ってもよいですか?
まずTUNを無効にし、通常のローカルプロキシが起動するか確認してください。一般的な高位ポートでの待ち受けに、通常は管理者権限は不要です。TUNを有効にした場合だけ失敗するなら、安易に常時管理者権限で実行せず、ログにある権限や仮想ネットワークアダプターのメッセージを確認してください。
サブスクリプションを更新すればJSONエラーは直りますか?
エラーの原因がノードデータにあり、サブスクリプション提供元が修正した場合に限り、更新で解決する可能性があります。カスタム設定の括弧の誤り、ローカルのポート競合、コアファイルの欠落は、いずれも使用中のPCで対処が必要です。まずエラーに記載されたパスから、どの設定ファイルの問題か確認してください。
起動エラーはありませんが、Webページがタイムアウトします。どうすればよいですか?
まず、アプリが現在の待ち受けポートを使っているか確認し、ノードへの接続、DNS、システム時刻、ルーティングを調べてください。ここまででコアの起動に関する確認は完了です。接続段階の問題を切り分けるには、トラブルシューティングガイドを参照してください。
v2rayN クライアントのダウンロード
クライアント一式を改めて入手する場合は、OSとプロセッサーアーキテクチャに合ったパッケージを選んでください。既存の設定をバックアップし、新しい専用フォルダーで基本的な起動を確認してから、ノード情報とカスタム設定を移行します。
ダウンロード方法を見る 使い方を見る