v2rayNが起動しても、プロキシコアが動作しているとは限りません。Windows版を対象に、起動の流れに沿って最初の有効なエラーを確認し、待ち受けポート、JSON設定、プロトコルの互換性、コアファイルを順に調べます。まずコアを起動できる状態にしてから、システムプロキシ、DNS、ルーティングを確認しましょう。異なる段階の問題を混同せずに対処できます。
まず失敗箇所を特定:プロセス、設定、待ち受け
v2rayNは設定・操作用の画面で、通信処理はXrayやV2Flyなどのコアが担います。起動時には、実行ファイルの確認、設定の生成、プロセスの起動、ローカルポートへのバインドが順に行われます。どの段階で失敗しても「起動失敗」やコアの終了を繰り返す状態になりますが、原因に応じて対処法は異なります。
クライアントのログ表示を開き、現在のログを保存してから、もう一度起動します。今回の操作時刻を目印に、最初に現れる failed、error、またはプロセス起動時の異常を探してください。末尾の「プロセスが終了しました」は多くの場合、結果を示すだけです。本当の原因はその前の行にあることが多いため、特にコロンの後に続く詳細なエラーまで確認しましょう。
- 選択中の設定、コア名、ログに記録された実行ファイルのパスを控えます。
- 最後の状態表示だけでなく、最初のエラーと前後数行をコピーします。
- 設定は一度に一つだけ変更し、再起動後のログと比較してエラーが変化したか確認します。
ポート競合:PIDを調べてから、プロセス終了かポート変更を判断
ログに bind、address already in use、またはWindowsのソケット使用中を示すメッセージが表示されたら、該当するローカルアドレスとポートを確認します。クライアントを重複して起動している、前のコアが終了していない、別のアプリが同じポートを使用している、といった理由で新しいコアが待ち受けできないことがあります。
エラー:bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.
原因と対処:同じ待ち受けアドレスとポートがすでに使用されています。使用中のプロセスを調べ、問題がないことを確認してから、そのアプリを通常の手順で終了してください。同時に使う必要がある場合は、いずれかのポートを変更します。
ここでは 10808 と 10809 を例に確認します。これらは設定例であり、すべてのバージョンの既定値や、二つの入口を同時に有効にする必要性を示すものではありません。実際にバインドしようとしているポートとクライアントの設定を確認してください。
PowerShellで次のコマンドを実行します。出力された OwningProcess がPIDです。続けて2つ目のコマンドでプロセス名とパスを確認します。プロセス情報の一部は、管理者権限がないと取得できない場合があります。
Get-NetTCPConnection -State Listen -LocalPort 10808,10809 -ErrorAction SilentlyContinue |
Select-Object LocalAddress,LocalPort,OwningProcess
Get-NetTCPConnection -State Listen -LocalPort 10808,10809 -ErrorAction SilentlyContinue |
ForEach-Object { Get-Process -Id $_.OwningProcess } |
Select-Object Id,ProcessName,Path -Unique
- クライアントが重複起動している場合は、余分なインスタンスを通知領域から通常の手順で終了してください。同名のプロセスをすべて強制終了するのは避けましょう。
- ポートを変更する場合は、「設定」→「パラメーター設定」でローカルの待ち受け項目を確認します。項目名はバージョンによって異なるため、実際の画面を確認してください。
- ポートを変更したら、手動で設定したブラウザーのプロキシ、コマンドラインのプロキシ、システムプロキシも合わせて変更します。変更しないと、引き続き古いポートに接続します。
- アドレスの競合ではなくアクセス権限不足のエラーなら、システムの予約済みポートやローカルのセキュリティポリシーを確認します。すべての
bindエラーをプロセスの重複と決めつけないでください。
JSON構文エラー:まず構文を直し、その後に設定内容を確認
JSONの解析に失敗すると、コアは設定の読み込みを完了できません。よくある原因は、オブジェクト末尾の余分なカンマ、日本語の引用符、文字列内のエスケープされていないバックスラッシュ、またはサブスクリプションの内容を完全なJSON設定として読み込むことです。入力形式は、ファイルの拡張子を変えるだけでは相互に変換できません。
エラー:invalid character '}' looking for beginning of object key string
原因と対処:オブジェクトを閉じる前に余分なカンマがある可能性があります。エラー位置の前後にあるキーと値を確認し、末尾のカンマを削除して、直前の行の引用符や括弧も確認してください。
エラー:unexpected EOF
原因と対処:内容の終端に達しても、パーサーが続きの文字を期待しています。ファイルの途中で切れている、または括弧が閉じられていない場合によく発生します。設定を完全な状態で取得し直し、オブジェクトと配列の括弧が正しく閉じているか確認してください。
以下は有効なJSONの一部分を示す例であり、そのまま使えるプロキシ設定ではありません。WindowsのパスをJSON文字列に記述する場合、バックスラッシュをエスケープする必要があります。エクスプローラーでパスを扱う場合は、二重にする必要はありません。
{
"log": {
"loglevel": "warning",
"error": "C:\\v2rayN\\logs\\error.log"
}
}
- ユーザー設定をバックアップしてから、エラーが出たファイルが手動で読み込んだ設定か、クライアントが自動生成した実行設定かを確認します。
- 自動生成ファイルは、設定の切り替えや再起動時に上書きされます。一時的な出力ファイルだけを編集せず、元の設定やクライアント側の項目を修正してください。
- サブスクリプションURL、UUID、パスワード、鍵を含む設定全体を、オンラインのフォーマットツールにアップロードしないでください。共有する必要がある場合は、事前にローカルで機密情報を伏せてください。
未対応プロトコル・フィールド:フィールド名を変えるだけでなく、コアの対応状況を確認
JSON構文のチェックに通っても、設定が起動できるとは限りません。選択したコアの設定形式と機能に合っている必要があります。VMessとVLESSはプロトコル名で、REALITYは対応するコアを必要とする通信のセキュリティ方式です。任意に置き換えられるラベルとして扱わないでください。
エラー:unknown protocol: vless
原因と対処:そのプロトコルに対応していない古いコアを使っているか、想定とは異なるコアが起動している可能性があります。コアのパスとバージョンを確認し、設定全体の要件に合うコアを選んでください。VLESSをVMessに安易に書き換えるのは避けましょう。
「不明なフィールド」と「必須フィールドの不足」は分けて対処します。不明なフィールドの扱いは、コア、設定の読み込み方法、パーサーによって異なり、無視される場合もあれば拒否される場合もあります。そのため、不明なフィールドのエラーが出ないからといって、そのフィールドが反映されたとは限りません。起動ログと使用中のバージョンの設定仕様を確認してください。
| 確認項目 | 確認する内容 | 対処方法 |
|---|---|---|
| プロトコル名 | protocol のスペルとコアの対応状況を確認 | 元のプロトコルに対応するコアを使い、プロトコルを安易に変更しない |
| 通信のセキュリティ | REALITYなどの設定に必要なフィールドとバージョン要件を確認 | 提供元のパラメーターに従って設定全体を作成し直す |
| 設定の種類 | サブスクリプション、共有リンク、コア専用JSONのどれかを確認 | 対応する読み込み方法を使い、異なる形式の内容を貼り付けない |
| 実際に実行されるファイル | 起動ログのパスとバージョン表示を確認 | 新しい画面から古いコアファイルが呼び出されていないか確認 |
v2rayNGはXrayコア、v2flyNGはV2Flyコアを使用します。ただし、どちらから出力した実行設定もデスクトップ版でそのまま使えるわけではありません。移行時は、まずクライアントが対応するサブスクリプションまたは共有リンクを使い、プロトコルと通信パラメーターを確認してください。対応機能はクライアント名ではなく、実際に使用するコアのバージョンによって異なります。
コアファイルが見つからない:展開状態、アーキテクチャ、ファイルへのアクセスを確認
コアのバージョン情報さえ表示されず、ログにファイルが見つからないと出る場合は、ノードではなくプログラムファイルを確認します。クライアントの画面が起動するのは画面側のプログラムが動作していることを示すだけで、コアや関連ファイルが指定のフォルダーに揃っているとは限りません。
エラー:The system cannot find the file specified.
原因と対処:起動対象または依存ファイルのパスが存在しません。ログに記録された完全なパスを確認し、アーカイブがすべて展開されているか、コアが想定したフォルダーにあるか、ファイルが移動または隔離されていないかを調べてください。
エラー:Access is denied.
原因と対処:現在のアカウントまたはシステムポリシーによって、実行、読み取り、書き込みが拒否されています。ファイルのアクセス権、コントロールされたフォルダー、セキュリティソフトの記録を確認し、具体的なブロック理由に対処してください。すべての保護機能を無効にするのは避けましょう。
- プログラム全体を、たとえば
C:\Tools\v2rayNのような、現在のアカウントで書き込み可能な専用フォルダーに展開します。アーカイブのプレビュー画面から直接実行しないでください。 - Windowsの「設定」→「システム」→「システム情報」でシステムの種類を確認し、OSとプロセッサーのアーキテクチャに合ったパッケージを選びます。
- コアのフォルダーを変更した場合は、クライアントが実際に参照するパスを確認してください。新しいファイルを別のフォルダーにコピーしても、古いパスは自動で変更されません。
- ログにルール用のリソースファイルが不足していると明記されている場合は、該当するリソースを確認します。実行ファイルの不足とルーティング用リソースの不足を同じ問題として扱わないでください。
設定テストと再起動で修復を確認
設定自体の問題とクライアントの起動環境を切り分けるには、コアに備わっているテスト機能を使えます。次の例は、このコマンドに対応するXrayだけを対象としています。実際のコアがあるフォルダーでPowerShellを開き、まずヘルプを確認してから、保存済みの完全な設定のコピーをテストします。例のファイル名は diagnosis.json です。事前に用意してください。前述のログ用設定の断片をコピーするだけではテストできません。
.\xray.exe version
.\xray.exe help run
.\xray.exe run -test -config .\diagnosis.json
テストに使うパラメーターは、実際の実行ファイルが表示するヘルプに従ってください。Xrayのコマンドを他のコアにそのまま使わないでください。設定テストで確認できるのは設定の読み込み可否が中心で、実際の起動、ポートへのバインド、リモート接続の確認には代えられません。テストに合格しても、ポート競合やノードへの接続不可が残る場合があります。
- 単独で実行したテストプロセスを終了してから、v2rayNに戻り、現在の設定で起動します。手動で起動したプロセスが同じポートを使用し続けないようにしてください。
- ログに元のエラーが再発せず、プロセスが起動直後に終了しないことを確認します。
- ローカルの待ち受けポートを再度調べ、該当するPIDが今回起動したコアのものか確認します。
- 最後に必要なシステムプロキシまたはTUNを有効にし、ブラウザーからの通信を確認します。まず基本的なプロキシ通信ができることを確かめてから、複雑なルーティングルールを追加してください。
よくある質問:再インストール、管理者権限、ログのマスキング
再インストールしても同じエラーが出るのはなぜ?
同じ問題のある設定を再度読み込んだ場合や、古いプロセスがポートを使用中の場合、エラーが再現することがあります。古いデータを保存し、別のフォルダーに形式が正しいと確認済みの設定を用意して比較してください。その後、サブスクリプションやルールを一つずつ戻します。古い設定をすべて一度に上書きしないでください。
起動に失敗したら、必ず管理者として実行する必要がありますか?
必ずしも必要ではありません。通常のローカルプロキシの待ち受けと、昇格した権限が必要なTUN操作は分けて考えます。まずログから失敗した処理を確認してください。JSONエラーやプロトコルの非互換は、権限を上げても解消しません。該当する権限が必要だと確認できた場合にのみ、管理者としての実行を検討してください。
サブスクリプションの更新に成功したのに、コアが起動しないのはなぜ?
サブスクリプションを正常にダウンロードできたことは、内容を取得できたという意味であり、すべての項目が現在のコアと互換性があるとは限りません。設定を一つ選んで起動し、プロトコル、通信方式、セキュリティのパラメーターを確認してから、実際のコアのバージョンを調べてください。起動エラーを分析せず、サブスクリプションの更新を繰り返すのは避けましょう。
問い合わせ時に共有するログと、隠すべき情報は?
クライアントとコアのバージョン、システムアーキテクチャ、失敗した操作、最初のエラーと前後のログを共有してください。サブスクリプションURL、UUID、パスワード、鍵、個人情報を含むフォルダーのパスは伏せます。問題の段階を判断できるよう、フィールド名、エラーの原文、ローカルポートは残してください。