この記事の要点

v2rayNでノードを選択した後にXrayが起動しない、繰り返し終了する、ログに設定エラーが表示される場合にお役立てください。最初に失敗したときのログを保存し、待ち受けポート、設定項目、ノードのトランスポート設定、コアの対応状況を順に確認します。「コアは起動したがノードに接続できない」ケースとは分けて考えましょう。

まずログで失敗した段階を確認する

v2rayNはノードを管理して実行用の設定を生成し、Xrayコアは設定を読み込んでローカルの待ち受けを開始し、接続を処理します。起動に失敗した場合、トレイアイコンの状態やブラウザーのエラーは結果を示すだけで、原因までは特定できないことがほとんどです。v2rayNのメイン画面にある「ログ」を開き、サービスを再起動して、その操作後に最初に表示されたエラーを探してください。バージョンによってログの場所や名称が多少異なる場合がありますが、サブスクリプションの更新履歴ではなく、まずコアの出力を確認します。

エラーを読むときは、次の3段階を区別しましょう。設定の解析に失敗した場合は、設定項目やJSON構文に関するメッセージが表示されます。ローカルの待ち受け開始に失敗した場合は、listen、bind、ポートに関するメッセージがよく見られます。コアの起動後にリモート接続で失敗した場合は、名前解決、ハンドシェイク、タイムアウトなどのメッセージが表示されることがあります。最後の「起動失敗」は概要にすぎないことが多く、手がかりはその前にあります。

  1. 状況を記録する

    ノードの選択、システムプロキシの切り替え、設定変更のどの後に失敗したかを記録します。それまでは動作していた場合は、直前に変更した設定から確認しましょう。

  2. 再起動する

    メイン画面の「ログ」を開き、「サービスを再起動」を実行します。現在のバージョンでメニュー名が異なる場合は、対応するコアの再起動操作を使ってください。今回の操作後に追加されたエラーだけを確認します。

  3. 最初のエラーを特定する

    今回のログの先頭から下へ確認し、error、failed、bindを含む最初の記録を探します。該当するポートや設定項目も控えておきましょう。

  4. ログを保存する

    変更する前に、関連するエラーと現在のノード設定の概要をコピーしておきます。第三者に相談する場合は、サーバーの認証情報、サブスクリプションURL、個人のネットワーク情報を必ず伏せてください。

ローカルポートの競合:待ち受けアドレスとポートを確認

コアの起動時には、ローカルのプロキシポートをバインドする必要があります。設定例では、SOCKSは127.0.0.1:10808、HTTPは127.0.0.1:10809を使用します。これらは確認用の例であり、固定値ではありません。実際のポートは、v2rayNの「設定」→「パラメーター設定」にあるローカルポートの設定と、そのときのログで確認してください。同じアドレスとポートを別のプロセスがすでに使用していると、新しいコアは待ち受けを開始できません。

10808
SOCKSのローカルポート例(固定値ではありません)
10809
HTTPのローカルポート例(固定値ではありません)

エラー:bind: address already in use

原因と対処:指定した待ち受けアドレスとポートが別のプロセスに使用されています。まず、重複して起動しているクライアントを終了します。それでも競合する場合は、使用中のプロセスを特定してからローカルポートを変更し、サービスを再起動してください。

エラー:bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.

原因と対処:システムがソケットのバインド競合を報告しています。同じ行の前方にあるlisten tcpのアドレスを確認し、そのポートを調べてください。デフォルトのポートだと決めつけて確認するのは避けましょう。

Windowsのターミナルでは、netstat -ano | findstr :10808を実行すると、例として示したポートに対応するプロセスIDを確認できます。その後、タスクマネージャーでプロセスを照合してください。macOSまたはLinuxのターミナルでは、lsof -nP -iTCP:10808 -sTCP:LISTENで待ち受け中のプロセスを確認できます。コマンド内の10808は、ログに表示された実際のポートに置き換えてください。使用中のプロセスを特定したら、重複したインスタンスを終了するか、v2rayNのローカル待ち受けポートを変更します。正体のわからないシステムプロセスは終了しないでください。

判断の基準:ログに記録された待ち受けアドレス

