v2rayNが起動直後に終了する・v2rayNGが起動時にクラッシュする場合の対処法|ランタイム不足と権限の確認

v2rayNやv2rayNGが起動直後に落ちる原因と対処法をOS別に解説。.NET Desktop Runtime、macOSのセキュリティ設定、AndroidのVPN権限やバッテリー最適化を確認します。

この記事の概要

まず、ウィンドウが終了するのか、コアの起動に失敗するのか、バックグラウンド接続がシステムに停止されるのかを切り分け、ランタイム、インストールパッケージのアーキテクチャ、権限を確認します。v2rayNデスクトップ版とv2rayNG Android版を対象に、設定を残したまま調べる手順、実行できる確認コマンド、復旧後の再テスト項目を紹介します。v2flyNGのAndroid権限も、同じシステム設定を参照して確認できます。

1. ウィンドウの終了・コアの停止・接続失敗を切り分ける

「ダブルクリックしても反応しない」と「接続を押してもインターネットにつながらない」は、同じ問題ではありません。v2rayNは管理画面で、XrayやV2Flyはプロキシ通信を処理するコアです。画面が開いてもコアがポートの待ち受けに成功したとは限らず、コアが正常に起動しても、ノードのサーバーアドレス、ポート、認証情報が正しいとは限りません。まず、どの段階で止まるのかを確認すれば、再インストールを繰り返さずに済みます。

システムがプログラムを読み込む 画面が設定を読み込む プロキシコアが起動する ローカルポートが待ち受ける リモート接続が確立する

Windowsでは、まずタスクマネージャーでv2rayNのプロセスがすでに動いていないか確認し、次にタスクバーの隠れているインジケーターを確認します。メインウィンドウを閉じても、終了せず通知領域に最小化されている場合があります。すぐにクラッシュと判断しないでください。再試行する前に通知領域のメニューから既存のインスタンスを終了し、複数のインスタンスが同じ設定フォルダーや待ち受けポートを使わないようにします。

2. Windows:パッケージの種類に応じて.NETランタイムを確認

v2rayN Desktop版とWPF版は異なるUI構成のため、アプリ名だけでは依存関係を判断できません。WPFのフレームワーク依存版には、対応する.NET Desktop Runtimeが必要です。自己完結型のパッケージには通常、必要なランタイムが含まれています。まずダウンロードしたパッケージの説明を確認し、展開フォルダー内のv2rayN.runtimeconfig.jsonを調べてください。ファイルの記載を基準にし、「最新のランタイムを入れる」だけで解決すると決めつけないでください。

  1. アーキテクチャを確認

    Windowsの「設定」→「システム」→「システム情報」を開き、「システムの種類」を確認します。x64またはARM64に合ったパッケージを選んでください。OS名だけを見てファイルを選ばないようにしましょう。

  2. すべて展開する

    既存のインスタンスを終了し、圧縮ファイルを現在のユーザーが書き込めるフォルダー(例:C:\Users\Public\Documents\v2rayN-test)にすべて展開します。圧縮ソフトのプレビュー画面から実行したり、実行ファイルだけをコピーしたりしないでください。

  3. 依存関係を確認

    メモ帳でv2rayN.runtimeconfig.jsonを開きます。フレームワーク項目にMicrosoft.WindowsDesktop.Appが含まれている場合は、記載されたメジャーバージョンとアーキテクチャに合うDesktop Runtimeをインストールします。このファイルがない場合は、パッケージのリリース情報を確認してください。ファイルがないことだけを根拠に、依存関係が不足しているとは判断できません。

  4. ランタイムを確認

    PowerShellでdotnet --list-runtimesを実行します。たとえば設定で8.0系が求められている場合は、対応するアーキテクチャに互換性のあるMicrosoft.WindowsDesktop.App 8.0.xがあるか確認してください。Microsoft.NETCore.Appだけでは、Desktop Runtimeがインストール済みとはいえません。

  5. 再起動する

    対応するランタイムをインストールしたら、クライアントを再起動します。コマンドでdotnetが見つからない場合は、コマンドのパスやインストール状態に問題がある可能性があります。「設定」→「アプリ」→「インストールされているアプリ」も確認し、このコマンドの結果だけで判断しないでください。

