v2rayN・v2rayNGが起動直後に落ちる原因と対処法|.NETランタイム・権限・設定ファイルを確認

v2rayN・v2rayNGが起動直後に終了する原因を解説。.NETランタイムや展開先の問題、AndroidのVPN権限・バッテリー制限、破損した設定のリセット方法を紹介します。

この記事の要点

まず、メイン画面の終了、コアの起動失敗、バックグラウンドサービスの停止を切り分けます。Windowsではランタイム、完全な展開、フォルダーへの書き込み権限を順に確認します。AndroidではVPNの許可を確認してから、バックグラウンドのバッテリー制限を調べます。初期状態の設定なら起動でき、以前の設定に戻すと終了する場合に限り、設定の復元を試します。作業前にバックアップを取り、1回につき変更は1つにしましょう。

1. 終了する段階を見極め、すぐにデータを消さない

発生した時刻を記録してから、もう一度再現します。「起動直後に落ちる」とは、アプリを開いた直後にメイン画面またはプロセス全体が消える状態です。接続時のエラー、Webページが開けない、画面ロック後に切断されるといった症状は、別の段階で起きています。v2rayNはデスクトップクライアントで、実際のネットワーク接続は独立したコアプログラムが担います。メイン画面が残ったままコアだけ終了しても、クライアントのクラッシュとは限りません。以下ではデスクトップ版の操作をWindowsを例に説明します。

メインプログラムの起動 設定の読み込み コアの読み込み プロキシの適用 バックグラウンド実行
確認できた症状優先して確認今は避けること
ダブルクリックしても画面が出ない、またはすぐ閉じるランタイム、プログラムのアーキテクチャ、アプリケーションエラーの記録サブスクリプションを何度も変更する
メイン画面は正常だが、接続するとエラーになるコアファイル、ポート、ノード設定デスクトップランタイムがないと決めつける
Androidで接続をタップすると未接続に戻るVPNの許可、他のVPN、サービスログすぐにアプリのストレージを消去する
画面ロックからしばらくすると接続が止まるバックグラウンド実行とバッテリー制限初回起動時のクラッシュとして扱う

Windowsでは、まずタスクバーの通知領域にアプリアイコンが残っているか確認します。次に「タスクマネージャー」→「詳細」でプロセスを確認してください。ウィンドウを閉じてもプロセスが残っている場合は、通知領域に最小化されているだけかもしれません。クライアントとWindowsまたはAndroidのバージョン、「起動直後に終了する」のか「接続時に終了する」のかを記録すると、原因を絞り込みやすくなります。

2. v2rayNが起動しない場合は.NETデスクトップランタイムとアーキテクチャを確認

起動時に.NETのインストールを求めるメッセージが表示されたら、まずその内容に対応します。.NETはマネージドアプリの実行に必要な環境です。Windowsのデスクトップアプリでは、通常Desktop Runtime(デスクトップランタイム)を使用します。SDKや別種のランタイムを入れただけでは、アプリが必要とする環境を満たしたとは限りません。自己完結型のパッケージには必要な実行環境が含まれているため、この手順をそのまま当てはめる必要はありません。

  1. 起動時のメッセージを確認する

    メッセージに記載されたFramework、Version、Architectureを控えます。たとえば、Microsoft.WindowsDesktop.App、8.0.0、x64が必要と表示された場合は、同じアーキテクチャの.NET 8デスクトップランタイムを確認してください。適当に最新のメジャーバージョンをインストールするのは避けましょう。

  2. インストール済みの環境を確認する

    「ターミナル」またはPowerShellを開き、次のコマンドを実行します。Microsoft.WindowsDesktop.Appに対応するバージョンを確認してください。コマンド自体が見つからない場合も、アプリの破損と判断せず、インストールパッケージの説明や起動時のメッセージと合わせて確認します。

  3. プログラムのアーキテクチャを確認する

    Windowsの「設定」→「システム」→「バージョン情報」を開き、「システムの種類」を確認します。クライアント、ランタイム、実際に動作するアーキテクチャを一致させてください。x64とARM64は、どちらも「64ビット」だからといって同じものではありません。

  4. インストール後に再度起動する

    該当バージョンのリリース説明に従い、必要なMicrosoftデスクトップランタイムをインストールします。古いプロセスを終了してから、アプリを開き直してください。異なるメジャーバージョンで常に代用できるわけではなく、実行できるかどうかはアプリのランタイム設定によります。

dotnet --list-runtimes

プログラムのフォルダーにv2rayN.runtimeconfig.jsonがある場合は、テキストエディターでフレームワークとバージョンの記載を確認できます。ただし、メッセージを消すためにファイルを直接変更しないでください。前述の.NET 8は起動メッセージの読み方を示す例で、すべてのv2rayNに共通する要件ではありません。メッセージが表示されない場合は、Win + Rを押してeventvwr.mscと入力し、「Windowsログ」→「アプリケーション」を開きます。問題が起きた時刻をもとに、「.NET Runtime」または「Application Error」をソースとする記録を探してください。

