システムプロキシを設定しても使えない?ブラウザー・ターミナル別の確認手順

ブラウザーでプロキシが使えない場合は拡張機能や個別設定、ターミナルの場合は環境変数を確認しましょう。原因別のチェック手順を解説します。

この記事の概要

v2rayNでシステムプロキシを設定しても、ブラウザーでサイトを開けない、またはターミナルからの通信が直接接続される場合に役立つ内容です。まず明示的にプロキシを指定してローカル接続先とノードが使えることを確認し、その後ブラウザー設定、ターミナルの環境変数、ルーティングログを順に確認します。ローカルHTTP/混合プロキシの例として127.0.0.1:10808を使用します。実行前に、クライアントが実際に待ち受けているアドレスとポートに置き換えてください。

1. システムプロキシ・アプリのプロキシ・ルーティングの違い

v2rayNの「システムプロキシを自動設定」は、OSがアプリに提供するプロキシ設定を書き換える機能です。端末上のすべての通信を制御するわけではありません。ブラウザーは通常この設定を参照しますが、コマンドラインツール、バックグラウンドサービス、独自のネットワーク機能を持つアプリは設定を無視することがあります。そのため「ブラウザーは使えるがターミナルは失敗する」場合、まずアプリごとの接続方法の違いを確認しましょう。ノードの障害とは限りません。

アプリのプロキシ設定 ローカルの待ち受け先 コアのルーティング判定 外部への接続 接続先サイト

この通信経路でシステムプロキシが影響するのは最初の段階だけです。XrayまたはV2Rayのコアがリクエストを受け取った後、ルールに従って直結・プロキシ・ブロックのいずれかを選びます。ブラウザーがローカルポートに接続していても、直結ルールに一致したサイトはローカル回線から接続されます。「出口IPが変わらない」ことだけでは、システムプロキシが機能していないとは判断できません。

設定箇所適用範囲確認ポイント
OSのプロキシ設定システム設定を参照するアプリアドレス、ポート、除外リスト、PAC
ブラウザー個別のプロキシ設定そのブラウザーまたは現在のプロファイル拡張機能、手動設定、組織のポリシー
ターミナルの環境変数該当する変数に対応した現在のプロセスと子プロセス変数名、プロトコル、プロセス間の引き継ぎ
コアのルーティングコアに届いたリクエスト一致したルールと最終的な接続先

TUNは、システムプロキシとは別の通信経路を制御する機能です。確認項目を絞るため、この記事ではTUNを無効にした状態を前提にします。現在のネットワークがTUNに依存している場合は、元の設定を記録してから、接続が一時的に切れても問題ない状況で切り分けてください。TUN、DNS、ルーティングを同時に変更すると、原因を特定しにくくなります。

2. ローカルポートと明示的なプロキシ接続を確認

v2rayNの「設定」→「パラメーター設定」を開き、ローカルの待ち受け設定を確認します。コアの起動ログにも待ち受け情報が記録されているので確認してください。バージョンによって項目名や分類は異なる場合があります。実際の画面とログを基準にしましょう。以下の数値は確認用の例で、すべてのバージョンの標準値ではありません。SOCKS専用ポートはHTTPプロキシとして使えません。

127.0.0.1
ローカルのループバックアドレス
10808
この記事で使用するHTTP/混合ポートの例
15秒
1回のテストで設定するタイムアウト上限

Windows PowerShellでは、まず待ち受けポートを確認し、プロキシを明示したリクエストを実行します。一部のPowerShell環境ではcurlが別のツールのエイリアスになっているため、curl.exeを使ってください。macOSやLinuxでは、2つ目のコマンドのcurl.exeをcurlに置き換えます。

Get-NetTCPConnection -State Listen -LocalPort 10808

curl.exe --noproxy "" --proxy http://127.0.0.1:10808 --connect-timeout 5 --max-time 15 -v https://example.com/ -o NUL

--noproxy ""を指定すると、このテスト中は除外リストが空になり、既存のNO_PROXYの影響を防げます。macOSやLinuxでは、出力を破棄するパスを/dev/nullに変更してください。接続確認用のドメインは、実際に問題が起きているサイトにも置き換えて試しましょう。あるサイトに接続できても、すべてのルートや宛先ポートが正常とは限りません。

判断の目安:明示的なプロキシ接続が成功したらアプリを確認

同じ接続先への明示的なプロキシ接続は成功するのに、ブラウザーやターミナルの通常のリクエストが失敗する場合は、まず該当アプリの接続設定を見直しましょう。動作を確認できたノードとポートはそのままにします。