エラー:You must install or update .NET to run this application.

原因と対処:必要なランタイムが見つかっていません。メッセージに表示されたFramework、Architecture、バージョンを確認し、該当するコンポーネントをインストールしてください。x86ランタイムをx64依存関係の代わりに使うことはできません。

エラー:A fatal error occurred. The required library hostfxr.dll could not be found.

原因と対処:ランタイムが不足しているか、パッケージのファイルが不完全な可能性があります。まずパッケージの種類を確認してすべて展開し直し、その後、対応するランタイムを修復してください。不明なサイトからDLLだけをダウンロードしてシステムフォルダーに置かないでください。

まだ一瞬で終了する場合は、Win + Rを押してeventvwr.mscを入力し、「Windowsログ」→「アプリケーション」を開きます。起動時刻に対応するApplication Errorまたは.NET Runtimeのイベントを探し、障害が発生したアプリ、例外コード、障害モジュールを記録してください。何度もダブルクリックするより、原因の手がかりになります。

3. 設定と権限:別のフォルダーで最小構成をテスト

アップデート直後のクラッシュは、古い設定、データベースへのアクセス、フォルダーの権限が原因かもしれません。まずクライアントを終了し、元の設定フォルダーと残したいサブスクリプショングループをバックアップしてから、新しいフォルダーで完全なパッケージを実行します。テスト時に古いデータベースやルール一式、ほかの設定をすぐ戻すと、元のデータが原因かどうか判断できません。

4. macOS:アーキテクチャとシステムによるブロックを確認

macOS版のv2rayNでは、Windows用の.NET Desktop Runtimeインストーラーは使いません。まずAppleメニューの「このMacについて」を開き、チップがApple SiliconかIntelかを確認して、対応するビルドを選びます。アーキテクチャが合わないと、起動できない、互換レイヤーが必要になるなどの問題が起きることがあります。ハードウェアに合ったパッケージを優先してください。

  1. 既存のインスタンスを終了し、展開またはディスクイメージのマウントを済ませたら、パッケージの説明に従ってアプリを「アプリケーション」に移します。ダウンロード中の一時ファイルから何度も起動しないでください。
  2. 初回起動時に開発元を確認できないという警告が表示されたら、まず配布元とアプリ名全体を確認し、「システム設定」→「プライバシーとセキュリティ」で該当するブロックの記録を調べます。配布元が信頼できると確認できた場合に限り、そのアプリに対してシステムの「このまま開く」を使用してください。
  3. アプリが破損していると表示されても、すぐにターミナルからセキュリティ属性を再帰的に削除しないでください。正しいアーキテクチャの完全なパッケージを入手し直します。それでも解決しない場合は、「コンソール」アプリで同時刻のクラッシュレポートを確認してください。
  4. まず通常のプロキシモードで起動し、画面とコアが正常に動くか確認します。TUNなど追加の権限が必要な機能を使う場合に限り、クライアントとシステムの案内に従って許可してください。複数の条件を同時に変えないようにします。

「システムに起動をブロックされた」場合と「プログラムの起動後にクラッシュした」場合は分けて記録します。前者はシステムの警告文を保存し、後者はクラッシュレポートからプロセス名、例外の種類、発生時刻を記録してください。個別アプリの問題を回避するために、システム全体のセキュリティチェックを無効にしないでください。

5. Android:VPNの許可とバックグラウンドのバッテリー制限を切り分ける

v2rayNGはXrayコア、v2flyNGはV2Flyコアを使用します。どちらもAndroidのVPNサービスを通じて通信を処理できますが、対応するプロトコルの範囲は完全には同じではありません。クライアントを変更すればすべてのクラッシュが解決するわけではありません。特にノードが特定のコア機能に依存する場合は注意してください。

