· トラブル対処 · 約10分

v2rayNのコアが起動しないときの対処法|ログからconfig.jsonの設定ミスを特定

v2rayNの起動ログからポート競合、JSONの解析エラー、未対応のプロトコル項目を特定し、設定を修正する方法を解説します。

この記事のポイント

まず、コアの起動失敗なのか、接続の失敗なのかを切り分けましょう。v2rayNのメイン画面は開けるものの、ノードを有効にするとコアが終了する場合を対象に、ローカルポート、JSON構文、プロトコルとコアの互換性、ファイルへのアクセスという4つの観点から確認します。画面から変更すべき設定も解説し、再生成されるconfig.jsonを何度も編集する事態を防ぎます。

コアの終了と接続失敗を切り分ける

v2rayNは管理画面で、XrayやV2Flyなどのコアが設定の読み込み、ローカルポートの待ち受け、外部への接続を担います。メイン画面が開いても、コアが起動しているとは限りません。また、Webサイトが開けないからといって、config.jsonに問題があるとも限りません。ログに設定の読み込み失敗、待ち受け失敗、プロセス終了が記録されているかを確認してから、対処方法を判断してください。

ログにローカルの待ち受け開始が記録された後で、接続先へのタイムアウト、TLSハンドシェイクの失敗、接続リセットが発生する場合は、ノードの設定やネットワーク接続を確認します。この段階でローカルポートを何度変更しても、接続先の問題は解決しません。システムプロキシはアプリの通信をローカルの待ち受けポートに転送するだけなので、終了したコアを再起動させることもできません。

同じ起動時のエラー全体を確認する

ログでは、外側のエラーと根本原因が1行に続けて記録されることがあります。前半に「設定の読み込みに失敗」と表示され、後半に問題のある項目やポートが示されます。最後の「プロセス終了」だけをコピーしても、原因の特定は困難です。まず現在の設定を保存し、バックグラウンド更新や複数のテストが混在しないよう、起動操作を1回だけ行ってください。

  1. バージョンを記録する

    「ヘルプ」→「バージョン情報」を開き、v2rayNのバージョンを記録します。あわせて起動ログから、実際に使用されたコアの名前とバージョンも記録してください。クライアントとコアのバージョンは別々に記録し、クライアントのバージョンで代用しないようにします。

  2. 操作を絞る

    メイン画面下部のログ欄に戻り、現在時刻を確認します。一括速度テストやサブスクリプション更新は実行しないでください。ノードを1つ選び、サーバー一覧の右クリックメニューから「アクティブサーバーに設定」を選んで、設定の読み込みを実行します。

  3. エラーの流れをコピーする

    今回の起動について、コアのバージョン、設定ファイルのパス、最初のエラーとその後に続く原因を記録します。画面に終了メッセージしか表示されない場合は、今回の実行に対応するログファイルを確認し、異なる時刻の記録をつなぎ合わせないでください。

  4. キーワードを確認する

    bind、invalid character、unknown config id、Access is deniedを優先して確認します。エラーの流れを続けて読み、より具体的なポート、項目名、ファイルパスを探してください。

v2rayNのバージョンによってメニューの配置やログ設定の場所は異なる場合があります。ここでは一般的な中国語画面を例にしています。項目名が異なる場合は、実際の画面と起動ログを基準にしてください。ログを第三者に送る前に、サブスクリプションURL、UUID、パスワード、個人用フォルダー名を隠し、プロトコル名、エラーのキーワード、ローカルポートは残します。

bindエラーとローカルポートの競合を解決する

ローカルポートはインバウンド設定に属します。同じTCPポートを、競合する待ち受けアドレスで複数のプログラムが同時に使用することはできません。v2rayNの多重起動、終了しきれていないコアのプロセス、または別のプログラムによる同じポートの使用が、新しいコアの起動を妨げることがあります。以下のポート番号は調査の例であり、すべてのバージョンの初期設定を示すものではありません。

10808
この記事で例にするローカルプロキシポート
10809
古い設定で個別に使用されるHTTPポート
127.0.0.1
このPCからのみアクセスできるループバックアドレス

エラー:bind: Only one usage of each socket address

原因と対処:Windowsが待ち受けアドレスとポートの競合を検出しています。ポートを使用しているプロセスを特定して、正体を確認してから重複したインスタンスを終了するか、v2rayNのローカル待ち受けポートを変更してください。

エラー:bind: An attempt was made to access a socket in a way forbidden by its access permissions

原因と対処:ポートはシステムの予約範囲やセキュリティポリシーによって制限されている可能性があり、通常のプロセスが使用中とは限りません。予約ポートとセキュリティソフトの記録を確認し、制限されていないローカルポートを選んでください。