3. ブラウザーでプロキシが使えない場合の確認手順

v2rayNを起動したまま使用可能なノードを選び、トレイメニューの「システムプロキシ」→「システムプロキシを自動設定」を実行します。その後、トレイの表示だけでなく、OSに実際に保存された設定も確認してください。他のプロキシソフト、ブラウザー拡張機能、組織のポリシーが設定を上書きしていることがあります。

  1. OSの設定を確認

    Windows 11では「設定」→「ネットワークとインターネット」→「プロキシ」を開き、「プロキシサーバーを使う」のアドレスとポートを確認します。macOSでは「システム設定」→「ネットワーク」→現在の接続→「詳細」→「プロキシ」を開きます。Linuxはデスクトップ環境によって異なります。GNOMEの場合は「設定」→「ネットワーク」→「ネットワークプロキシ」を確認してください。

  2. ブラウザーの接続設定を確認

    Chromeでは「設定」→「システム」→「パソコンのプロキシ設定を開く」を選びます。Firefoxでは「設定」→「一般」→「ネットワーク設定」→「設定」を開き、「システムのプロキシ設定を使用する」が選ばれているか確認してください。「プロキシーを使用しない」または手動設定になっている場合、システム設定には従いません。

  3. プロキシ拡張機能を一時停止

    Chromeの「拡張機能」→「拡張機能を管理」を開き、プロキシを制御する拡張機能を一時的に無効にして、新しいブラウザープロファイルでテストします。シークレットウィンドウでも、ポリシーや許可された拡張機能が引き継がれる場合があります。完全な切り分け環境とは限りません。

  4. 除外ルールを確認

    システムプロキシの例外、ブラウザーの手動設定にある「プロキシを使用しない」リスト、自動設定スクリプトの有無を確認します。PACは接続先に応じて直結を指定できます。ルールの内容を確認せずに、PAC設定ならすべてのサイトがプロキシ経由になると考えないでください。

  5. 再起動して再テスト

    ブラウザーのウィンドウをすべて閉じ、バックグラウンドプロセスも終了してから起動し直します。コマンドラインテストと同じURLにアクセスし、v2rayNのログも確認してください。Chromeではアドレスバーにchrome://policyと入力すると、組織から適用されたプロキシポリシーを確認できます。管理対象の端末では管理者に相談してください。

ブラウザーのリクエストがコアのログにまったく現れない場合は、まずブラウザー側の接続設定を確認します。ただし、アクセスログが有効で、適切なログレベルに設定されている場合に限り、記録がないことを判断材料にできます。接続先への直結がログに明記されている場合は、問題はシステムプロキシではなくルーティングの選択にあります。プロキシ経由の外部接続で失敗している場合は、ノードと接続先の状態を確認してください。

4. ターミナルは環境変数と単発のオプションで確認

ターミナルツールには、共通の「システムプロキシに従う」仕様はありません。プロキシ環境変数に対応したツールなら、現在のターミナルセッションで変数を設定できます。コマンドラインのプロキシオプションに対応している場合は、単発の指定のほうが原因を切り分けやすくなります。変数が引き継がれるのは、その後に起動した子プロセスです。起動済みのエディター内ターミナルやバックグラウンドタスクには自動で反映されません。

Windows PowerShell:まず現在のセッションで設定

$env:HTTP_PROXY = "http://127.0.0.1:10808"
$env:HTTPS_PROXY = "http://127.0.0.1:10808"
$env:NO_PROXY = "localhost,127.0.0.1"

curl.exe --connect-timeout 5 --max-time 15 -v https://example.com/ -o NUL

Get-ChildItem Env: | Where-Object Name -Match 'proxy'

HTTPS_PROXYのhttp://は、「ターミナルからローカルプロキシまで」の接続プロトコルを示します。接続先URLのプロトコルを示すものではありません。HTTPSサイトへのアクセスでは、通常HTTPプロキシがCONNECTでトンネルを確立します。接続先がHTTPSだからといって、変数の値をhttps://127.0.0.1:10808に変更する必要はありません。後者が使えるのは、ローカルの接続先が実際にTLSプロキシを提供している場合に限られます。

macOS・Linux:環境変数の大文字・小文字に注意

export http_proxy='http://127.0.0.1:10808'
export https_proxy='http://127.0.0.1:10808'
export no_proxy='localhost,127.0.0.1'

curl --connect-timeout 5 --max-time 15 -v https://example.com/ -o /dev/null

env | grep -i proxy