アイコンをタップしてすぐ終了し、接続操作まで進んでいない場合は、まずインストールパッケージのアーキテクチャ、システムとの互換性、アプリデータを確認します。VPNの許可は通常、サービスの起動時に求められます。一方、バッテリー制限はバックグラウンドでの動作に影響しやすい設定です。この3つを切り分ければ、不要な権限変更を減らせます。

6. ウィンドウは正常だが接続できない:コアとポートを確認

v2rayNのウィンドウが開いたままで、接続を押したときにエラーが出る場合は、コアのログを確認します。よくある原因は、ローカルの待ち受けポートの競合、コアファイルの不足、現在のコアが対応していないノード設定項目です。この段階で.NETを追加インストールしても、通常は解決しません。

エラー:bind: address already in use

原因と対処:システム上の別のプロセスが、同じアドレスとポートで待ち受けています。重複しているインスタンスを終了するか、クライアントの待ち受け設定で空いているポートに変更し、そのポートを使うアプリの設定も合わせて変更してください。

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

原因と対処:Windowsでよくあるソケット競合のメッセージです。待ち受けているプロセスを特定してから対処してください。ポート番号を見ただけで、正体のわからないシステムプロセスを強制終了しないでください。

「設定」→「パラメーター設定」でローカルの待ち受けポートに10808が設定されている場合、次のPowerShellコマンドで待ち受け中のプロセスを確認できます。このポート番号は例で、すべてのバージョンの既定値ではありません。クライアントに別のポートを設定している場合は、コマンド内の数字も合わせて変更してください。

Get-NetTCPConnection -LocalPort 10808 -State Listen |
  Select-Object LocalAddress, LocalPort, OwningProcess

出力されたOwningProcessをもとに、タスクマネージャーの「詳細」タブでPIDを確認します。待ち受けの記録がなければ、ログに戻ってコアが正常に起動したか調べてください。ログがリモート接続の段階まで進み、タイムアウトや認証失敗が発生している場合は、サーバーアドレス、ポート、UUID、通信方式、安全性の設定を確認します。これはクライアントの起動直後のクラッシュとは別の問題です。

7. よくある質問と復旧後の確認

.NETをインストール済みなのに、なぜ起動できないのですか?

ランタイムの種類、メジャーバージョン、アーキテクチャを確認してください。WPFのフレームワーク依存版にはDesktop Runtimeが必要で、基本のRuntimeだけでは足りません。別のメジャーバージョンで代用できるとも限りません。起動時のメッセージとruntimeconfigファイルを基準に確認しましょう。

毎回、管理者として実行する必要がありますか?

通常のシステムプロキシモードでは、常に管理者権限で実行する必要はありません。まず現在のユーザーが書き込めるフォルダーにプログラムを置き、権限を修正してください。追加権限が必要なTUN機能は、使用中のバージョンの案内に従います。あらゆる起動エラーを権限不足のせいにしないでください。

Androidでデータを消去すれば解決しますか?

一部のローカルデータの不具合を切り分けられますが、保存済みのノードや設定は削除されます。まずバックアップを取り、アプリを強制停止してキャッシュを消去してください。それでもリセットが必要な場合は、ノードを一つだけ再インポートしてテストします。最初から古い設定をすべて戻さないでください。

サブスクリプションを更新すると、起動時のクラッシュは直りますか?

サブスクリプションの更新で変わるのは主にノード設定です。ランタイム不足やシステムによる起動ブロックは解消できません。設定の読み込み時やコアの起動時に問題が起きている場合に限り、該当ノードの項目を確認します。ウィンドウ自体が開かない場合は、まずアプリの起動段階を調べてください。

問題を報告する前に、OSのバージョン、CPUアーキテクチャ、クライアントの完全なバージョン番号、パッケージの種類、選択中のコアのバージョン、エラーの発生時刻を記録してください。「アイコンを押すとすぐ終了」「接続後にコアが停止」「画面ロック後に切断」のどれに当たるかも明記し、該当時間のログは個人情報を隠して添付します。「開けない」とだけ書いたり、設定ファイル全体を公開したりしないでください。

クライアントをダウンロードプラットフォームとパッケージを選択