· トラブル対処 · 約10分

V2Rayのノードに接続できない・タイムアウトする場合の原因と対処法

ローカルポート、システムプロキシ、サブスクリプションの有効性、システム時刻、通信設定の順に原因を切り分け、v2rayNとv2rayNGそれぞれの対処法を紹介します。

この記事の要点

サブスクリプションを追加したのにノードがタイムアウトする場合や、クライアントは接続済みなのにWebページを開けない場合に役立つ内容です。まずコアとローカルの待ち受けを確認し、通信がプロキシを経由しているかを検証します。その後、サブスクリプション、時刻、通信設定、サーバーを確認してください。一度に変更するのは1項目だけにし、同じ接続先で再テストすると、ローカルの問題をノード障害と誤認しにくくなります。

1. ポートへの接続とプロキシの利用可否を切り分ける

「タイムアウト」は、処理のどこかが制限時間内に完了しなかったことを示すだけで、サーバー停止を意味するわけではありません。ブラウザーのリクエストは通常、アプリのプロキシ設定、ローカルの受信ポート、ルーティングルール、リモート接続、プロトコルのハンドシェイク、接続先サイトを経由します。いずれかの段階に問題があると、ページが読み込み中のままになることがあります。

TCPingで確認できるのは、TCPポートに接続できるかどうかです。実際の接続テストでは、プロキシプロトコルとテスト先も使われます。前者が成功してもVMessやVLESSの認証が正しいとは限らず、後者が失敗してもテスト先に到達できないだけの場合があります。どの段階で失敗したかを記録してから、ノードを変更するか判断しましょう。

10808
ローカルプロキシポートの例(実際の値は設定画面で確認)
443
TLSでよく使われるリモートポート(ノードによって異なります)
1項目
確認する項目は毎回1つだけ変更

2. ローカルポート:コアが待ち受けているか確認する

v2rayNのウィンドウが開いていても、コアが正常に動作しているとは限りません。「設定」→「パラメーター設定」でローカルの待ち受けポートを確認し、メイン画面に戻ってログを確認してください。バージョンによって画面名が多少異なる場合があるため、現在の画面に表示されているSOCKS、HTTP、または混合待ち受けの種類を基準にします。他の解説にあるポート番号をそのまま使わないでください。

ここではWindowsのローカルポート 10808 を例にします。PowerShellで次のコマンドを実行してください。該当する待ち受けレコードが表示された場合、そのポートを使用しているプログラムがあります。さらに、それが現在動作中のコアかどうかも確認します。

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

netstat -ano | findstr :10808

1つ目のコマンドでプロセスIDが返された場合は、Get-Process -Id プロセス番号 でプログラムを確認できます。2つ目のコマンドには接続レコードが表示されることもあります。LISTENING の行を確認してください。ポート番号だけを根拠に、正体のわからないプロセスを終了しないでください。クライアントが二重起動していないか、前回のコアが残っていないかを先に確認します。

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

原因:Windowsで待ち受けポートが別のプロセスに使われています。対処法:プロセスを確認して重複起動したインスタンスを終了するか、クライアントのローカルポートを変更します。手動プロキシの設定も合わせて変更してください。

エラー:bind: address already in use

原因:現在のアドレスとポートを別のプログラムがすでに使用しています。コアの二重起動でよく発生します。対処法:まずプロキシを停止し、重複したインスタンスを終了してから再起動します。新しいログに同じエラーが出ていないか確認してください。

Androidのv2rayNGでは、まず停止をタップしてから接続を再開し、「メニュー」→「ログ」を確認します。システムからVPN接続の許可を求められた場合は、許可しないと通信を中継できません。システムのVPN機能を使う別のアプリを同時に起動すると、接続が置き換わることがあります。また、通知領域にアイコンが表示されていても、リモートノードが利用可能とは限りません。

3. プロキシの適用:ブラウザーの通信がローカルに届いているか

