この記事は、v2rayNでノード接続が正常に見え、システムプロキシも有効なのに、ブラウザーやコマンドラインが直接接続になったり、タイムアウトしたり、アクセスできなかったりする場合に役立ちます。確認は3段階です。まずローカルプロキシポートが実際に待ち受けているか、次にアプリがシステムプロキシを読み取っているか、最後にDNS、ルーティング規則、ターミナルの環境変数を確認します。これにより、原因がクライアント、ローカルプロキシ設定、特定アプリのどこにあるかを切り分けられます。
まず、システムプロキシが影響する通信を整理する
「v2rayNを起動した」ことと「アプリの通信がプロキシに入った」ことは別です。v2rayNはXrayコアの起動後、ローカルのループバックアドレス上でSOCKS、HTTP、または混合インバウンドのポートを開きます。システムプロキシは、そのうちの1つをOSの設定に登録します。実際にその設定を読み取るアプリだけが、リクエストをローカルポートへ渡します。ノードが接続済みと表示されても、クライアントが外向き通信できることを示すだけで、ブラウザーやターミナルなどが利用しているとは限りません。
v2rayN 7.xの一般的な構成では、ローカルSOCKSポートは127.0.0.1:10808、HTTPポートは127.0.0.1:10809です。実際のポートは「設定」→「パラメーター設定」のローカル待ち受け設定を確認してください。開始ポートを変更している場合は、テストコマンドも合わせて変更します。HTTPリクエストをSOCKSポートへ送ったり、SOCKSアドレスをHTTPとして指定したりすると、接続失敗になります。
| アプリの種類 | 通常読み取る設定 | 最初に確認する場所 |
|---|---|---|
| Chromium系ブラウザー | 通常はWindowsのシステムプロキシに従いますが、企業ポリシーやブラウザー拡張機能の影響を受ける場合があります | システムの「ネットワークとインターネット」→「プロキシ」 |
| Firefox | システムプロキシを使うことも、個別のプロキシ設定を保存することもできます | ブラウザーの「設定」→「ネットワーク設定」 |
| PowerShell、curl、パッケージ管理ツール | ツールによって環境変数やコマンド引数の読み取り方が異なるため、システム設定に自動追従すると考えないでください | HTTP_PROXY、HTTPS_PROXY、およびツールの設定 |
| v2rayNG、v2flyNG | AndroidではシステムVPNサービスを使って、選択したアプリの通信を引き受けます | アプリのプロキシ設定、アプリごとの設定、ルーティング規則 |
結論:まずアプリがローカルポートに到達しているか確認する
ブラウザーとターミナルで結果が異なる場合は、それぞれのプロキシ設定の入口を優先的に確認し、同じノードを何度も切り替えないでください。ノード、サブスクリプション、プロトコルパラメーターが同じなら、アプリがプロキシ設定を読み取っているかどうかが最も一般的な分岐点です。
まずv2rayNのローカルポートが使えるか確認する
ブラウザーを確認する前に、クライアントのポートが待ち受けていない、ポートが競合している、またはコアが正常に起動していない可能性を除外します。v2rayNで使用するノードに切り替え、メイン画面または実行ログに起動成功のメッセージがあるか確認し、現在のコアの種類も確認してください。VMess、VLESSなどのノードパラメーターはコアが処理するため、システムプロキシではサーバーアドレス、ポート、トランスポート層、ユーザー識別子の入力ミスは修正できません。
コアの起動を確認する
v2rayNのメイン画面でノードを選択してアクティブサーバーに設定し、実行ログを開きます。正常ならコアの起動とローカルインバウンドの待ち受け情報が表示されます。ウィンドウに再起動や終了が繰り返し表示される場合は、まずログに出ている設定エラーを解決してください。
待ち受けポートを確認する
「設定」→「パラメーター設定」を開き、ローカルSOCKSポートとHTTPポートを控えます。この記事の例ではSOCKSが
10808、HTTPが10809ですが、画面と異なる数字をそのまま使わないでください。システムプロキシを設定する
v2rayNの「システムプロキシ」メニューを開き、自動構成を選択します。続いてWindowsの「設定」→「ネットワークとインターネット」→「プロキシ」で、アドレスが
127.0.0.1を指し、ポートがクライアントの現在のHTTP待ち受けポートと一致しているか確認します。ループバック接続をテストする
PowerShellで
Test-NetConnection 127.0.0.1 -Port 10809を実行します。結果のTcpTestSucceededはTrueになるはずです。Falseの場合、問題はまだローカルの待ち受けまたはポート競合にあります。明示的なプロキシテストを行う
curl.exe --proxy http://127.0.0.1:10809 -I https://example.comを実行します。正常なローカルテストでは、ループバックへの接続確立は通常0.01秒未満です。リモートからの応答時間はノードの回線によって異なります。
エラー:curl: (7) Failed to connect to 127.0.0.1 port 10809
原因と対処:指定ポートを待ち受けるプログラムがありません。コアが起動していない、HTTPポートの指定ミス、または別のプログラムがポートを使用していることが主な原因です。「設定」→「パラメーター設定」でポートを確認し、コアを再起動してからもう一度テストしてください。
エラー:failed to start app/proxyman/inbound: failed to listen TCP
原因と対処:ローカルの待ち受けポートが競合しています。そのポートを使用しているプログラムを終了するか、パラメーター設定で未使用のポートに変更します。たとえばHTTPポートを10809から10909に変更し、システムプロキシも新しいポートに合わせます。
ブラウザーがプロキシを使わない場合の確認手順
明示的なcurlプロキシリクエストは成功するのに、ブラウザーが直接接続する場合、ノードとローカルポートはおそらく利用可能です。次はブラウザーがプロキシ設定を読み取る方法に焦点を当てます。古いプロセスが接続プールや起動時のプロキシ状態を保持しないよう、ブラウザーを完全に終了してから再起動してください。タブを1つ閉じるだけでは、すべてのネットワークプロセスは再作成されません。
Chromium系ブラウザーは通常Windowsのシステムプロキシを利用しますが、独立したプロキシ拡張機能、管理ポリシー、起動パラメーターによってシステム設定が上書きされることがあります。Firefoxでは独自のネットワーク設定から「プロキシなし」「システムのプロキシ設定を使用」「手動でプロキシを設定」のいずれかを選べます。Firefoxだけで失敗する場合は、「設定」→「一般」→「ネットワーク設定」でシステムプロキシを使用する設定にするか、v2rayNの現在のポートに合わせてHTTPとSOCKSのアドレスを入力してください。
- システムの手動プロキシアドレスが、無効になったLANアドレスではなく
127.0.0.1になっているか確認します。 - ポートがv2rayNの現在の設定と一致しているか確認します。特に設定フォルダーを切り替えた後は、ポートが初期値に戻ることがあります。
- プロキシ設定を書き換えるブラウザー拡張機能を一時的に無効にし、ブラウザー全体のプロセスを再起動してテストします。
- Windowsのプロキシ設定にある例外リストを確認します。対象ドメインがバイパス一覧に入っていると、直接接続されます。
- 通常ウィンドウとプライベートウィンドウをそれぞれテストします。結果が異なる場合は、拡張機能の権限やブラウザーのプロファイル設定に差がある可能性があります。
- キャッシュ済みの特定ページだけで判断せず、開発者ツールを開いて新しいHTTPSリクエストをテストしてください。
エラー:ERR_PROXY_CONNECTION_FAILED
原因と対処:ブラウザーはプロキシの使用を試みていますが、設定されたローカルアドレスへ接続できません。Windowsのシステムプロキシポートとv2rayNのHTTP待ち受けポートを確認し、コアプロセスが動作中であることを確認してください。
エラー:ERR_TUNNEL_CONNECTION_FAILED
原因と対処:ブラウザーはHTTPプロキシに接続できていますが、HTTPSトンネルを確立できていません。同じポートで明示的なcurlリクエストを実行し、実行ログにノードのタイムアウト、TLSパラメーターの誤り、ルーティングによるブロックがないか確認します。
エラー:PR_CONNECT_RESET_ERROR
原因と対処:接続確立中にリセットされています。このメッセージだけでシステムプロキシの無効と判断しないでください。Firefoxをシステムプロキシ使用に変更して再試行し、v2rayNのログでリクエストがコアに入っているか確認します。
一方のブラウザーは開けるのに、もう一方は開けないのはなぜ?
まず、2つのブラウザーがどこからプロキシ設定を取得しているか比較します。一方はWindowsのシステムプロキシに従い、もう一方は手動ポートを保存している可能性があります。個別設定を127.0.0.1と現在のHTTPポートに変更し、両方のブラウザーを完全に終了してから再テストしてください。
拡張機能を無効にしても直接接続になる場合は?
ブラウザーのショートカットにプロキシ起動パラメーターが付いていないか確認し、システムプロキシの例外リストも確認します。その後、curlで明示的なプロキシテストを実行します。明示的なテストが成功してブラウザーだけ失敗する場合は、ブラウザーのポリシーとプロファイル設定を引き続き確認してください。
システムプロキシを有効にしたら、LAN内のページが開けなくなった場合は?
システムプロキシのバイパス一覧にローカルアドレスを残すか、v2rayNのルーティング規則でプライベートアドレスを直接接続にします。代表的なプライベートネットワークは10.0.0.0/8、172.16.0.0/12、192.168.0.0/16です。
ブラウザーを再起動するとプロキシが消える場合は?
v2rayNのシステムプロキシモードが「システムプロキシを変更しない」になっていないか確認し、クライアント終了時にシステム設定が解除されていないかも確認します。常用する場合は、クライアント起動後に自動構成をもう一度選択してください。
コマンドラインは個別にプロキシを設定する
コマンドラインツールを一律に「システムプロキシを自動的に読み取る」と考えることはできません。同じターミナルでも、curl、PowerShellモジュール、ランタイムのパッケージマネージャー、単体のダウンロードプログラムでは動作が異なる場合があります。最も確実なのは、まず1つのコマンドにプロキシアドレスを明示的に渡し、その後で現在のセッションの環境変数を設定するか判断する方法です。これにより、ツールの設定問題をv2rayNのノード障害と誤認せずに済みます。
HTTPプロキシアドレスには、v2rayNのHTTP待ち受けポートを使用します。たとえばhttp://127.0.0.1:10809です。SOCKSを使う場合はsocks5h://127.0.0.1:10808と記述できます。socks5hはプロキシ側で対象ドメインを名前解決する指定で、ローカルDNSとプロキシ経由の結果が一致しない問題を減らせます。対応状況は各ツールのプロキシ引数を確認してください。
# PowerShell:現在のウィンドウから起動するプログラムだけに適用
$env:HTTP_PROXY="http://127.0.0.1:10809"
$env:HTTPS_PROXY="http://127.0.0.1:10809"
$env:NO_PROXY="localhost,127.0.0.1"
# HTTPプロキシを明示的にテスト
curl.exe --proxy http://127.0.0.1:10809 -I https://example.com
# SOCKSを明示的にテストし、プロキシ側でドメインを名前解決
curl.exe --proxy socks5h://127.0.0.1:10808 -I https://example.com
:: Windowsコマンドプロンプト:現在のウィンドウだけに設定
set HTTP_PROXY=http://127.0.0.1:10809
set HTTPS_PROXY=http://127.0.0.1:10809
set NO_PROXY=localhost,127.0.0.1
# macOSまたはLinuxのシェル:現在のセッションだけに設定
export HTTP_PROXY=http://127.0.0.1:10809
export HTTPS_PROXY=http://127.0.0.1:10809
export NO_PROXY=localhost,127.0.0.1
| 現象 | 判断 | 対処方法 |
|---|---|---|
| ブラウザーは成功するが、curlは直接接続になる | curlがシステムプロキシを使用していない | --proxyを使うか、現在のセッションに環境変数を設定する |
| 明示的なHTTPプロキシは成功するが、環境変数では失敗する | 変数名、スコープ、またはツールの読み取り規則に問題がある | 大文字の変数とツールが要求する変数を両方設定し、対象のターミナルプロセスを再起動する |
| HTTPポートは失敗するが、SOCKSポートは成功する | HTTPインバウンドポートが間違っているか、待ち受けていない | パラメーター設定を確認し、10808と10809を混同しない |
| ローカルアドレスもプロキシ経由になっている | バイパス設定がない | NO_PROXY=localhost,127.0.0.1を設定する |
エラー:curl: (5) Could not resolve proxy: 127.0.0.1:10809
原因と対処:プロキシ変数の形式が間違っている可能性があります。たとえば、アドレスとプロトコルを分けて認識できない値にしている場合です。変数全体をhttp://127.0.0.1:10809と記述し、余分な引用符や空白を削除してからターミナルを開き直してください。
エラー:curl: (97) connection to proxy closed
原因と対処:プロキシプロトコルとポートの種類が一致していない場合によく発生します。HTTPアドレスはHTTPポートに、SOCKSアドレスはSOCKSポートに接続してください。確認後、2つの明示的なテストコマンドをそれぞれ実行します。
結論:ターミナルの確認は明示的な引数を基準にする
--proxyを付けた単一コマンドが成功するなら、ローカルポートとノード経路はすでに利用可能です。その後は環境変数や特定ツールの設定を修正し、サブスクリプション、プロトコル、ルーティング規則を繰り返し変更しないでください。
ポートが正常なのにアクセスできない場合はDNSとルーティングを確認する
ローカルポートへ接続できても、アプリがプロキシ入口に到達したことしか確認できません。リクエストはXrayに入った後、名前解決、ルーティング判定、プロキシ経由の送信を通ります。規則によって対象ドメインが直接接続へ送られると、外部からはローカルネットワーク経由に見えることがあります。ノードサーバーの名前解決に失敗すると、そのノードを経由するすべてのリクエストがタイムアウトする可能性があります。問題を再現しながら実行ログを確認し、ブラウザーのエラーページだけで判断しないでください。
まず、テスト対象を1つのノード、1つのブラウザー、1つの明示的なcurlコマンドに絞ります。複雑なカスタムルーティングは一時的に無効にし、プライベートアドレスだけ直接接続にして、それ以外のテストリクエストはプロキシ経由で送ります。これで復旧するなら、原因は通常、ルールの順序、ドメインセット、または送信先タグにあります。それでも失敗する場合は、サブスクリプションに含まれるサーバーアドレス、ポート、VMessまたはVLESSのユーザーパラメーター、TLS、トランスポート方式がサーバー側と一致しているか確認します。
- v2rayNの実行ログでテスト時刻の箇所を探し、対象ドメインまたは対象アドレスが表示されているか確認します。
- リクエストが表示されるのに直接接続になっている場合は、ルーティング規則で一致した送信先タグとルールの優先順位を確認します。
timeoutが表示されたら、ノードサーバーへの接続がタイムアウトしたのか、最終的な対象への接続がタイムアウトしたのかを切り分けます。- 名前解決に失敗した場合は、ノードサーバーのアドレス表記を確認し、利用可能なDNSに切り替えてからコアを再起動します。
- リクエストがまったく表示されない場合は、アプリのプロキシ設定に戻って確認を続けます。先にノードのプロトコルパラメーターを変更しないでください。
エラー:failed to find an available destination
原因と対処:コアが利用可能な宛先アドレスを取得できていません。名前解決の失敗や、利用できないルーティング結果が原因の可能性があります。ノードサーバーのアドレス表記、DNS設定、ルーティングの送信先タグを確認し、変更後にコアを再起動してください。
エラー:dial tcp: i/o timeout
原因と対処:ノードサーバーまたは最終的な宛先へのTCP接続が制限時間を超えています。まず同じサブスクリプション内の別ノードで比較し、サーバーポート、ローカル時刻、ネットワークがその接続を許可しているか確認します。
エラー:invalid user
原因と対処:ノードの認証パラメーターがサーバー側で受け付けられていません。サブスクリプションの期限切れや、手動編集時のユーザー識別子の入力ミスがよくある原因です。システムプロキシの切り替えとは無関係なので、該当するサブスクリプショングループを更新してノードを選び直してください。
結果に応じて対処を選ぶ
確認が終わったら、すべての設定を同時に変更する必要はありません。既知の正常なノードを1つ残し、テスト結果に応じて次の手順を決めるのが最も効果的です。ループバックポートが失敗するならコアとポートを確認し、明示的なプロキシは成功するのにブラウザーが失敗するならブラウザーのプロキシ設定元を確認します。ブラウザーは成功するのにターミナルが失敗するなら、コマンド引数と環境変数を確認します。すべてのアプリのリクエストがログに出るのに外向き通信だけ失敗する場合は、DNS、ルーティング、ノード設定を確認してください。
ポートを変更してもシステムプロキシが古いままの場合は?
まずv2rayNの「システムプロキシ」メニューでシステムプロキシを解除し、再度自動構成を選択します。その後、Windowsの「設定」→「ネットワークとインターネット」→「プロキシ」で新しいポートが登録されているか確認してください。
v2rayNを終了したら、すべてのブラウザーが開けなくなった場合は?
システムにローカルポートを指すプロキシ設定が残っている一方で、クライアントは待ち受けを停止している可能性があります。クライアントを再起動するか、システムプロキシメニューで解除し、Windowsの手動プロキシが無効になっていることを確認してください。
ターミナルの特定ツールだけ動作しない場合は?
そのツールがHTTP_PROXY、HTTPS_PROXY、または個別のプロキシ引数に対応しているか確認します。curlの明示的なプロキシが成功するなら、問題はそのツール自体の設定に絞られます。v2rayNを再インストールする必要はありません。
サブスクリプションを更新したら、突然すべてタイムアウトする場合は?
該当するサブスクリプショングループを手動で更新し、ノードを選び直して実行ログを確認します。ローカルポートには接続できるのに複数のノードが同時にタイムアウトする場合は、サブスクリプションのパラメーター、システム時刻、現在のネットワーク環境を比較してください。
Androidでも127.0.0.1のポートを設定する必要がある?
通常、デスクトップOSのプロキシ手順をそのまま適用する必要はありません。v2rayNGとv2flyNGはAndroidのVPNサービスを通じて通信を引き受けるため、アプリの接続状態、アプリごとのプロキシ、ルーティングモード、実行ログを確認してください。
最終判断:3つのテストで障害の層を特定する
ローカルポートのテスト、明示的なプロキシリクエスト、アプリ内からのアクセスを順番に実行します。前の段階で失敗したら、その層の修正に集中してください。最初の2つが成功して3つ目だけ失敗する場合は、対象アプリだけを確認します。この順序なら、ポートが間違っている状態でルーティングを繰り返し変更したり、ターミナルにプロキシを設定していないために正常なノードを削除したりするのを防げます。