同じポートでも、異なるアドレスにバインドする場合は競合の範囲が異なることがあります。まずログに記録されたアドレスとポートをすべて確認し、変更する項目を判断してください。リモートノードを変更しても、通常はローカルポートの競合は解消されません。

設定項目とJSON構文:最初の解析エラーを見つける

カスタム設定を手動で編集した後や、設定の一部をインポートした後、高度なオプションを変更した後は、接続を開始する前にコアが終了することがあります。Xrayが読み込むのは、生成後の実行用設定です。余分なカンマ、誤った括弧の階層、配置を間違えた設定項目が1つあるだけでも、設定全体を解析できなくなる場合があります。そのため、「元のノード情報の入力ミス」と「最終的に生成された設定を読み込めない状態」を分けて確認しましょう。

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

原因と対処:JSONオブジェクトのこの位置では設定項目名が必要ですが、右中括弧が先に見つかっています。その直前にある余分なカンマ、設定項目名の欠落、括弧の対応関係を確認してください。修正後、設定を再生成して起動します。

エラー:invalid character ',' looking for beginning of value

原因と対処:設定項目のコロンの後に値がないか、配列内に余分な区切り文字がある可能性があります。エラー付近の設定項目を前方にたどって確認し、メッセージに表示された文字だけを削除して済ませないようにしてください。

v2rayNでは、まず直前に変更したカスタム設定を元に戻し、その後、一項目ずつ設定し直します。サブスクリプションのノードでエラーが発生した場合は、まずそのノードの編集画面を確認し、必要に応じてサブスクリプションを再更新してください。更新によって手動の変更が上書きされることがあるため、調査前にノードのプロトコル、サーバーアドレス、ポート、トランスポート方式、TLS関連のオプションを記録しておくと安心です。VMessとVLESSなど、異なるプロトコルの設定項目を混同しないでください。名前が似ているからといって、別のプロトコルの設定にそのままコピーするのも避けましょう。

ログに具体的な設定項目や位置が示されている場合は、実行時の設定を照合対象にします。JSON構文エラーは通常、起動時に再現します。サーバーアドレスを解決できない、リモートポートへの接続が拒否されるといった問題は、その後の接続段階で発生します。まず構文エラーを修正し、コアが継続して動作することを確認してから接続状態を調べると、2種類のエラーを混同せずに済みます。

判断の基準:一度に変更するのは一か所だけ

起動できる設定に戻したら、設定項目または関連するオプションのまとまりを一つずつ追加し、その都度コアを再起動して確認します。どの変更で解析エラーが発生したのか特定しやすくなります。

トランスポート設定の不一致:ノードの提供元の情報と照合

プロトコル名が同じでも、接続に必要な設定がすべて同じとは限りません。VLESSノードの場合も、トランスポート方式、サーバーポート、セキュリティ設定、選択したトランスポートに対応するパラメーターを確認する必要があります。WebSocketのパスとHost、gRPCのサービス名、TLSのサーバー名はそれぞれ用途が異なり、相互に置き換えることはできません。v2rayNでは対象ノードを右クリックし、サーバーの編集画面を開いて、ノードの提供元から指定されたパラメーターと一つずつ照合します。メニュー名はクライアントのバージョンによって異なる場合があります。

トランスポート設定の誤りが、必ず「コアの起動失敗」につながるとは限りません。ログにローカルポートの待ち受け開始が記録され、その後にハンドシェイクの失敗や接続切断が表示される場合は、ローカルポートではなく、そのノードのリモート設定を確認してください。同じコアで、動作が確認できている別のノードも試します。他のノードは正常で特定のノードだけ失敗する場合は、そのノードの設定を重点的に確認しましょう。

エラー:failed to find an available destination

原因と対処:このエラーは、今回の接続で利用可能な接続先を取得できなかったことを示します。前後の解析ログや接続ログも確認し、サーバーアドレス、リモートポート、DNSを照合してください。このメッセージだけでは、コアが起動していないとは判断できません。

すべてのノードが同じ段階で失敗する場合は、共通設定、コアの選択、ローカルネットワークを改めて確認します。特定のノードだけが失敗する場合は、グローバルなルーティング、DNS、システムプロキシを同時に変更しないでください。調査対象を一つのノードと一つの設定に絞ると、ログを比較しやすくなります。

コアのバージョン差:選択中のCoreと設定の対応状況を確認

