この記事は、サブスクリプションを読み込み、v2rayNを起動できるものの、接続に失敗する、ウェブページを開けない、ノードが断続的に切断されるといった問題に悩む方を対象としています。ログを一語ずつ読むのではなく、まずエラーがローカルリスニング、DNS、ネットワーク接続、TLS、ユーザー認証、ルーティングのどこで発生したかを判断し、該当する設定項目で一つずつ検証することがポイントです。
v2rayNのログに表示される3つの情報層を見分ける
v2rayNのウィンドウに表示される情報が、すべてエラーとは限りません。クライアント自身はサブスクリプション、画面の状態、システムプロキシ、コアプロセスを管理し、XrayまたはV2Flyコアは接続、プロトコル、DNS、ルーティングを処理します。アクセスログは、特定の宛先がどのアウトバウンドを経由したかを示します。これら3種類の情報は時系列上で混在するため、最後の1行だけを見ると、上流の結果を根本原因と取り違えやすくなります。
v2rayN 7.xの画面では、まずメインウィンドウ下部の情報エリアを確認します。ログの詳細度を変更する場合は、「設定」→「パラメーター設定」を開き、ログレベル、アクセスログ、コア出力に関する項目を探してください。マイナーバージョンによってラベル名が多少異なる場合がありますが、クライアントの画面から提供される設定を優先し、実行時に生成された設定ファイルを直接編集しないでください。次回コアを起動した際に、クライアントが再生成する可能性があります。
通常、1回のプロキシリクエストは、アプリケーション、ローカルリスニング、ルーティング判定、プロトコルの確立、リモート接続の順に進みます。ログ上でエラーの位置が前段にあるほど、まずはローカルポートとプロキシ設定を確認します。後段のエラーであれば、サーバーアドレス、ポート、トランスポート方式、TLS、ユーザー認証パラメーターを重点的に確認してください。
ログはどこから読み始めるべきか
まず時刻、次にレベルとモジュールを確認し、最後にエラーチェーンを末尾から前へたどります。Xrayのログでは、複数の大なり記号で呼び出し関係が示されることがあります。前半はどのモジュールが失敗を報告したかを示し、最後の部分が低レベルの原因に近いことが多いです。たとえば同じ行に「failed to process outbound traffic」と「i/o timeout」がある場合、優先して対処すべきなのは、一般的なアウトバウンド処理失敗ではなく接続タイムアウトです。
宛先アドレスも重要です。エラーの宛先がサブスクリプションのドメインなら、問題はサブスクリプション更新中に発生しています。ノードサーバーのアドレスなら、プロキシ接続の確立段階にあります。ノードが接続済みなのに特定のウェブサイトのドメイン解決に失敗している場合は、DNSまたはルーティングルールを確認します。サブスクリプション更新の一度の失敗だけで、読み込み済みの全ノードが使えないと判断しないでください。
2026/08/02 14:21:08 [Warning] transport/internet/tcp:
failed to dial TCP > dial tcp 203.0.113.10:443: i/o timeout
2026/08/02 14:21:24 [Info] proxy/http:
request to tcp:example.com:443 accepted [proxy]
上の1行目は、ノードの例示アドレスの443番ポートへTCP接続する際にタイムアウトしたことを示します。確認すべきなのは、ノードアドレス、ポート、ローカルネットワーク、リモートへの到達性です。2行目の accepted は、ローカルHTTPプロキシがアプリケーションのリクエストを受け付けたことを示すだけで、対象ページの取得成功を意味しません。同じ秒以降にプロキシのアウトバウンド失敗がないか、続けて確認してください。
| ログの手がかり | 説明 | 優先して確認する項目 |
|---|---|---|
accepted |
ローカルプロキシポートがアプリケーションのリクエストを受信 | ルーティング結果とアウトバウンドログを続けて確認 |
direct |
リクエストがダイレクト接続へ振り分けられた | ルーティングルール、ドメイン分類、ルールの順序 |
proxy |
リクエストがプロキシ接続へ振り分けられた | ノード接続、プロトコルパラメーター、リモートの応答 |
blocked |
リクエストがブロックルールに一致 | ブラックリスト、広告ルール、カスタムルールセット |
failed to listen |
コアがローカルポートをリッスンできない | ポートの競合、権限、重複起動中のプロセス |
rejected、timeout、invalid userの意味を見分ける
キーワードだけで特定できるのは障害の範囲であり、文脈なしに原因を一つへ絞ることはできません。同じ timeout でも、ノードポートに到達できない場合、DNSクエリの場合、対象サイトの応答待ちの場合があります。rejected も、ルーティングによる意図的な拒否と、サーバーによるプロトコルリクエストの拒否が考えられます。エラーを共有する際は、前後各2行以上、タイムスタンプ、モジュール名、完全なエラーチェーンを残してください。
エラー: connection rejected
原因と対処:ローカルルールまたはリモートサービスによって接続が拒否されています。同じ行に blocked、routing、VMess、VLESS のモジュール名があるか確認してください。blocked が含まれる場合はルーティングルールを確認し、プロトコルモジュールの後に表示される場合は、ノードポート、プロトコル種別、サーバーの状態を再確認します。
エラー: dial tcp: i/o timeout
原因と対処:制限時間内にTCP接続を確立できませんでした。ノードアドレスとポートの入力ミスがないことを確認し、別のネットワークでも再テストします。同じサブスクリプションで1つのノードだけタイムアウトする場合は、そのノードの回線またはポートに問題がある可能性を優先して確認してください。
エラー: context deadline exceeded
原因と対処:接続、名前解決、ハンドシェイクなどの処理が期限を超えています。前方にある DNS、TLS、transport などのモジュール名を確認し、該当する段階に応じてDNSサーバー、システム時刻、トランスポート方式、ネットワーク遅延を調べます。
エラー: invalid user
原因と対処:サーバーが現在のユーザー情報を受け付けていません。VMessとVLESSのノードでは、UUID、プロトコル種別、サブスクリプションが更新済みかを確認します。名前だけを変更せず、変更後にコアを再起動して認証段階のログをもう一度確認してください。
エラー: connect: connection refused
原因と対処:対象ホストが指定ポートへの接続を明確に拒否しています。通常は、そのポートでサービスがリッスンしていないか、ネットワークポリシーによって拒否されています。ノードポートを確認し、同じサブスクリプション内の別ノードでも比較テストを行います。
エラー: lookup server.example: no such host
原因と対処:ノードのドメインをアドレスに解決できませんでした。ドメインの綴りとローカルDNSを確認し、正常に動作するDNS設定へ切り替えてからコアを再起動します。ドメイン解決の失敗をUUIDの誤りと取り違えないようにしてください。
エラー: remote error: tls: handshake failure
原因と対処:TLSハンドシェイクがリモート側で終了しました。サーバー名、TLSの有効化、システム時刻、ノードが要求するトランスポートパラメーターを確認します。プロバイダーが設定を更新した直後なら、古いノードのコピーを使い続けず、まずサブスクリプションを更新してください。
エラー: listen tcp 127.0.0.1:10808: bind: address already in use
原因と対処:ローカルの10808ポートが別のプロセスまたは別のコアインスタンスに使用されています。重複起動しているクライアントを完全に終了するか、「設定」→「パラメーター設定」で未使用のポートへ変更し、アプリケーション側の手動プロキシポートも合わせて変更してください。
エラー: unexpected EOF
原因と対処:必要なデータを受信し終える前に接続が閉じられました。1回だけならページがリクエストをキャンセルした可能性があります。ハンドシェイクのたびに発生する場合は、トランスポート方式、TLSパラメーター、ネットワークの安定性、サーバーが意図的に切断していないかを確認します。
invalid userでUUIDだけを確認してはいけない理由
VMessとVLESSはいずれもユーザー識別子を使いますが、互換性のあるプロトコルではありません。読み込み時にプロトコル種別を誤認すると、UUIDの文字列が完全に一致していても、サーバーはリクエストを正しく処理できません。古いVMess設定には追加パラメーターが含まれる場合もあります。現在は最新のサブスクリプション内容を基準にし、記憶に頼って手動で設定を組み立てないことをおすすめします。
エラーが現在選択中のノードから出ていることも確認してください。サブスクリプション更新後、一覧に古いグループと新しいグループが同時に残ることがあります。名前が似ていても設定が同じとは限りません。現在のノード名を控え、サーバー一覧で選択行を確認してから、1つのウェブページだけにアクセスしてテストします。ほかのバックグラウンドリクエストでログが流れてしまうのを防げます。
- プロトコル種別がVMessかVLESSかを確認し、ポート番号だけでプロトコルを推測しない。
- UUIDの文字、ハイフン、先頭と末尾に空白が混入していないか確認する。
- 該当するサブスクリプショングループを更新し、古いノードのコピーを選び続けていないことを確認する。
- システムの日付、時刻、タイムゾーンを確認する。大きなずれはハンドシェイクや認証に影響する可能性がある。
- コアを再起動してから再テストし、古い接続が確認中のログに影響しないようにする。
エラーから該当する設定項目を特定する
効果的な切り分けでは、変更する変数を一つに絞ります。一度に1つの設定だけを変更し、変更後は現在のログ末尾の時刻を記録またはログをクリアしてから、同じテストリクエストを送ります。ノード、DNS、ルーティングモード、ローカルポートを同時に変更すると、接続が回復しても何が効いたのか分からず、同じ問題を再び特定しにくくなります。
まず、正常に開けることが分かっている一般的なウェブページを固定のテスト先に選び、通信を続けるダウンローダーや同期アプリを終了します。そのうえで、現在のノード、システムプロキシの状態、ローカルポート、テスト時刻の4項目を記録します。設定を切り替えた後は約15秒待ち、同じエラーが出るか確認してください。同じ段階で3回続けて発生して初めて、安定した障害として扱います。
- コアが起動しているか確認します。設定の解析エラーやローカルポートのリッスン失敗が先に出ているなら、リクエストはまだ本機の外へ出ていないため、リモートノードを調べる必要はありません。
- アプリケーションがローカルプロキシを経由しているか確認します。ウェブページにアクセスしても accepted や対象ドメインの記録がまったくない場合は、システムプロキシ、ブラウザーのプロキシ設定、またはアプリケーションがシステム設定に従っているかを確認してください。
- ルーティングの動作を確認します。対象が direct、proxy、blocked のどれに振り分けられたかによって、次に確認するのが直接接続、ノードのアウトバウンド、ブロックルールのいずれか決まります。
- ノード接続の段階を確認します。ドメイン解決、TCP接続、TLSハンドシェイク、プロトコル認証の順に確認し、前の段階を飛ばして後の段階のパラメーターを変更しないでください。
- 2つ目のノードと比較します。同じネットワーク、アプリケーション、ルーティングのままノードだけを切り替えることで、クライアント共通の設定と特定ノードの設定問題を区別できます。
| エラーが発生した段階 | 代表的なキーワード | 対応する確認項目 |
|---|---|---|
| 設定生成 | failed to parse、invalid config |
ノードのフィールド、ルーティングルールの構文、DNS設定 |
| ローカルリスニング | address already in use、permission denied |
ローカルポート、重複プロセス、実行権限 |
| ドメイン解決 | lookup、no such host |
ノードのドメイン、ローカルDNS、DNSルーティング |
| ネットワーク接続 | timeout、refused、unreachable |
ノードアドレス、ポート、ローカルネットワーク、リモートの状態 |
| TLSハンドシェイク | handshake failure、certificate |
サーバー名、TLSの有効化、システム時刻 |
| ユーザー認証 | invalid user、invalid account |
プロトコル種別、UUID、サブスクリプションの新旧状態 |
| ルーティング | blocked、direct、proxy |
ルールの順序、ドメインルール、アウトバウンドタグ |
ログは正常なのにウェブページを開けない場合の確認項目
ログに accepted と表示されても、リクエストがローカルプロキシに届いたことしか分かりません。その後に proxy が表示され、明らかなエラーがないのにページを開けない場合は、DNSの応答、ブラウザー独自のプロキシ方針、対象サイトへの接続を確認してください。ブラウザーによっては独自のDNS機能を使う場合があります。また、コマンドラインツールがシステムプロキシを自動的に読み取るとは限りません。そのため、「あるアプリは使えるが、別のアプリは使えない」という状況は、通常ノード全体の障害ではありません。
Windowsでv2rayNのシステムプロキシを有効にすると、システム設定に従うデスクトップアプリは該当プロキシを使用します。手動でプロキシを設定するプログラムには、クライアントが現在リッスンしているアドレスとポートを入力する必要があります。ローカル混合ポートが10808と表示されているなら、画面に表示された実際の値を使い、古い記事に10809と書かれているからといってそのまま入力しないでください。ポートが一致しないと、v2rayNのログに該当リクエストがまったく記録されないことがあります。
ルーティングルールによって、「接続は成功したのにアクセスできない」ように見えることもあります。たとえば対象ドメインが direct に一致していて、現在のネットワークからその宛先へ直接接続できない場合、コアは失敗したリクエストを自動的にプロキシへ切り替えません。blocked に一致すれば、ルールに従ってブロックされます。アクセスログのアウトバウンドタグを確認するほうが、システムプロキシを何度も切り替えるより早く原因を特定できます。
ノードの遅延値は表示されるのに、なぜウェブページがタイムアウトするのか
遅延テストと実際のウェブリクエストでは、対象やトランスポート経路が完全には同じでない場合があります。ウェブページのリクエストに対応するログを確認し、proxy に振り分けられていること、続いてTLS、DNS、対象サイトのタイムアウトが発生していないことを確認してください。
ブラウザーでは開けるのに、ターミナルのコマンドは接続に失敗するのはなぜか
ターミナルのプログラムがシステムプロキシを読み取らない可能性があります。まず、そのプログラムのプロキシ設定方法を確認し、アドレスを127.0.0.1、ポートをv2rayNの画面に表示されている現在のリスニングポートに設定してください。ブラウザーでの結果だけを根拠に判断しないでください。
ログに accepted が出続けるのは異常なループか
まず対象ドメインを確認します。システムサービス、ブラウザーのバックグラウンドタブ、同期アプリは継続的にリクエストを送信します。該当アプリを閉じると記録が止まるなら、通常のアクセスログであり、コアのループエラーではありません。
サブスクリプション更新が timeout なのに、既存ノードは使えるのはなぜか
これはサブスクリプションURLへのリクエストが失敗したことを示しており、保存済みノードがすぐ無効になったわけではありません。サブスクリプションURLが完全か確認し、サブスクリプション設定で更新リクエストが現在のプロキシを経由する必要があるかを確認してから、更新を単独で実行してください。
ポートを変更したら、すべてのアプリが切断された場合
ローカルポートを変更しても、手動設定のプロキシを使うアプリは自動で追従しません。「設定」→「パラメーター設定」で新しいポートを確認し、関連アプリにも反映します。最後にコアを再起動して、リクエストを再送してください。
異なるプラットフォームとコアのログを比較する方法
Windows、macOS、Linuxでデスクトップ版を使う場合、画面表示はバージョンによって多少異なりますが、切り分けの順序は同じです。まずクライアントがコアを正常に起動したか、次にローカルリスニング、ルーティングの動作、プロキシのアウトバウンドを確認します。Androidのv2rayNGはXrayコア、v2flyNGはV2Flyコアを使用します。ログの表現は異なる場合がありますが、TCP、DNS、TLS、認証、ルーティングという段階は対応付けて確認できます。
あるコアの完全なエラー文が、別のコアでも一字一句同じになることを期待しないでください。あるバージョンでは context deadline exceeded と表示されても、別のバージョンでは同じ状況を timeout とだけ表示することがあります。比較すべきなのは、解析、接続、認証のどの段階でエラーが発生したかです。サブスクリプションにVLESSなどの設定が含まれる場合は、現在のクライアントとコアのバージョンが該当する設定フィールドに対応していることも確認してください。
| 対象プラットフォーム | クライアントとコア | ログで確認するポイント |
|---|---|---|
| Windows | v2rayNデスクトップ版 | システムプロキシ、ローカルポート、コアの起動、ルーティングタグ |
| macOS | 対応するv2rayNデスクトップ版 | システムネットワークプロキシ、権限、コア出力 |
| Android | v2rayNGまたはv2flyNG | VPNによる通信の引き継ぎ状態、現在の設定、コアログ、アプリごとのルール |
| Linux | 対応するv2rayNデスクトップ版 | デスクトップのプロキシ設定、環境変数、ローカルリスニング、権限 |
ログを共有するときに残すべき情報
障害記録には、クライアントのバージョン、コアの種類、OS、発生時刻、選択中のプロトコル、エラー前後数行、試した手順を含めます。サーバーアドレス、UUID、サブスクリプションURL、その他の認証情報はそのまま公開せず、一貫したマスキング文字列に置き換えてください。ただし、ポート、プロトコル、トランスポート方式、エラー構造は残します。これらがないと、どの段階の問題か判断できません。
プラットフォーム: Windows
クライアント: v2rayN 7.x
コア: Xray
症状: システムプロキシを有効にするとウェブページがタイムアウト
再現時刻: 14:21:08
現在のプロトコル: VLESS
ノードアドレス: server.example
ノードポート: 443
主なエラー: dial tcp server.example:443: i/o timeout
試したこと: サブスクリプションを更新、別のノードに切り替え、その他の設定は変更しない
ログ分析で重要なのは、テキストをできるだけ多く集めることではなく、時系列を組み立てることです。ユーザーが何をしたか、リクエストがどの層に入ったか、どの段階で停止したか、どの項目を変更すると結果が変わったかを確認します。この流れで調べれば、rejected はルーティングまたはリモート側の拒否、timeout は具体的な接続段階、invalid user はプロトコルと認証パラメーターに結び付き、設定項目を手当たり次第に行き来せずに済みます。