3. 完全に展開してから起動し、書き込み権限とコアファイルを確認

まず、完全な圧縮ファイルを、現在のアカウントで書き込み可能な独立したフォルダーに展開します。例:C:\Users\Public\Documents\v2rayN-test。展開したフォルダー内のメインプログラムを起動してください。圧縮ソフトのプレビュー画面から直接実行したり、実行ファイルだけをコピーしたりしないでください。メインプログラムには同じフォルダー内の依存ファイル、リソース、コアファイルが必要な場合があります。ファイルが1つ欠けただけでも起動に失敗することがあります。

空のフォルダーでは起動でき、元のフォルダーでは起動できない場合、システムの実行環境はおおむね正常です。古い設定やファイルを引き続き比較してください。反対に、どちらのフォルダーでも同じ段階で終了するなら、ランタイム、アーキテクチャ、システムのエラー記録から調べます。サブスクリプションの復元を急ぐ必要はありません。

4. 実際のエラーに応じて対処し、接続失敗を起動直後の終了と混同しない

最初に出たエラーと、その前後数行を残してください。その後に続く多数の停止メッセージは、最初の障害が引き起こした結果である可能性があります。以下のエラー文にはファイルパス、ポート、例外の接頭辞などが含まれる場合があります。原因を調べる際は実際のログを基準にし、最後の1行だけを検索しないでください。

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

原因:アプリが必要とする.NET環境が見つかりません。対処:同じメッセージに記載されたフレームワーク名、バージョン、アーキテクチャを確認し、対応するランタイムをインストールしてからアプリを再起動します。

エラー:Access to the path is denied.

原因:プロセスが指定されたファイルやフォルダーにアクセスできません。対処:エラーに記載されたパスが設定またはログの保存先か確認します。書き込み可能な場所で試し、セキュリティ機能の履歴とファイルのアクセス権も確認してください。

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

原因:待ち受けに使うアドレスまたはポートが、別のプロセスに使用されています。対処:まず使用中のプロセスを調べ、重複したインスタンスを終了します。ポートを変更する場合は、このローカルプロキシを使用するアプリの設定も更新してください。

エラー:System.Text.Json.JsonException

原因:読み込んだJSONデータの形式が想定と異なるか、設定の構造が現在のバージョンに対応していません。対処:例外に記載されたパスと位置から対象ファイルを特定し、バックアップ後に新しい設定で動作を確認してください。ユーザーフォルダー全体を削除しないでください。

ログにローカルポート10808のバインド失敗が明記されている場合は、ターミナルで次のコマンドを実行して調べます。このポート番号は確認方法の例であり、すべてのバージョンで固定の初期値ではありません。結果の最後の列はプロセスID(PID)です。「タスクマネージャー」→「詳細」で該当プログラムを確認し、正体の分からないシステムプロセスを終了しないでください。

netstat -ano | findstr :10808

クライアントを重複して起動していた場合は、1つだけ残してください。複数のインスタンスを同時に動かす必要がある場合は、v2rayNの「設定」→「パラメーター設定」で、そのバージョンのローカル待ち受けポートの項目を探し、別の未使用ポートに変更してからコアを再起動します。変更前の値を記録してください。システムプロキシや他のアプリが古いポートを参照したままだと、「アプリは落ちないがインターネットに接続できない」という別の問題が起きます。

5. v2rayNGが接続後に終了する場合は、まずVPNの許可を確認

v2rayNGはXrayコアを使用するAndroidクライアントです。AndroidのVPNサービスを通じて端末の通信を処理します。システムに表示されるVPN接続の確認は端末上の許可であり、サブスクリプションへのログインではありません。初回接続時にキャンセルした場合、通常はサービスを開始できない状態になりますが、アプリのメインプロセスがクラッシュした証拠にはなりません。

  1. 他の接続を停止する

    まず、システムのVPN接続を使用している他のアプリを停止してから、v2rayNGを開きます。通常、同じAndroidユーザーまたは仕事用プロファイルでは、一般的なVPN接続を同時に制御できるサービスは1つです。

  2. VPNの許可を再度求める

    有効な設定を選んで接続ボタンをタップします。システムの「ネットワーク接続の要求」が表示されたら、内容を確認して許可してください。表示されない場合は、システムのVPN設定で既存の接続を確認します。

  3. 常時接続の設定を確認する

    Android 14標準の設定を例に、「設定」→「ネットワークとインターネット」→「VPN」を開き、別のアプリで「常時接続VPN」または「VPN未接続時の通信をブロック」が有効になっていないか確認します。変更前に元の状態を記録し、必要に応じて調整してください。

  4. 2種類の終了を見分ける

    接続に失敗してもメイン画面が残る場合は、まずサービスやコアのエラーを確認します。メイン画面も消えてホーム画面に戻る場合は、アプリのバージョン、OSのバージョン、クラッシュした時刻を記録してください。メーカーによって設定メニューの名称は異なる場合があります。システム設定で「VPN」と検索すると見つけやすくなります。

