V2Rayのノードに接続できない・タイムアウトする場合の対処法|ローカル環境・サブスクリプション・ノード・システムを順に確認

ノードのタイムアウトは、ノード自体の故障とは限りません。ローカルの時刻とポート、サブスクリプション、ノード設定、システムプロキシやファイアウォールを順に確認し、原因別の対処法を解説します。

この記事の概要

サブスクリプションをインポート済みなのに、v2rayNの実接続遅延テストがタイムアウトする、ブラウザーでページを開けない、またはコアの起動に失敗する場合に役立つ内容です。まずローカルのリスニングを確認し、次にサブスクリプションとノード、最後にシステムプロキシとネットワーク制限を調べます。一度に変更する項目は一つに絞り、コマンドの出力と同時刻のログから原因の層を特定しましょう。最初からクライアントを再インストールする必要はありません。

まず切り分ける:ポートに接続できない、ノードがタイムアウトする、ブラウザーがプロキシを使っていない

現在の設定はそのまま残し、選択中のノード、テスト時刻、エラー内容を記録します。一括速度テストは止め、ノードを一つ選んで一度だけ再現したら、メイン画面のログ欄で該当する記録を確認してください。一括テストでは多数の接続が同時に発生するため、別のノードのエラーを今回の問題と取り違えやすくなります。

v2rayNはGUIクライアントで、実際の接続は選択中のコアが処理します。画面が開きサブスクリプションが表示されても、コアが起動しているとは限りません。リストの遅延値も、テスト方式を区別して確認しましょう。TCP接続テストで分かるのは、対象ポートに接続できる可能性までです。実接続テストでは、プロキシプロトコルやハンドシェイク、テスト先URLも関係します。

アプリからのリクエスト ローカルリスニング ルール判定 ノードとのハンドシェイク 接続先からの応答
症状優先して確認する項目この症状だけでは判断できないこと
すべてのノードがすぐに失敗し、ログにリスニング失敗と表示されるローカルポート、コアプロセス、設定の読み込みサブスクリプション全体が無効とは限らない
TCPテストでは数値が表示されるが、実接続テストはタイムアウトするプロトコル設定、TLS、テスト先URL、サーバー側の外向き接続TCPで接続できても、プロキシが使えるとは限らない
実接続テストは成功するのに、ブラウザーでは失敗するシステムプロキシ、ブラウザー独自のプロキシ、ルーティングルールブラウザーで失敗しただけでは、ノードがオフラインとは判断できない
特定のノードだけが継続してタイムアウトするそのノードのアドレス、ポート、アカウント、サービスの稼働状況通常はシステム全体の設定変更から始める必要はない

第1段階:システム時刻、ローカルポート、コアの起動を確認する

以下では、Windows版v2rayNを例に説明します。画面の表記はバージョンによって異なる場合があります。ポートは実際の設定値を使ってください。まず「設定」→「パラメーター設定」でローカルのリスニング設定を開き、SOCKSまたは混合リスニングのポートを確認します。リモートノードのサーバーポートをシステムプロキシに入力しないでください。

10808
以下の例で使うローカルSOCKSポート
15秒
コマンド例の最大タイムアウト時間
4段階
順に原因の範囲を絞り込む
  1. システム時刻を同期する

    Windowsの「設定」→「時刻と言語」→「日付と時刻」を開き、「時刻を自動的に設定する」を有効にして「今すぐ同期」をクリックします。日付とタイムゾーンも確認してください。時刻が大きくずれていると、証明書の有効期間判定や一部のプロトコル認証に影響することがあります。タイムゾーンが異なる表示だけで、システム時刻が誤っているとは限りません。

  2. リスニングポートを確認する

    v2rayNの「設定」→「パラメーター設定」で、リスニングアドレスとポートを確認します。この記事では、SOCKSまたは混合接続の入口が127.0.0.1:10808で待ち受けているものとします。画面に別のポートが表示されている場合は、後述のコマンドも合わせて変更してください。

  3. ポートを使用しているプロセスを特定する

    PowerShellで次のクエリを実行します。リスニング状態とPIDを確認したら、タスクリストでプロセスを照合してください。現在使っているコアのリスニングであれば通常は問題ありません。古いクライアントのインスタンスや別のプログラムが使っている場合は、競合するプログラムを正常終了するか、現在のリスニングポートを未使用の番号に変更します。

  4. コアを再読み込みする

    設定を保存し、ノードを選び直してログを確認します。必要に応じてクライアントを終了して再起動してください。ポートを変更した場合は、ブラウザー独自のプロキシ設定やコマンドラインで使うポートも更新が必要です。リスニングしていない場合は、リモートノードのテストを続けず、まずコアの起動エラーを解決してください。

