クライアントに「起動に失敗しました」と表示されても、ノード自体が無効とは限りません。v2rayNやv2rayNGなどのGUIクライアントは、ノード、ルーティング、ローカルリスニング設定をいったんカーネル設定へ変換してから、Xrayまたはv2flyカーネルを起動します。生成された設定、リスニングポート、証明書ファイル、フィールド構造のいずれかに問題があると、プロキシ接続を確立する前にカーネルプロセスが終了します。
有効な調査方法は、ノードを何度も切り替えることではなく、今回の起動に対応する最初のエラーを見つけることです。ログ末尾には「failed to start」「app/proxyman」や終了コードなどの包括的な情報が表示されることがありますが、根本原因は通常その前にあります。最初に現れた明確なエラーを解決してから再起動し、新しいログを確認すれば、後続の連鎖エラーに惑わされずに済みます。
カーネルが起動しない、クライアントがすぐ切断される、ログにエラーが繰り返し表示される場合に適しています。確認の順番は、ログの時刻を確認し、最初のエラーを抜き出し、ポート、JSON、フィールド、証明書のどれに該当するかを判断し、個別に修正して設定を再生成・起動する、という流れです。
今回の起動に対応する完全なログを取得する
ログは直前に行った起動操作に対応していなければなりません。古いログには修正済みのエラーが残っている可能性があり、目立つ赤い行だけを検索すると、誤った問題に対処してしまいます。まずカーネルを停止して現在時刻を記録し、もう一度起動してください。その後、起動時刻に最も近いタイムスタンプから下へ読み進め、error、failed、invalid、cannotのいずれかを含む最初の記録でいったん止めます。
v2rayN デスクトップ版
- メインウィンドウ下部のログエリアを開きます。折りたたまれている場合は、下部の情報パネルを展開して「ログ」に切り替えてください。
- 「設定」→「パラメータ設定」→「基本設定」を開き、ログレベルが完全無効になっていないことを確認します。通常のトラブル対応には
warningを使い、設定の読み込み過程を確認するときだけ一時的にinfoへ変更します。 - サービスを停止し、約2秒待ってから現在の設定をもう一度起動します。カーネルバージョンの行からプロセス終了の行までをコピーしてください。
- メインウィンドウにクライアントログとカーネルログの両方が表示される場合は、
Xray、V2Ray、Core、または設定ファイルのパスを含む記録を優先して確認します。
v2rayNG Android版
- 現在の接続を切断し、メイン画面右上のメニューから「ログ」を開きます。
- メイン画面に戻り、対象の設定を選択して起動したら、すぐにログ画面へ戻ります。
- 最新のカーネル起動記録から確認します。内容が速く流れる場合は、先に接続を停止してから、直近の起動で生成された記録をコピーしてください。
- v2rayNGでXrayカーネルを使用している場合、設定検証、VLESSフィールド、TLSエラーはカーネルが直接出力します。クライアント上部の短いメッセージは状態確認用であり、詳細なログの代わりにはなりません。
ポート競合:カーネルがローカルリスニングを確立できない
プロキシカーネルは起動後、まずローカルにSOCKS、HTTP、または透過プロキシのリスナーを作成します。v2rayNでよく使われる組み合わせは127.0.0.1:10808と127.0.0.1:10809です。以前のカーネルが終了していない、別のクライアントが動作している、または他のプログラムが同じポートを使用している場合、新しいプロセスはリモートノードを処理する前に失敗します。
この問題は、サーバーの遅延やVMess、VLESSのパラメータとは関係ありません。エラーにlisten、bind、addressとポート番号が同時に含まれている場合は、まずローカルリスニングを確認します。ノードを連続して切り替えて検証するのは避けてください。すべてのノードが同じローカル入口を共有するため、切り替えても使用中のポートは解放されません。
エラー:failed to listen TCP on 127.0.0.1:10808
原因と対処:SOCKSリスニングポートが別のプロセスによって使用されています。古いクライアントと残留カーネルを完全に終了してください。それでも失敗する場合は、「設定」→「パラメータ設定」→「基本設定」でローカルSOCKSポートを11808に変更し、保存して再起動します。
エラー:bind: Only one usage of each socket address is normally permitted
原因と対処:同じアドレスとポートを2つのプロセスが同時にリスニングすることはできません。v2rayNのウィンドウを2つ開いていないか確認し、残留カーネルを終了してから再起動してください。2つのクライアントで10808を共有しないでください。
エラー:bind: address already in use
原因と対処:LinuxまたはmacOSで、別のプロセスが対象ポートを使用しています。該当するプロセスを終了するか、SOCKSとHTTPのリスニングポートをそれぞれ11808、11809に変更し、手動プロキシを使用するアプリの設定も更新してください。
ポート変更後に合わせて確認すること
- システムプロキシは通常v2rayNが自動更新しますが、ブラウザーやダウンロードツールに設定した手動プロキシは自動では変わりません。
- SOCKSポートを
10808から11808へ変更した場合、アプリ内のプロキシアドレスも127.0.0.1:11808に変更します。 - ポート値は
1から65535の範囲内にし、SOCKS、HTTP、API、LANリスニングで同じポートを重複して使わないでください。 - ポートだけを変更しても同じエラーが出る場合は、ログに表示された実際のポートを確認します。別の設定ファイルから設定が生成され、変更が現在のカーネルに反映されていない可能性があります。
結論:bindを見たらまずローカル環境を確認
bindまたはaddress already in useを含む起動エラーは、ローカルリスニングの段階で発生しています。まずポートを解放または変更し、その後でノードのプロトコルやリモートサーバーを確認してください。
JSON構文エラー:プロトコル検証に進む前の段階
V2RayとXrayのカーネルは通常、JSON設定を読み込みます。GUIクライアントは設定を自動生成しますが、完全な設定の手動インポート、カスタムルーティングの編集、断片の結合、高度なパラメータの貼り付けによって、カンマの抜けや余分なカンマ、誤った引用符、対応しない括弧が入り込むことがあります。構文解析に失敗した場合、カーネルはVMess、VLESS、ルーティング規則の具体的な意味をまだ読み取っていません。
ログの行番号と列番号は、最も直接的な手掛かりです。たとえばline 42 column 17は、パーサーが42行目17列目から処理を続けられなかったことを示しますが、実際の原因は前の行末にある場合もあります。対象位置とその直前の行を同時に確認し、特に配列要素やオブジェクトのフィールド間にあるカンマに注意してください。
{
"inbounds": [
{
"port": 10808,
"protocol": "socks"
}
],
"outbounds": [
{
"protocol": "vless",
"settings": {}
}
]
}
エラー:invalid character '}' looking for beginning of object key string
原因と対処:オブジェクト末尾に余分なカンマがあるか、フィールド名に二重引用符がありません。エラー位置の直前の行を確認し、末尾の余分なカンマを削除して設定を再検証します。
エラー:unexpected end of JSON input
原因と対処:設定が完全に終了する前に途切れています。右中括弧または右角括弧が不足していることがよくあります。階層に合わせて{}と[]を対応させ、ファイル末尾に闇雲に括弧を追加しないでください。
エラー:failed to load config files: invalid character
原因と対処:設定にJSONで受け付けられない文字が含まれています。全角の句読点、コメント、誤った引用符などが原因です。全角のカンマと引用符を半角に変更し、標準JSONでサポートされないコメントを削除してください。
推奨する復旧手順
- 現在のカスタム設定やルーティング規則を先にバックアップし、唯一のコピーを直接上書きしないでください。
- 購読ノードから生成された設定でエラーが発生した場合は、そのノードを削除して購読を再更新し、ノードを選び直して起動します。
- 手動作成したJSONでエラーが発生した場合は、まず起動に必要な最小構成へ戻し、その後ルーティング、DNS、トランスポート設定を少しずつ追加します。
- 追加するたびに一度起動してください。これにより、ファイル全体を同時に確認するのではなく、直近の変更箇所にエラー範囲を絞れます。
フィールド名とバージョンの互換性:構文は正しいが構造が無効
JSONを解析できても、現在のカーネルのデータ構造に適合しているとは限りません。フィールド名の誤字、大文字・小文字の違い、階層の誤り、新しいクライアントが生成した旧カーネルの未対応フィールドなどにより、設定の読み込み時にunknown field、failed to build config、invalid valueが発生します。この段階では括弧やカンマに問題がないことが多く、フィールド名、プロトコルの組み合わせ、カーネルバージョンを確認します。
たとえばVLESSのflow、トランスポート層のnetwork、TLS関連のserverNameには決められた配置があります。似た名前のフィールドに置き換えたり、出力設定のフィールドをトランスポート設定に入れたりしても、カーネルが自動で推測することはありません。購読パーサーが古く、新しいパラメータを無視して不完全な設定を生成する場合もあります。
エラー:unknown field "floww"
原因と対処:フィールド名の誤りです。flowwは有効なフィールドではありません。ノード編集画面に戻り、VLESSのフロー制御設定を確認してください。一時生成ファイルを直接編集しても、次回起動時にクライアントが再生成して上書きするため意味がありません。
エラー:failed to build config: invalid field rule
原因と対処:カスタムルーティング規則のフィールドまたは階層が、現在のカーネル構造に適合していません。直近で追加した規則を一時的に無効にし、カーネルが起動できることを確認してから、ドメイン、IP、ポート、出力タグの順に一つずつ戻します。
エラー:failed to parse transport config
原因と対処:トランスポート方式と対応するパラメータが一致していません。たとえばWebSocketを選択したまま、別のトランスポート専用フィールドを残している場合です。ノードを再編集し、方式、パス、ホスト名、セキュリティ設定が同じ組み合わせになるようにします。
ノード、購読、全体設定のエラーを切り分ける
| 現象 | 優先して確認すること | 対処 |
|---|---|---|
| 1つのノードだけ起動できない | そのノードのフィールド不足または誤記 | そのノードを再インポートし、プロトコル、アドレス、ポート、トランスポートパラメータを確認する |
| 同じ購読の全ノードが失敗する | 購読の解析結果またはクライアントのバージョン問題 | 購読を更新し、クライアントとカーネルのバージョンを確認してから設定を再生成する |
| すべての購読ノードと手動ノードが失敗する | 全体ルーティング、DNS、リスニング、またはカーネルファイルの問題 | 全体設定を初期状態に戻し、最小構成で起動をテストする |
| クライアント更新後に失敗し始めた | 旧設定のフィールドと新しい構造が一致していない | ノードとパラメータを保存し直し、古い生成キャッシュを使い続けない |
結論:単一ノードの失敗はフィールド、全ノードの失敗は全体設定を確認
問題の範囲から、確認対象を直接絞り込めます。1つのノードだけでエラーが出る場合は、すべてのルーティングをリセットする必要はありません。すべてのノードが同時に失敗する場合も、サーバーアドレスを一つずつ変更するべきではありません。
証明書とTLS:パス、ドメイン、システム時刻を個別に確認
証明書関連の起動エラーは、主にローカル証明書ファイルの読み込みやTLS設定の初期化時に発生します。クライアントが出力接続側として動作する場合、多くのノードでは証明書ファイルを手動で指定する必要はありません。設定にcertificateFile、keyFile、ローカルの絶対パスが含まれている場合は、そのファイルが実際に存在し、現在のプロセスに読み取り権限があることを確認します。
別のエラーは、接続確立後に発生します。たとえば証明書のドメイン不一致や、有効期間の判定異常です。これらはカーネルプロセスをすぐに終了させない場合もありますが、対象ノードへの接続は失敗します。「起動段階でファイルを読み込めない」のか「接続段階でリモート証明書の検証に失敗した」のかをまず切り分けてください。両者では対処方法が異なります。
エラー:failed to load certificate > open certificate.crt: no such file or directory
原因と対処:設定が参照する証明書パスが存在しないか、相対パスの基準となる作業ディレクトリが誤っています。実際に存在するファイルパスへ変更するか、ノード設定に不要なローカル証明書の参照を削除してください。
エラー:x509: certificate is valid for example.com, not node.example.net
原因と対処:TLS検証で使用するサーバー名と証明書のドメインが一致していません。ノードが提供するアドレスとサーバー名フィールドを確認し、WebSocketのHost、接続先アドレス、TLSサーバー名を不用意に入れ替えないでください。
エラー:x509: certificate has expired or is not yet valid
原因と対処:証明書の有効期限が切れているか、端末のシステム時刻が大きくずれています。まず自動日時とタイムゾーンを有効にして時刻を同期してください。時刻が正しいのに続く場合は、サーバー側の証明書設定を更新する必要があります。
エラー:failed to parse private key
原因と対処:秘密鍵ファイルの内容、形式、または証明書との組み合わせが正しくありません。通常のクライアント出力ノードでサーバー側の秘密鍵を読み込む必要はありません。サーバー向けの完全な設定を誤ってインポートしていないか確認してください。
証明書トラブルを判断する3ステップ
- まず時刻:システム日時が数か月ずれていると、現在も有効な証明書が未発行または期限切れと判定されることがあります。
- 次に名前:接続先アドレスは入口ドメインでも構いませんが、TLSサーバー名はサーバー設定および証明書の対象範囲と一致している必要があります。
- 最後にファイル:ローカル証明書を明示的に使用する設定だけ、ファイルパスを確認します。通常の購読ノードに証明書や秘密鍵のパスを勝手に追加する必要はありません。
修正後の確認:古いエラーが別のエラーに置き換わっていないか
1項目を修正したら、カーネルを完全に停止して再起動します。画面上でノードを切り替えるだけでは、古いプロセスや古い生成設定が使われ続ける可能性があります。起動成功の最低条件は、ログにリスニング確立またはコア稼働の情報が表示され、プロセスがすぐ終了せず、ローカルポートがリスニング状態になり、その後のリクエストがプロキシの出力へ進むことです。
最初のエラーが消えて別のエラーが出ても、修正が無効だったとは限りません。設定の読み込みには順序があり、パーサーは前の段階を通過して初めて次の段階を確認します。たとえばJSONのカンマを修正して初めてフィールド名の誤りが現れたり、10808を解放して初めて証明書名のエラーが表示されたりします。新しく現れた最初のエラーを分類して対処してください。
- カーネルを停止し、約2秒待って、新旧ログの時刻範囲を明確に分けます。
- 同じノードを再起動し、ポート、プロトコル、ルーティング、DNSを同時に変更しないでください。
bind、invalid character、unknown field、x509など、元のキーワードがログに再び表示されないことを確認します。- 通常のWebページを1つ開き、ログに新しい接続記録が生成されるか確認します。
- 単一ノードが正常に動作することを確認してから、カスタムルーティング、TUN、LANリスニングなどの追加設定を戻します。
ログにwarningが大量にあります。すべて対処する必要がありますか?
必要ありません。まずプロセスを終了させた最初のerrorまたはfailedを処理します。古いフィールド、互換動作、DNSフォールバックに関するwarningは起動を妨げない場合があるため、接続結果と合わせて判断してください。
どのノードに切り替えても10808が使用中と表示される場合は?
重複して動作しているクライアントと残留カーネルを完全に終了し、「設定」→「パラメータ設定」→「基本設定」のSOCKSポートを一時的に11808へ変更します。起動に成功すれば、元のポートが別のプロセスに使用されていたと確認できます。
購読更新後に突然unknown fieldが表示された場合の確認方法は?
まずクライアントとカーネルを更新し、続けて購読を再更新して設定を生成します。一部のノードだけが失敗する場合は、そのノードを個別に削除して再インポートしてください。すべて失敗する場合は、全体のカスタム設定とルーティング断片を確認します。
v2rayNGに起動失敗としか表示されず、詳しい原因が分からない場合は?
接続を切断し、右上のメニューから「ログ」を開きます。メイン画面に戻ってもう一度起動し、すぐに最新の記録を確認してください。最初のエラーの前後約10行をコピーし、ステータスバーの表示だけを記録しないでください。
v2flyNGのトラブル対応手順は異なりますか?
基本的な順序は同じです。まずログの時刻を確認し、最初の設定またはリスニングエラーを探します。違いは、v2flyNGがv2flyカーネルを使用する点です。Xray専用のフィールドはそのまま流用できない場合があるため、現在のカーネルが実際に出力する内容を基準にしてください。
再利用できるトラブル記録の例
クライアント:v2rayN
カーネル:Xray
発生時刻:2026-07-31 14:26
障害範囲:すべてのノード
最初のエラー:failed to listen TCP on 127.0.0.1:10808
今回の変更:SOCKSポートを11808に変更
再テスト結果:カーネルが継続稼働し、ローカルリスニングを確立
クライアント、カーネル、発生時刻、障害範囲、最初のエラー、1回の変更内容を記録すると、同じ操作の繰り返しを減らせます。次に似た問題が起きたときは、まずキーワードと障害範囲を比較し、再インストールや全設定のリセットから始める必要はありません。ログによるトラブル対応の要点は、英語メッセージをすべて暗記することではなく、エラーがどの段階で発生したかを確認し、各回で検証する変数を1つに絞ることです。