Windowsターミナルで次の2つのコマンドを実行します。1つ目は10808を含む接続情報を検索します。ローカルアドレスの列とLISTENINGの状態を確認してください。2つ目は指定したPIDを調べます。ここでの4321は例のPIDです。実際に実行する際は、1つ目のコマンドで表示された番号に置き換えてください。

netstat -ano | findstr ":10808"
tasklist /FI "PID eq 4321"

使用しているプロセスが、重複起動したv2rayNまたは終了しきれていないコアだと確認できたら、まず通知領域から該当するインスタンスを通常の手順で終了し、再度起動してください。正体がわからないシステムプロセスを直接終了しないでください。ポートを変更する場合は、「設定」→「パラメーター設定」を開き、ローカル待ち受けポートの項目を探します。たとえば、例の10808を10818に変更します。保存してコアを再起動した後、システムプロキシを設定し直し、ポートを手動入力しているアプリの設定も変更してください。

結論:待ち受けを直してからノードを確認

ローカルのバインド失敗が明確な場合は、まず使用するポートで待ち受けできる状態にします。サブスクリプショングループを変更したり、接続先ノードを切り替えたりしても、別のプロセスが使用中のローカルポートは解放されません。

config.jsonの構文エラーと型エラーを特定する

config.jsonは通常、ノード、ルーティング、パラメーター設定をもとにv2rayNが生成する実行用設定ファイルで、サブスクリプションURLそのものではありません。起動ログに記載されたファイルパスを確認してください。ファイル名だけで古いコピーを探し、編集を始めないようにします。通常のノード設定は、まず画面から修正してください。生成されたファイルを直接編集すると、次にノードを切り替えたときに上書きされる場合があります。

エラー:invalid character '}' looking for beginning of object key string

原因と対処:オブジェクトの最後の項目の後に余計なカンマがあると、次のフィールド名を待っているパーサーでエラーになります。エラー位置より前にあるカンマ、引用符、括弧を確認し、実際のJSON構造に合わせて修正してください。

エラー:unexpected EOF

原因と対処:ファイルが途中で切れている、または文字列、オブジェクト、配列が閉じられていない可能性があります。まずファイル末尾と保存時の状況を確認し、完全なバックアップから復元してください。

エラー:cannot unmarshal string into Go struct field

原因と対処:数値、真偽値、オブジェクトが必要な項目に文字列が指定されています。エラーメッセージから該当する項目のパスを特定し、現在のコアの設定形式に合わせて型を修正してください。

以下はJSONの構文上の違いだけを示す例で、単独で動作するコア設定ではありません。1行目は最後の項目の後にカンマがあります。カンマを削除した2行目は有効なJSONです。ポートに文字列を指定できるかどうかは設定スキーマの問題であり、「構文が正しい」だけでは判断できません。

誤った例:
{"listen": "127.0.0.1", "port": 10808,}

正しい例:
{"listen": "127.0.0.1", "port": 10808}

プロトコル項目と実際に動作しているコアを確認する

JSONを解析できても、現在のコアがそのプロトコルやトランスポート項目に対応しているとは限りません。v2rayNは設定の入力窓口であり、実際にサポートされる機能は起動中のコアとそのバージョンによって決まります。手作業でコピーしたアウトバウンド、ルーティング、トランスポートの設定は、異なるコア向けの可能性があります。項目名が似ていても、そのまま相互に置き換えられるとは限りません。

エラー:unknown config id:

原因と対処:XrayまたはV2Flyの設定を構築する際、プロトコルやコンポーネントの識別子が未登録、誤記、または現在のバージョンで未対応の可能性があります。コロンの後にある具体的な識別子を確認し、該当する項目とコアの対応状況を調べてください。

エラー:failed to parse outbound detour config

原因と対処:アウトバウンド設定の構築に失敗していますが、これは概要を示すメッセージです。後続の原因まで読み、プロトコル名、サーバーの設定値、トランスポート設定、TLSまたはREALITY関連の項目を確認してください。