Get-NetTCPConnection -State Listen -LocalPort 10808
netstat -ano | findstr ":10808"
tasklist /FI "PID eq 1234"

最後の行にある1234はPIDの例です。最初の2つのコマンドで調べたプロセス番号に置き換えてください。netstatの出力ではローカルアドレスとリモートアドレスを区別し、状態がLISTENINGであることを確認します。10808という数字が見えただけで、ポートが競合していると判断しないでください。見覚えのないシステムプロセスを強制終了するのも避けましょう。

第2段階:リストにノードが残っているかではなく、サブスクリプションの更新成功を確認する

サブスクリプション一覧には、前回保存した内容が表示されている場合があります。更新に失敗しても古いノードは残るため、「ノードが何十件もある」ことはサブスクリプションが現在有効である証拠にはなりません。まず「サブスクリプショングループ」→「サブスクリプショングループの設定」でグループのURLを確認し、「サブスクリプショングループ」から更新を実行して、結果と更新時刻を確認してください。

更新前に既存の設定をバックアップし、テストのためにすべてのグループを削除しないでください。更新後にリストが空になった場合は、まず応答内容と形式の互換性を確認します。システムプロキシを調整しても、誤ったサブスクリプションの内容が有効なノード設定に変わることはありません。

第3段階:ノード設定を確認し、ログから接続とハンドシェイクの失敗を見分ける

現在のノードをダブルクリックして編集画面を開き、サービス提供元の案内にあるパラメーターと一つずつ照合します。まずアドレスとポート、次にプロトコルとトランスポート層を確認してください。ノード名からプロトコルを推測したり、利用できるノードのTLSやトランスポート設定をほかのノードに一括適用したりしないでください。

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

原因:現在のリスニングアドレスとポートがすでに使用されている可能性があります。対処法:リスニング中のプロセスを調べ、重複したインスタンスを終了するかローカルポートを変更してから、コアを再読み込みします。

エラー:dial tcp: lookup

原因:アドレス解決エラーでよく見られるログの一部です。ログの完全な行には、通常ドメイン名と具体的なエラーも記録されています。対処法:サーバーアドレスを確認し、システムの名前解決コマンドでドメインをテストします。そのうえでコアのDNS設定を確認し、実際にどの経路で名前解決されているかを調べてください。

エラー:i/o timeout

原因:ネットワークの読み込みまたは書き込み処理のいずれかがタイムアウトした状態です。このエラーだけでサーバーが停止しているとは判断できません。対処法:同じ行または前後のログから接続先アドレスと処理段階を確認し、サーバーポートとプロキシ経由の接続先URLをそれぞれテストします。

エラー:x509: certificate has expired or is not yet valid

原因:システム時刻が異常か、サーバー証明書が有効期間外です。対処法:まず時刻を同期してください。時刻が正しいのに再発する場合は、サービス提供元に証明書の更新を依頼します。証明書検証の無効化を通常の解決策にしないでください。