ローカルの待ち受けが正常なら、次はシステムプロキシを確認します。v2rayNでは、タスクトレイのアイコンを右クリックし、「システムプロキシ」→「システムプロキシを自動設定」を選択します。Windowsでは「設定」→「ネットワークとインターネット」→「プロキシ」を開き、手動プロキシのアドレスとポートが現在のクライアントの設定と一致するか確認できます。macOSでは「システム設定」→「ネットワーク」→使用中のネットワークサービス→「詳細」→「プロキシ」を確認してください。

  1. 接続するノードを選択

    v2rayNのメイン画面で、テストするサーバーを現在の接続先に設定します。v2rayNGでは対象の設定を選んでから再接続してください。速度テスト一覧の行に表示された結果を、現在接続中のノードの結果と取り違えないようにしましょう。

  2. プロキシモードを確認

    まずシステムプロキシでブラウザーの動作を確認してから、TUNを検討します。TUNを有効にしている場合は、原因を絞るため一度無効にしてください。v2rayNGのVPNモードでは、対象アプリが除外リストに入っていないかも確認します。

  3. リクエストを1回送信

    ログ表示を消去してから、決めたHTTPSページにアクセスし、そのドメインのリクエストが記録されるか確認します。切り分けのために一時的にログレベルを上げてもかまいませんが、確認後は通常のレベルに戻してください。

  4. ルーティングの経路を確認

    リクエストがコアに届いているのに直接接続される場合は、現在のルーティングを確認します。同じページで一時的にグローバルプロキシモードに切り替えて再テストし、確認後は元のルーティングルールに戻してください。ノードは同時に変更しないでください。

コマンドラインを使えば、システムプロキシの設定を介さずにローカルの入口を直接テストできます。以下は 10808 がSOCKSプロキシとして待ち受けている場合のみ使用できます。HTTP専用ポートの場合は、対応するHTTPプロキシのオプションに変更してください。WindowsではPowerShell環境によってコマンドの別名が影響する場合があるため、curl.exe を使用します。

curl.exe --proxy socks5h://127.0.0.1:10808 --connect-timeout 10 --max-time 20 -I https://example.com/

判定:明示的なプロキシ接続に成功したら、適用設定を確認

このコマンドでHTTPレスポンスヘッダーを取得できるのに、同じサイトをブラウザーで開けない場合は、ブラウザー独自のプロキシ設定、拡張機能、システムプロキシを優先的に確認します。この段階ではUUID、TLS、サーバーのポートを変更しないでください。

4. サブスクリプションの有効性:更新成功でもノードが有効とは限らない

サブスクリプションURLは設定を配布するもので、プロキシサーバーそのものではありません。更新に成功しても、取得した内容を解析できたことしかわかりません。通信量の上限、有効期限、ノードの移転、サーバー障害は、引き続き接続に影響します。一方、サブスクリプションの更新に失敗していても、すでに追加済みのノードが使える場合があります。両者は分けてテストしてください。

5. システム時刻と通信設定:ログを見ながら項目ごとに確認

システム時刻が大きくずれていると、証明書の有効期間の判定に影響し、VMessの時刻検証にも影響することがあります。Windowsでは「設定」→「時刻と言語」→「日付と時刻」を開き、自動設定を有効にして時刻を同期します。Androidではシステム設定で「日付と時刻」を検索し、自動設定を有効にしてください。タイムゾーンが異なるだけで時刻が誤っているとは限りません。実際の日付と時刻が正確かを確認します。

続いて、サービス提供元が案内する設定一式を確認します。V2Rayはプロトコルやプロキシコアのエコシステムに関する名称で、v2rayNはクライアントです。どのノードでも任意のコアや通信方式で接続できるわけではありません。v2rayNGはXrayコアを使用します。v2flyNGで同じ問題が起きる場合も、ノード名だけで判断せず、v2flyコアが設定に対応しているか確認してください。

確認する項目よくある設定ミス対処法
アドレスとリモートポート古いドメイン名、移行前のポート、またはローカルポートをリモートポートに入力最新のサブスクリプションから再インポートし、サービス提供元の案内と照合する
VMess / VLESS の認証情報UUIDの期限切れ、コピー漏れ、プロトコルの選択間違い設定全体を再インポートし、他のノードから認証情報を流用しない
TLSとSNIサーバー名の不一致、証明書の期限切れ、システム時刻の誤りserverNameと証明書のドメイン名を照合し、証明書の検証は無効にしない
WebSocketpathまたはHostがサーバー側の設定と不一致パス、英字の大文字・小文字、Hostを正確に照合し、スラッシュを独自に追加しない
gRPCserviceNameまたは通信方式の誤り元の設定に合わせてサービス名とTLS設定を戻す
VLESS + REALITY公開鍵、shortId、serverName、またはflowの不一致パラメーター一式とコアの対応状況を確認し、通常のTLS設定を流用しない

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