v2rayNは管理画面であり、Xrayはそこから呼び出せるコアの一つです。画面上で設定を保存できても、現在実際に使われているコアがその設定を認識できるとは限りません。クライアントの更新、Coreの切り替え、新しいノード設定のインポート後に、以前は使えていたサービスが起動時に未対応のプロトコルや設定項目についてエラーを出す場合は、サーバーアドレスをすぐに変更せず、現在選択されているコアとそのバージョンを確認してください。

  1. Coreを確認する

    v2rayNの「設定」→「パラメーター設定」で「Coreの種類」または現在のバージョンに対応するコアの項目を探し、対象ノードの処理にXrayが選ばれていることを確認します。

  2. バージョンを確認する

    v2rayNのコア管理画面または起動ログで、実際に動作しているXrayのバージョンを確認します。v2rayNクライアントのバージョンとコアのバージョンを混同しないでください。

  3. 設定項目を照合する

    新しくインポートした設定のプロトコル、トランスポート、セキュリティ設定を確認し、現在のコアが対応しているか調べます。コアを更新した直後の場合は、カスタム設定が引き続き使えるかどうかも確認してください。

  4. 一項目ずつ再テストする

    まず、設定が明確なノードを一つ使ってサービスを再起動します。コアが継続して動作することを確認した後、ほかのノードやカスタムルールを少しずつ戻してください。

「新しいバージョンほどよい」という理由だけで、原因を判断しないでください。ログがポート競合を示している場合、コアのバージョンを変更しても競合は解消されません。JSON構文エラーの場合も、まず設定を修正する必要があります。設定が未対応だというエラーがあり、コアの切り替えや更新の前後で症状が変わった場合に限り、バージョン差を優先して調べましょう。クライアントやコアの導入手順を確認する場合は、クライアントのダウンロードページと入門ガイドをご覧ください。

修正後の確認方法とよくある質問

修正後は、コアの起動に成功したかどうかと、目的の接続が利用できるかどうかを分けて確認します。新しいログに同種の起動エラーが出ていないこと、ローカルの待ち受けポートが確立していることを確認し、その後、選択したノードやプロキシを利用するアプリをテストしてください。システムプロキシの設定が影響するのは、その設定を利用するアプリです。「ターミナルのコマンドで接続できない」ことだけを根拠に、コアの起動失敗と判断しないでください。

ログに「起動失敗」としか表示されない場合、どこを確認すればよいですか?

「ログ」でサービスをもう一度再起動し、今回の操作で最初に表示された詳しいエラーを上へさかのぼって探してください。エラーに記載された設定項目、アドレス、ポートを記録し、該当する項目を調べます。

ローカルポートを変更したのに、まだ競合エラーが出るのはなぜですか?

最新のログで、実際にバインドしようとしているポートを確認します。SOCKSやHTTPなど、別の待ち受け設定が競合するポートを引き続き使用していないかも調べてください。変更後にサービスを再起動し、ポートを使用しているプロセスを確認します。

ノードを変更したらエラーが出なくなりました。コアは直ったのでしょうか?

まず、古いノードで失敗した際に、コアがローカルの待ち受けを開始できていたか確認してください。すでに起動していた場合、ノードの変更で解決したのはノード設定またはリモート接続の問題であり、コアの起動問題ではありません。

サブスクリプションを更新したら、またエラーが出るようになった場合は?

サブスクリプションの更新によって、ノードの設定が元に戻ることがあります。更新前後のトランスポート、セキュリティ、サーバーの各項目を比較し、原因がサブスクリプションの内容にあるのか、ローカルのカスタム設定にあるのかを確認してください。

設定をすべてリセットする必要はありますか?

通常は、まずリセットする必要はありません。関連するログを保存し、最近変更した項目から元に戻してください。違いを特定できない場合に限り、現在の設定をバックアップしてから、最小限の設定で段階的に再現します。

再テストでは、変更前のエラーと変更後の起動ログをそれぞれ保存してください。最初のエラーが消えて待ち受けも確立しているのにWebサイトへアクセスできない場合は、システムプロキシ、DNS、ルーティングルール、リモートノードを調べます。エラーが発生した段階に応じて対処すれば、複数の独立した問題をひとまとめにして「コアの起動失敗」と扱わずに済みます。