サーバーのドメイン確認にはPowerShellのResolve-DnsName、ポート確認にはTest-NetConnectionを使えます。引数にはノード編集画面に表示される実際のサーバーアドレスとリモートポートを指定し、ローカルの10808は指定しないでください。システムの名前解決に成功しても、確認できるのはシステム側の経路だけです。コアが独自のDNSを使う場合は、コアのログも確認してください。

判断の目安:TCPで接続できたら、次はハンドシェイクの設定を確認する

サーバーポートのテストには成功するのに、プロキシリクエストが安定して失敗する場合は、認証、TLS、トランスポート層の設定を優先して確認します。ローカルポートの設定を何度も変える必要はありません。TCP接続が成功しても、サーバー側の帯域制限やネットワーク途中の干渉は否定できませんが、調査範囲を絞ることはできます。

第4段階:システムプロキシ設定を介さず、プロキシの入口を個別に検証する

コアのリスニングが正常であることを確認したら、PowerShellで次のコマンドを実行します。ローカルのSOCKS入口に明示的に接続するため、ブラウザーがシステムプロキシを参照しているかどうかに左右されません。ここで使う10808は、SOCKSに対応すると確認済みのポートである必要があります。HTTP専用の入口を使う場合は、後述のHTTP形式を使い、実際のポートを指定してください。

curl.exe --proxy socks5h://127.0.0.1:10808 --connect-timeout 5 --max-time 15 --head https://example.com/

socks5hは接続先ドメインの名前解決をプロキシ側に任せる指定で、接続先サイトを本機で名前解決する影響を減らせます。HTTPのステータス行が返れば、通常はこの入口経由でHTTP応答を受け取れたことを示します。ただし、リクエストがどのルールに振り分けられたかはログで確認してください。クライアントに明示的に接続しても、最終的にリモートプロキシ経由で通信するとは限りません。

curl.exe --proxy http://127.0.0.1:10809 --connect-timeout 5 --max-time 15 --head https://example.com/

2つ目のコマンドはHTTP入口の例にすぎません。10809はすべてのバージョンにある固定ポートではありません。その入口を有効にしていない場合は、例をそのまま使わないでください。テスト先には、現在のネットワークやサービスの利用条件でアクセスできるサイトを選びます。1つのURLで失敗したら、別の独立したサイトでも確認し、接続先サービス側の障害をノードの問題と取り違えないようにしましょう。

それでもタイムアウトする場合:ネットワークを比較し、必要な情報を記録して調査を終える

4段階の確認後、同じPCと同じノードを使い、現在のネットワークとスマートフォンのテザリングでそれぞれテストします。ネットワークだけを切り替え、DNS、ノード設定、ルーティングモードを同時に変更しないでください。特定のネットワークでだけ失敗する場合は、そのネットワークのDNS、外向き接続の制限、認証ページ、回線品質を優先して確認します。どのネットワークでも同じノードだけ失敗する場合は、サービス提供元に問い合わせてください。

記録項目記録する内容
クライアントとコアクライアントの実際のバージョン、コアの種類とバージョンを記録する。「最新版」だけでは不十分
発生時刻タイムゾーンを添えて分単位まで記録し、サーバーログとの照合に役立てる
ローカルでの確認結果リスニングポート、プロセス名、プロキシを明示したコマンドの実行結果
ネットワークの比較現在のネットワークとテザリングで再現するか、特定のノードだけ失敗するか
エラーの前後関係同じリクエストの前後数行のログを残し、認証情報とサブスクリプショントークンは隠す

まとめ:各手順で再現可能な結果を記録する

ローカルでリスニングしていること、サブスクリプションの更新が有効なこと、ノード設定が一致していること、プロキシを明示したリクエストが成功すること。この4点は、単独の遅延値よりも原因の判断に役立ちます。接続が復旧したら、一時的に変更したテストルールやネットワーク設定を元に戻し、動作する設定を保存してください。テスト値をさらに下げるために、安定した経路を変更し続ける必要はありません。

クライアントをダウンロードWindows · Android · macOS · Linux