原因:クライアントの時刻が正しくないか、サーバー証明書が有効期間外です。対処法:まずシステム時刻を同期します。時刻が正しい場合は、証明書の問題をサービス提供元に報告してください。証明書の検証を無効にしても解決にはなりません。

エラー:websocket: bad handshake

原因:WebSocketのアップグレード要求に想定した応答がありません。パス、Host、リバースプロキシ、サーバー設定が一致していない可能性があります。対処法:最新のサブスクリプションと設定を項目ごとに照合し、サーバー管理者に転送設定を確認してもらいます。

エラー:i/o timeout

原因:ネットワークの読み取りまたは書き込みがタイムアウトしています。この行だけでは、サーバー、DNS、接続先サイトのどれが原因か判断できません。対処法:前後のログから接続先と失敗した段階を確認し、別のネットワークから同じノードに接続して比較します。

6. ネットワークとサーバー:比較テストで原因を絞り込む

ローカルの確認が済んでから、リモート側を調べます。Windowsでは以下のコマンドで、リモートのTCP接続性を確認できます。example.com をノードサーバーのドメイン名に、443 を設定に記載された実際のリモートポートに置き換えてください。これは接続性の確認例であり、利用可能なノードではありません。

Resolve-DnsName example.com
Test-NetConnection -ComputerName example.com -Port 443

DNSで名前を解決できても、結果が正しいとは限りません。TCPテストに成功してもプロキシ認証が通ったことにはなりません。ログに名前解決の失敗が明記されている場合は、システムDNS、クライアントのDNS、実際の名前解決経路を確認してください。タイムアウトだけを見て、DNS、ルーティング、通信方式を一度に変更しないでください。

判定:複数端末・複数ネットワークで失敗する場合はサーバー側を確認

最新の設定を使っても、2台の端末と互いに独立した2つのネットワークの両方で失敗し、他のノードは正常な場合は、機密情報を伏せたログを添えてサーバー管理者に連絡してください。待ち受けポート、ファイアウォール、証明書、リバースプロキシ、外向きネットワークを確認してもらいます。クライアントを何度も再インストールしても、この段階の問題は通常解決しません。

7. よくある質問と問い合わせ時の確認項目

TCPingでは接続できるのに、実接続がタイムアウトするのはなぜ?

TCPingで確認できるのは、ポートに接続できることだけです。実接続テスト時のコアのログを確認し、プロトコル認証、TLS、通信設定、テスト先を照合してください。ブラウザーまたは明示的なプロキシコマンドで別の固定接続先にアクセスし、テスト先の障害とノードの障害を切り分けます。

v2rayNGは接続済みなのに、どのアプリでも通信できない場合は?

まず正しい設定が選択されているか確認し、ログに外向き接続のエラーがないか調べます。次に、アプリごとのプロキシ設定で対象アプリが除外されていないか確認してください。他のVPN機能を使うアプリを一時停止して再接続し、Wi-Fiとモバイルデータでそれぞれ再テストします。

タイムアウトを解決するには、TUNを有効にする必要がありますか?

必要ありません。TUNはより多くのアプリの通信を中継する機能で、UUID、リモートポート、サーバー証明書の設定ミスは修正できません。まずローカルプロキシの入口とノードが使えることを確認し、その後システムプロキシに従わないアプリの問題に対処してください。

再起動すると一時的に直るのに、しばらくすると切断される場合は?

切断した時刻を記録し、スリープ、ネットワークの切り替え、バッテリー制限、コアプロセスの二重起動との関連を確認します。Androidでは「設定」→「アプリ」→「v2rayNG」を開き、バッテリーとバックグラウンド実行の権限を確認してください。項目名や操作方法は、端末のシステムに表示される内容に従います。

サービス提供元に問い合わせる際は、失敗した時刻とタイムゾーン、クライアントとコアのバージョン、OS、ネットワークの種類、テスト先、失敗前後の必要最小限のログを記載します。サブスクリプションURL全体、UUID、アクセスtokenを含むスクリーンショットは送らないでください。サーバーアドレスや個人のIPアドレスも、公開範囲に応じて伏せてください。

クライアントをダウンロードOSに合ったインストーラーを選択