v2rayN、v2rayNG、v2flyNGが起動済みなのに、ブラウザがタイムアウトする、特定のサイトだけ開けない、またはすべてのリクエストに失敗する場合に適しています。確認順序は、ローカル待受、トラフィックの取り込み、DNS、ルーティング、ノードの出口、ログです。各手順の後に個別テストを行い、どの区間で問題が起きているかを特定します。
「接続済み」が示す層をまず切り分ける
クライアント画面の実行状態は通常、コアプロセスが起動したこと、またはAndroidでローカルネットワークインターフェースが確立したことを示すだけです。リモートノードとのハンドシェイク完了や、ブラウザの通信がプロキシへ送られていることまでは意味しません。確認時は、アプリのリクエスト、ローカルプロキシポート、DNS名前解決、リモートノード、対象サイトの5区間に分けて考えます。
v2rayN 7.14.3の一般的な設定では、ローカルSOCKSポートは通常 127.0.0.1:10808、HTTPポートは通常 127.0.0.1:10809 です。ポートは「設定」→「パラメータ設定」→「基本設定」で変更できるため、実際の確認では現在のクライアント画面に表示される値を使い、初期値をそのまま流用しないでください。
まずブラウザ拡張機能の独自プロキシ設定を一時的に無効にし、システムプロキシや仮想NICを制御する可能性のある他のプログラムを終了してから、クライアントを再起動します。これは問題を直接修復するためではなく、並行する通信経路を減らすためです。アプリごとにシステムプロキシと独自のSOCKSポートを使い分けると、テスト結果が食い違うことがあります。
結論:実行状態だけではリクエストテストの代わりにならない
ローカルポートが待ち受けていない、またはブラウザがリクエストをそのポートへ送っていない限り、リモートノードが利用可能かどうかはまだ検証できません。
手順1:ローカルポートとシステムプロキシを確認する
Windowsでは、まずPowerShellを開き、v2rayNのローカルSOCKSポートへのTCP接続を確認します。ポートを変更済みの場合は、コマンド内の 10808 を「パラメータ設定」に表示される値へ置き換えてください。テスト成功が示すのはポートが待ち受けていることだけで、リモート出口が正常とは限りません。
Test-NetConnection 127.0.0.1 -Port 10808
結果の TcpTestSucceeded は True になるはずです。False の場合は、まずv2rayNのメイン画面でノードが1つ選択されていることを確認し、「サーバー」→「アクティブサーバーに設定」を実行してからコアを再起動します。それでも失敗する場合は、ログでポート競合や設定の読み込みエラーを直接確認してください。
ローカルポートが正常なら、v2rayNのシステムプロキシモードを確認します。通常のブラウザでテストする場合は、トレイメニューから「システムプロキシを自動構成」を選択します。Windowsの「設定」→「ネットワークとインターネット」→「プロキシ」には、クライアントが設定したローカルプロキシが表示されるはずです。クライアント終了後も古いプロキシアドレスが残る場合は、いったんシステムプロキシを無効にしてからクライアントを再起動します。
- 確実に利用できるサーバーを1つ選択し、アクティブサーバーに設定します。
- ローカル待受アドレスが
127.0.0.1で、SOCKSとHTTPのポートが重複していないことを確認します。 - 「システムプロキシを自動構成」を有効にし、ブラウザを完全に終了してから再起動します。
- 独自のプロキシルールを設定していないブラウザウィンドウで、異なる2つのドメインへアクセスします。すべて失敗するのか、特定のドメインだけ失敗するのかを記録してください。
手順2:ブラウザを介さずプロキシ出口を直接テストする
ブラウザには古いプロキシ設定、DNSキャッシュ、拡張機能のルールが残っている可能性があります。問題がブラウザの前後どちらにあるかを判断するため、ローカルプロキシポートへ直接リクエストを送ります。macOSとLinuxではターミナルから curl を使用できます。Windowsでも対応するコマンドラインツールがインストールされていれば同じテストを実行できます。
curl --proxy socks5h://127.0.0.1:10808 https://v2rayroot.com/ -I --connect-timeout 10
socks5h の h は、ドメイン名をSOCKS経由で名前解決することを示します。HTTP/2 200、HTTP/1.1 200、または正常なリダイレクトが返れば、ローカルポート、ノード、リモートDNSが少なくとも1回の完全なリクエストを処理できたことになります。この場合、ページが開けない原因はブラウザのプロキシ、キャッシュ、拡張機能、システム側の取り込みである可能性が高くなります。
コマンドがすぐに 127.0.0.1 への接続失敗を示すなら、問題はローカル待受にあります。約10秒待ってタイムアウトする場合、ローカルポートはリクエストを受け付けたものの、リモートノードまたは接続先から応答が返っていないことが多いです。1つのドメインだけ失敗する場合は、すぐに全設定を変更せず、ルーティングルール、名前解決、対象サービスの状態を確認してください。
| テスト結果 | 経路の判定 | 次の手順 |
|---|---|---|
| ローカルポートへの接続が拒否される | コアが待ち受けていない、またはポート番号が間違っている | 10808を確認し、コアを再起動してポート競合を調べる |
| 10秒間の接続タイムアウト | ノードのハンドシェイクまたは出口に異常がある | ノードを切り替え、コアのログを確認する |
| コマンドは成功するがブラウザは失敗する | プロキシのコア経路は正常 | ブラウザとシステムプロキシの設定をリセットする |
| 一部のドメインだけ失敗する | DNSまたはルーティングルールの適用に問題がある | 一時的にグローバルプロキシで比較する |
手順3:DNSとルーティング分岐を確認する
DNS障害では、ノードの遅延テストには数値が出るのに、ドメイン名を入力するとページが読み込み中のままになることがあります。遅延テストはノードアドレスへ直接接続している場合がありますが、ブラウザでは対象ドメインの名前解決も必要です。まずシステムのターミナルで nslookup v2rayroot.com を実行してアドレスを取得できることを確認し、前述の socks5h コマンドでローカルとプロキシ側の名前解決結果を比較します。
IPアドレスにはアクセスできるのにドメイン名ではアクセスできない場合は、DNSを優先して確認します。v2rayN 7.xでは「設定」→「パラメータ設定」からDNS関連の設定を開けます。トラブルシューティング中は複雑なルールを一度に複数追加せず、まずクライアントの基本設定に戻して保存し、コアを再起動してください。システム側ではDNSキャッシュも削除できます。Windowsでは ipconfig /flushdns を実行し、その後ブラウザを完全に終了して再起動します。
一部のサイトだけ失敗する場合は、ルーティングモードを一時的にグローバルプロキシへ切り替えて比較します。グローバルモードでは正常でルールモードでは失敗するなら、ノード自体はおそらく利用可能で、問題はドメインルール、IPルール、または直接接続の出口にあります。カスタムルールでは優先順位に注意してください。上位のルールから先に一致するため、範囲の広すぎる直接接続ルールによって対象リクエストがプロキシを迂回することがあります。
- すべてのドメインで失敗:システムDNS、クライアントのDNS設定、ノードのドメイン名を解決できるか確認します。
- ドメインは失敗するがIPは成功:問題をDNSに絞り、当面はプロトコル設定を変更しません。
- グローバルモードは成功:カスタムルーティングルールを1つずつ無効にし、誤った直接接続またはブロック条件を特定します。
- グローバルモードでも失敗:ノードのハンドシェイク、トランスポート層、サーバー出口の確認に戻ります。
遅延が120ミリ秒なのに、なぜページはタイムアウトするのですか?
遅延テストで確認できるのは、特定の探測リクエストだけです。curl --proxy socks5h://127.0.0.1:10808 で完全なHTTPSリクエストを実行し、ノードが実際に出口として機能するか確認してください。
グローバルプロキシに切り替えると正常に戻る場合、どこを変更すべきですか?
「設定」→「ルーティング設定」でカスタムルールの順序を確認します。まず最近追加したドメイン、GeoIP、直接接続ルールを無効にし、1グループずつ戻して再テストしてください。
サブスクリプション更新後、突然すべてのノードで接続できなくなった場合は?
アクティブサーバーが削除または置換されていないか確認し、ノードを選び直してアクティブサーバーに設定します。ノードパラメータ全体が変わった場合は、更新後にコアを再起動して新しい設定を読み込む必要があります。
Androidで起動済みと表示されるのに、アプリがネットワークへ接続できない場合は?
v2rayNGまたはv2flyNGでは、まずアプリ別プロキシとカスタムルーティングを無効にし、単一ノードだけでグローバルテストを行います。利用できることを確認してから、対象アプリと分岐ルールを戻してください。
手順4:ログからノード、プロトコル、TLSの障害を判断する
ローカルポートとトラフィックの取り込みが正常になった後は、ログがリモート側の問題を判断する主な手がかりになります。v2rayNではメイン画面のログ欄からコアの出力を確認でき、「設定」→「パラメータ設定」でログレベルも変更できます。確認には通常 info で十分です。情報が足りない場合だけ一時的に詳細度を上げ、終了後は元に戻してください。大量の重複ログが判断を妨げるのを防げます。
VMessやVLESSというプロトコル名だけでは、設定が正しいとは判断できません。サーバーアドレス、ポート、ユーザー識別子、トランスポート方式、TLS、SNI、パス、サービス名がサーバー側と一致している必要があります。サブスクリプションのインポートでは通常これらの項目が入力されますが、1項目でも手動変更すると、TCP接続後にTLSまたはプロトコル認証で失敗することがあります。
エラー:failed to listen TCP on 127.0.0.1:10808
原因と対処:ローカルポートが別のプロセスによって使用されています。重複起動しているクライアントを終了するか、「設定」→「パラメータ設定」で未使用のポートに変更し、保存後にコアを再起動してください。
エラー:failed to find an available destination
原因と対処:送信先サーバーのアドレスを解決できないか、利用可能な宛先がありません。ノードアドレスのつづりを確認し、DNSの基本設定に戻してからコアを再起動してください。
エラー:lookup server.example: no such host
原因と対処:ノードのドメイン名を解決できません。現在のネットワークでDNSが利用できるか確認し、サブスクリプションを更新して、ノードアドレスが手動で途中まで削られていないことを確認してください。
エラー:TLS handshake timeout
原因と対処:クライアントはTLS接続を開始しましたが、規定時間内にハンドシェイクが完了していません。サーバーポート、SNI、トランスポート方式、システム時刻を確認し、同じサブスクリプション内の別ノードでも比較してください。
エラー:connection reset by peer
原因と対処:接続はリモート側に到達したものの、相手から強制的にリセットされました。プロトコルとトランスポートパラメータが一致しているか確認し、他のノードも試して、単一ノードの障害とローカルネットワークの制限を切り分けます。
同じサブスクリプション内の3ノードのうち1つだけ失敗する場合は、まずそのノードの設定またはサーバー状態を疑います。すべてのノードでまったく同じローカルポートエラーが出るなら、先に端末側の設定を修正してください。すべてのTLSノードが失敗する場合は、システムの日付、タイムゾーン、分単位の時刻も正確か確認します。大きな時刻ずれがあると、証明書の有効期間判定に失敗することがあります。
結論:同じエラーなら確認範囲を絞れる
単一ノードのエラーならノードパラメータを、全ノードのエラーならローカルポート、DNS、システム環境を確認します。無作為にノードを切り替え続けるより、エラーが同一かどうかを比較する方が原因を特定しやすくなります。
手順5:最小構成に戻し、機能を1つずつ追加する
前の4手順で原因を特定できない場合は、最小構成で基準環境を作ります。直近に有効なサブスクリプションから更新したノードを1つだけ残し、カスタムDNS、ルーティングルール、アプリ別プロキシ、TUNを無効にして、システムプロキシだけを有効にします。クライアントを再起動し、まずローカルポート、次にプロキシリクエスト、最後にブラウザの順でテストします。
最小構成で正常になったら、決めた順番で機能を戻します。DNS、ルーティング分岐、ブラウザまたはアプリ単位のルール、最後にTUNの順です。各機能を1つ戻すたびに同じ2つのテストドメインへアクセスし、どの段階で失敗し始めたか記録します。これにより、数十個のパラメータを推測で変更せず、問題を1つの設定層に絞り込めます。
Androidでv2rayNGまたはv2flyNGを使う場合も同じ考え方で確認します。まず単一ノードを選び、カスタムルーティングを無効にして通常のウェブページが開くことを確認し、その後アプリ別設定を戻します。v2rayNGはXrayコア、v2flyNGはv2flyコアを使用します。同じサブスクリプションをインポートしても、コアの対応範囲や具体的なトランスポートパラメータの違いにより、結果が異なる場合があります。
- ノードを1つ、基本DNS、システムプロキシまたはデフォルトのネットワーク取り込みだけに戻します。
127.0.0.1:10808または現在の設定ポートへ接続できることを確認します。socks5hを使ったリクエストを実行し、ドメイン名の解決と出口接続が同時に成功することを確認します。- ルーティングルールを戻し、グローバルモードとルールモードの違いを比較します。
- 最後にTUN、アプリ別の対象範囲、その他の高度な設定を戻します。
| 問題の区間 | 典型的な症状 | 重点的な対処 |
|---|---|---|
| ローカル待受 | 10808への接続が拒否される | コアの起動、設定形式、ポート競合 |
| トラフィックの取り込み | コマンドは成功するがブラウザは失敗する | システムプロキシ、ブラウザ拡張機能、古い設定 |
| DNS | IPにはアクセスできるがドメイン名では失敗する | 名前解決方式、キャッシュ、ノードのドメイン名 |
| ルーティング | グローバルモードは正常だがルールモードは失敗する | ルールの優先順位、直接接続条件、ブロック条件 |
| ノードの出口 | 複数の接続先でハンドシェイクがタイムアウトする | サーバー状態、プロトコルパラメータ、TLS、SNI |