接続する前にアプリを開いただけで終了する場合、VPNの許可は通常、最初に調べる項目ではありません。まず、インストールパッケージのアーキテクチャが端末に適しているか、空き容量が十分か、アップデートやデータ復元の直後に問題が起きたかを確認します。別のパッケージを試す前に、エクスポート可能な設定をバックアップしてください。アンインストールと同時に診断の手がかりまで消さないようにしましょう。

6. 画面ロック後に停止する場合は、バッテリー制限とバックグラウンド動作を個別に確認

画面を点灯したまま約5分間テストし、次に同じ時間だけ画面をロックして、接続通知が消えるか記録します。これは比較テストの方法であり、端末の性能を保証するものではありません。画面ロック後やバックグラウンドに切り替えた後だけ停止する場合は、.NETの再インストールやノードのプロトコル変更ではなく、まずシステムのバックグラウンド制限を確認してください。

画面をロックするとすぐ切断される場合、どこを変更すればよい?

Android 14標準の設定で「設定」→「アプリ」→「すべてのアプリを表示」→「v2rayNG」→「アプリのバッテリー使用量」を開き、「制限なし」を選択します。メーカー独自のシステムでは「バックグラウンドでの実行を許可」などの名称になっている場合があります。変更後に再接続し、画面点灯時とロック時の状態を比べてください。

省電力モードを有効にしたときだけ停止する場合、どう確認する?

システムの省電力モードを一時的に無効にし、他の設定は変えずに再テストします。問題が解消した場合は、使用中の機種でv2rayNGだけバックグラウンド制限を緩和できるか確認してください。バッテリー関連の設定を一度にすべて変更しないでください。

通知が表示されない場合、サービスはクラッシュした?

まずアプリに戻って接続状態を確認し、次にシステムのVPN状態を確認します。Android 13以降では通知の許可が表示に影響します。通知が見えなくてもサービスが終了したとは限りません。「設定」→「アプリ」→「v2rayNG」→「通知」で許可の状態を確認できます。

最近使ったアプリの一覧からスワイプして終了した後に切断されるのは、クラッシュ?

これは、操作していないときにクラッシュする現象とは異なります。システムによっては、タスクを終了するときにバックグラウンドサービスも制限されます。まずアプリをスワイプ終了せずに画面ロックのテストを行い、その後、メーカー独自のバックグラウンド実行や自動起動の設定を確認してください。

バッテリー最適化が影響するのは、バックグラウンドでの動作です。形式に誤りのあるノード設定を直す機能はありません。ログに認証失敗や接続タイムアウトが記録されている場合は、ノードのパラメーター、ネットワーク経路、サブスクリプションの状態を確認してください。Androidの接続問題を何でもシステムによる「バックグラウンド停止」のせいにしないようにしましょう。

7. 設定のリセットは最後に行い、項目ごとに復元して確認

新しい設定では起動でき、以前の設定を使うと毎回終了する場合に限り、設定の破損や移行時の互換性を疑います。サブスクリプションはノード一覧を取得するためのアドレスで、クライアントのすべての設定を保存するものではありません。サブスクリプションのURLだけを保存しても、ルーティング、画面のオプション、カスタム設定を完全には復元できないことがあります。バックアップファイルには接続情報が含まれる場合があるため、安全な場所で保管してください。

  1. 元のコピーを残す

    デスクトップ版では、メインプログラムとコアを終了してから、ポータブル版ならプログラムフォルダー全体をコピーします。そのバージョンがユーザーフォルダーにデータを保存する場合は、ログやバージョンごとの説明から実際の保存場所を確認してバックアップしてください。メインプログラムだけをコピーしても不十分です。

  2. 初期状態の環境を用意する

    デスクトップ版は独立した新しいフォルダーと新しいデータで試し、古いデータベースをすぐに読み込まないでください。新しいフォルダーから起動しても、ユーザー単位のデータが再利用される場合があります。Android版でメイン画面を開けるなら、必要な設定を先にエクスポートします。エクスポートできない場合は、急いでストレージを消去しないでください。

  3. 一度に1項目だけ復元する

    まず、有効と確認済みのノードを1つだけ復元し、起動と停止をテストします。次にサブスクリプションを追加し、最後にカスタムルーティングとTUNの設定を戻してください。復元するたびに再起動し、終了が初めて再現した手順を記録します。

  4. 復元後の状態を確認する

    メイン画面が開くこと、接続できること、停止後に再び起動できることを確認します。Androidでは画面ロックもテストしてください。Windowsではシステムプロキシが現在の実際の待ち受けポートを参照しているか確認します。

初期状態の環境でも終了する場合は、何度もリセットするより、追加の情報を集めるほうが効果的です。バージョン、アーキテクチャ、OSのバージョン、終了時刻、再現手順を記録します。Windowsでは該当するイベント記録を、Androidでは取得可能なクラッシュ情報を添えてください。共有する前に、サブスクリプションのURL、ユーザー識別情報、サーバーの認証情報、個人のパスを隠します。情報がそろえば、実行環境の不足、権限の問題、特定バージョンの不具合のどれに対処すべきか判断しやすくなります。

クライアントをダウンロード