たとえば、REALITYはセキュリティレイヤーの設定であり、realityをアウトバウンドプロトコルとして指定するものではありません。XTLS Visionも特定の設定の組み合わせに対応するもので、トランスポートタイプに任意で入力する名前ではありません。XrayとV2Flyでサポートされる設定は同じではありません。Android版のv2rayNGはXray、v2flyNGはV2Flyを使用しますが、Androidクライアントから出力した設定を、そのままデスクトップ版コアで使えるとは限りません。

  1. ノード名やフォルダー名だけで判断せず、起動ログで実際に使用されているコアを確認してください。
  2. 「設定」→「パラメーター設定」を開き、現在のバージョンで選択できるコアを確認します。プロトコルごとにコアを選ぶ設定がある場合は、そのノードのプロトコルに対応する項目も確認してください。
  3. ノード編集画面に戻り、プロトコル、トランスポート方式、TLS、SNI、flowを確認します。サーバー側から提供された情報に従って入力し、見慣れない項目を試しに追加してエラーを解消しようとしないでください。
  4. 設定に新しいコアの機能が必要な場合は、先にバックアップを取ってから、対応するクライアントとコアのコンポーネントを更新してください。更新前後のバージョンを記録し、プロトコルとルーティングを同時に変更しないようにします。

ファイルへのアクセスとコアプログラムの問題を切り分ける

ログがプロトコルの解析に進まず、設定を開けない、ファイルが見つからない、プロセスを作成できないと表示される場合は、まずファイルと実行環境を確認してください。この種の問題をノードの無効化と取り違えると、サブスクリプションを削除したり、グループを作り直したりする無駄が生じます。

エラー:The system cannot find the file specified.

原因と対処:設定ファイル、コアプログラム、または参照先のファイルが存在しません。エラーメッセージに記載された完全なパスを確認し、展開漏れや移動がないか、セキュリティソフトに隔離されていないかを調べてください。

エラー:Access is denied.

原因と対処:設定の読み込み、実行ファイルへの書き込み、またはプログラムの実行が拒否されています。エラーに記載されたパスとシステムのセキュリティ記録を確認し、フォルダーのアクセス権を修正してください。常に管理者として実行することを一般的な解決策にしないでください。

起動、待ち受け、実際の通信を再テストする

原因が明確な項目を1つだけ変更し、同じ手順で再確認してください。そうすることで、ポート修正、設定修正、コア更新のどれによって復旧したのかを判断できます。複数の変更を同時に行うと、再現できない結果になりかねません。

  1. コアを再起動する

    設定を保存して現在のノードを再読み込みし、新しい時刻の起動ログを確認します。以前の最初のエラーが解消したことを確認してください。古いログが画面から流れて見えなくなっただけでは解決したことになりません。

  2. 待ち受けを確認する

    netstat -anoを使い、設定に指定された実際のポートを確認します。PIDが今回起動したコアのものかも確認してください。10818に変更した場合は、確認時にも10818を指定します。

  3. 通信を確認する

    システムプロキシを設定し直し、現在のノードで実接続遅延テストを実行してから、ブラウザーで対象サイトにアクセスします。アクセスログを見て通信が実際にプロキシを通ったことを確認し、必要に応じて出口IPも確認してください。

config.jsonを編集したのに、ノードを切り替えると元に戻るのはなぜ?

通常のノードの実行設定は、v2rayNによって再生成されることがあります。まずログに記載されたファイルパスを確認し、ノード編集画面または「設定」→「パラメーター設定」で元の設定を変更してください。カスタム設定が必要な場合は、独立したソースファイルを管理し、バックアップを残します。

サブスクリプションを更新すれば、ローカルポートの競合は解消できますか?

できません。サブスクリプションの更新で更新されるのは、主にサブスクリプショングループ内のノード情報です。別のプロセスが使用中の待ち受けポートは解放されません。まず使用中のPIDを調べ、ノードの設定が古い、または不足している場合に限り、サブスクリプションを更新してください。

TUNを有効にした後にエラーが出ました。すぐに再インストールすべきですか?

まずTUNを無効にし、同じノードで比較テストしてください。通常のローカルプロキシなら起動できる場合は、TUNの権限、仮想ネットワークアダプター、ルーティング設定を優先して確認します。どちらのモードでも同じJSONエラーが出る場合は、共通設定を先に修正してください。

コアは終了しなくなりましたが、実接続遅延テストがまだ失敗する場合は?

接続段階の調査に切り替えます。今回のテスト時刻を記録し、接続先への通信、DNS、TLSのエラーを確認したうえで、ノードのアドレス、ポート、SNI、ルーティングを調べてください。プロキシの接続先を確認する場合は、システムプロキシの設定と実接続遅延の説明を参照してください。

さらにサポートが必要な場合は、クライアントのバージョン、コアのバージョン、システムアーキテクチャ、個人情報を伏せたエラー全体、直近に行った単独の変更を伝えてください。「起動失敗」の原因を、検証できる項目、ポート、ファイルまで絞り込めます。最初から再インストールして、原因究明に必要な情報を失うことも避けられます。

v2rayNをダウンロード