大文字と小文字を区別する環境では、curlがHTTPプロキシ用に参照するのは小文字のhttp_proxyだけです。HTTPSプロキシの変数には対応する大文字・小文字の形式があります。他のツールでは仕様が異なる場合があるため、各ツールのドキュメントを確認してください。同じ変数名で大文字・小文字の形式が両方あり、値が異なる場合は、変数を追加する前に競合を解消します。

明示的な--proxyでは成功するのに、環境変数を設定すると失敗する場合は、ツールが環境変数に対応しているか、独自のプロキシ設定があるか、接続先が除外リストに一致していないかを確認します。WindowsのWinHTTP設定とデスクトップのシステムプロキシ設定は別のものです。ターミナルの特定ツールを直すために、WinHTTPの全体設定を安易に変更しないでください。

5. 実際のエラーから原因の層を特定

「ウェブページを開けない」という情報より、エラーメッセージのほうが原因の特定に役立ちます。以下はよくある出力例です。実際の表示はcurlのバージョン、OS、ブラウザーの言語設定によって異なります。ローカル接続、CONNECT、TLS、接続先の応答のどの段階で失敗したかを記録してから、変更する設定を判断しましょう。

curl: (7) Failed to connect to 127.0.0.1 port 10808

原因と対処:ローカルプロキシが接続を受け付けていません。v2rayNのコアが起動しているか、実際の待ち受けポートとプロセスを確認してください。ポートが他のアプリに使われている場合は競合を解消し、アプリ側の接続先設定も合わせて変更します。

ERR_PROXY_CONNECTION_FAILED

原因と対処:ブラウザーが設定されたプロキシに接続できません。OSと拡張機能に保存されたアドレスを確認し、古いポート、誤ったプロキシホスト、コアの終了を切り分けます。まず同じ接続先を指定してcurlのテストを行ってください。

curl: (5) Could not resolve proxy

原因と対処:プロキシアドレスのホスト名を名前解決できないか、プロキシURLの指定に誤りがあります。環境変数に余分な文字が含まれていないか確認し、動作確認済みのhttp://127.0.0.1:10808を使ってプロキシホスト名の名前解決を切り分けます。

curl: (60) SSL certificate problem: unable to get local issuer certificate

原因と対処:現在のcurlが使う信頼済み証明書ストアで証明書チェーンを構築できないか、組織ネットワークのTLS検査が関係している可能性があります。システム時刻、証明書の入手元、curlの証明書ストア設定を確認してください。証明書検証を恒久的に無効にして対処しないでください。

curl: (28) Connection timed out

原因と対処:指定時間内に接続または応答が完了していません。このエラーだけでは原因の場所を特定できません。-vで最後に成功した段階を確認し、コアのログと照らし合わせて、ローカル接続先、ノードからの外部接続、接続先のどこでタイムアウトしたかを調べます。

ブラウザーは使えるのにターミナルで証明書エラーだけが出る場合、すぐにノードを切り替えないでください。ブラウザーとコマンドラインアプリで、証明書の信頼ストアが異なることがあります。同様に、ターミナルは成功するのにブラウザーでプロキシ接続エラーが出る場合は、まず両者が使うローカルポートを比較しましょう。特定のプロトコル全体が使えないとは限りません。

6. 設定を元に戻し、必要最小限の調査記録を残す

原因を特定したら、必要な設定だけを残します。作業上プロキシ環境変数が必要な場合は、使用しているシェルの起動ファイルに設定し、ローカル開発サービスへの影響も確認してください。一時テストが終わったら、以下のコマンドで今回設定した変数を解除できます。テスト前から値が設定されていた場合は、削除せず元の値に戻してください。

現在のセッションの環境変数を解除

# Windows PowerShell
Remove-Item Env:HTTP_PROXY, Env:HTTPS_PROXY, Env:NO_PROXY -ErrorAction SilentlyContinue

# macOS、Linux shell
unset http_proxy https_proxy no_proxy

この操作では、ツール専用の設定、大文字・小文字が異なる環境変数、シェルの起動ファイル、すでに起動している子プロセスなど、別の場所に保存された設定は消えません。ブラウザーのテストで一時停止した拡張機能は、1つずつ戻して再確認してください。設定を戻した直後に問題が再現すれば、上書きしている設定を特定できます。

判断の目安:同じリクエストの結果を比較して変更範囲を決める

明示的なプロキシ接続が成功するならアプリの接続先、コアに届いているのに誤った経路を通るならルーティングを確認します。プロキシ経由の外部接続が選ばれているのに失敗する場合は、ノードとネットワークを調べましょう。一度に変更するのは1つの段階だけにして、同じURLで再テストしてください。

v2rayN をダウンロードデスクトップ・Android クライアント