Windowsのプロキシ設定は、1か所だけを確認すればすべて分かるわけではありません。
主に次のような設定があります。
これは、Windowsの「設定」アプリにあるプロキシ設定です。
主に、Microsoft Edge、Google Chrome、Internet Explorer互換の通信、一部の一般アプリなどで使われます。
確認対象としては、手動プロキシの有効・無効、プロキシサーバーのアドレス、除外設定、PACファイルのURLなどがあります。
WinHTTPは、Windows Updateや一部のWindowsサービス、システム系アプリケーションなどで使われることがあります。
ブラウザで使われるプロキシ設定とは別に管理されているため、ブラウザではプロキシが有効なのに、WinHTTPではプロキシなしという状態も普通に起こります。
開発ツールやCLIツールでは、Windowsの通常のプロキシ設定ではなく、環境変数に設定されたプロキシを参照する場合があります。
たとえば、Git、npm、pip、curl、Python、Node.jsなどでは、環境変数のプロキシ設定が影響することがあります。
一部のツールは、Windows全体の設定とは別に、ツール独自のプロキシ設定を持っています。
Gitやnpmなどはその代表例です。
そのため、ブラウザでは問題なく通信できるのに、Gitやnpmだけ接続できない場合は、アプリ固有のプロキシ設定を確認する必要があります。
WinHTTPは、WindowsのシステムやサービスがHTTP通信を行う際に使う仕組みです。
ブラウザで使われるプロキシ設定とは別に管理されているため、最初に確認しておくとトラブルの切り分けに役立ちます。
WinHTTPの設定を確認すると、現在のWinHTTP通信がプロキシを使う設定になっているか、直接アクセスになっているかを確認できます。
プロキシが設定されていない場合は、直接アクセス、またはプロキシサーバーなしと表示されます。
プロキシが設定されている場合は、プロキシサーバーのホスト名やポート番号、プロキシを使わない除外アドレスなどが表示されます。
WinHTTPのプロキシ設定が「直接アクセス」になっていても、ブラウザでプロキシが使われていないとは限りません。
これは、WinHTTPの設定と、Windowsのユーザー別プロキシ設定が別物だからです。
そのため、ブラウザや通常アプリのプロキシ状況を確認したい場合は、WinHTTPだけでなく、ユーザー別のプロキシ設定もあわせて確認する必要があります。
ユーザー別プロキシ設定は、Windowsの「ネットワークとインターネット」にあるプロキシ設定に対応するものです。
主に、現在ログインしているユーザーに対して適用されます。
この設定は、EdgeやChromeなどのブラウザ、WinINet系のアプリ、一部の業務アプリなどに影響します。
ユーザー別プロキシ設定では、主に次の項目を確認します。
手動プロキシが有効になっているかどうかを確認します。
有効になっている場合、指定されたプロキシサーバーを経由して通信します。
無効になっている場合でも、PACファイルや自動検出、環境変数、アプリ固有設定によってプロキシが使われる可能性があります。
そのため、手動プロキシが無効だからといって、プロキシが一切使われていないとは断定できません。
プロキシサーバーには、通信に使用するプロキシのアドレスとポート番号が設定されます。
たとえば、会社や学校のネットワークでは、特定のプロキシサーバーを経由しないと外部サイトにアクセスできない場合があります。
この項目に値が入っていれば、手動プロキシの設定が存在する可能性があります。
プロキシ除外設定には、プロキシを使わずに直接アクセスする宛先が指定されます。
代表的な例として、localhost、社内ドメイン、ローカルIPアドレス、特定のドメインなどがあります。
この設定がある場合、同じPCからの通信でも、宛先によってプロキシを使う場合と使わない場合があります。
PACファイルとは、アクセス先に応じてどのプロキシを使うかを自動判定するための設定ファイルです。
会社や学校などの管理されたネットワークでは、手動プロキシではなくPACファイルを使っていることがあります。
この場合、プロキシサーバー欄に明示的なアドレスが表示されていなくても、PACファイル経由でプロキシが利用される可能性があります。
Windowsには、「設定を自動的に検出する」というプロキシ関連の項目があります。
これは、WPADという仕組みなどを使って、ネットワーク上のプロキシ設定を自動的に検出するものです。
自動検出の状態は、環境によってはレジストリ上に分かりやすく表示されることがあります。
ただし、Windowsのバージョン、管理ポリシー、ネットワーク構成、会社PCの制御状態によっては、単純にコマンドで確認した結果だけでは判断しにくい場合があります。
そのため、自動検出については、コマンドの結果だけで断定せず、必要に応じてWindowsの設定画面やグループポリシー、社内ネットワークの設定も確認したほうが安全です。
コマンドラインツールや開発ツールでは、Windowsの通常のプロキシ設定とは別に、環境変数のプロキシ設定を参照することがあります。
特に、次のようなツールでは注意が必要です。
Git、npm、pip、curl、Python、Node.js、一部の社内CLIツールなどです。
環境変数では、主にHTTP用プロキシ、HTTPS用プロキシ、プロキシ除外設定を確認します。
代表的な環境変数には、HTTP_PROXY、HTTPS_PROXY、NO_PROXYなどがあります。
ツールや環境によっては、小文字の変数名が使われる場合もあります。
そのため、大文字の設定だけでなく、小文字の設定も含めて確認するとより安全です。
単に「proxy」という文字で始まる環境変数だけを確認しても、HTTP_PROXYやHTTPS_PROXYを見落とす可能性があります。
そのため、環境変数のプロキシ設定を確認する場合は、プロキシ関連の文字列を広く検索する方法のほうが実務上は確実です。
Microsoft EdgeやGoogle Chromeは、通常、Windowsのシステムプロキシ設定を利用します。
そのため、ブラウザのプロキシ設定を確認したい場合は、Windowsのユーザー別プロキシ設定を確認するのが基本です。
ただし、ChromeやEdgeが常にWindowsの設定どおりに動くとは限りません。
たとえば、ブラウザの起動オプション、管理ポリシー、拡張機能、PACファイル、自動検出などによって、通常のWindows設定とは異なるプロキシが使われることがあります。
会社支給PCでは、ブラウザの設定が管理者によって固定されている場合もあります。
その場合、ユーザーがWindows設定を確認しても、実際のブラウザ通信とは一致しないことがあります。
Gitは、Windowsのプロキシ設定や環境変数とは別に、Git独自の設定を持つことがあります。
Gitの設定には、PC全体に適用されるsystem設定、ユーザー単位のglobal設定、リポジトリ単位のlocal設定があります。
そのため、global設定だけを確認しても、system設定やlocal設定にプロキシが残っている可能性があります。
Gitで通信エラーが発生する場合は、Git全体の設定からプロキシ関連項目を確認するのが安全です。
npmも独自のプロキシ設定を持っています。
Windowsやブラウザの通信は正常なのに、npmだけ接続できない場合は、npmの設定内に古いプロキシ情報が残っている可能性があります。
npmでは、HTTP用プロキシとHTTPS用プロキシが別々に設定されている場合があるため、両方を確認する必要があります。
pipやcurl、Python系ツールなども、環境変数や設定ファイルの影響を受ける場合があります。
特に企業ネットワークでは、ブラウザでは認証プロキシを自動的に通過できても、CLIツールでは認証に失敗することがあります。
この場合は、Windowsのプロキシ設定だけでなく、ツール側の設定や認証方式も確認する必要があります。
WinHTTPの設定でプロキシなしと表示されても、ブラウザの通信がプロキシなしとは限りません。
WinHTTPとブラウザで参照する設定が異なる場合があるためです。
ブラウザのプロキシ確認では、ユーザー別プロキシ設定、PACファイル、自動検出、ブラウザポリシーなども確認する必要があります。
手動プロキシが無効でも、PACファイルや自動検出によってプロキシが使われる場合があります。
また、環境変数やアプリ固有設定でプロキシが指定されている場合もあります。
そのため、プロキシの有無を判断する際は、手動プロキシ設定だけを見て結論を出さないほうが安全です。
プロキシサーバーの項目が空でも、PACファイルのURLが設定されていれば、通信先に応じてプロキシが使われる可能性があります。
企業ネットワークでは、このパターンがよくあります。
ブラウザでは問題なく通信できるのに、Git、npm、pip、curlなどだけ失敗する場合は、環境変数やツール固有設定が原因のことがあります。
この場合、Windowsの設定画面だけを見ても原因が分からないことがあります。
最初にWinHTTPの状態を確認します。
これにより、Windowsサービスやシステム系通信がプロキシを使う設定になっているかどうかを把握できます。
次に、現在ログインしているユーザーのプロキシ設定を確認します。
ここでは、手動プロキシ、プロキシサーバー、除外設定、PACファイル、自動検出関連の設定を確認します。
ブラウザや一般アプリの通信に関係することが多いため、非常に重要です。
開発ツールやCLIツールの通信トラブルがある場合は、環境変数のプロキシ設定も確認します。
特に、HTTP_PROXY、HTTPS_PROXY、NO_PROXYに相当する設定がないかを確認します。
Git、npm、pipなど特定のツールだけで通信できない場合は、そのツール独自のプロキシ設定を確認します。
Windowsの設定や環境変数に問題がなくても、アプリ側に古いプロキシ設定が残っているケースがあります。
プロキシ設定を確認するだけであれば、多くの場合、管理者権限は不要です。
現在ログインしているユーザーの設定や環境変数、WinHTTPの表示などは、通常のコマンドプロンプトでも確認できることが多いです。
一方で、WinHTTPプロキシを変更したり、システム全体の設定を変更したりする場合は、管理者権限が必要になることがあります。
会社や学校の管理PCでは、ユーザーが設定を変更できないように制限されている場合もあります。
その場合は、情報システム部門や管理者に確認する必要があります。
コマンドプロンプトからプロキシ設定を確認する場合は、どの種類のプロキシ設定を見ているのかを意識することが重要です。
WinHTTPの設定だけを見ても、ブラウザのプロキシ設定は分かりません。
ユーザー別プロキシ設定だけを見ても、CLIツールやGit、npmのプロキシ設定までは分かりません。
実務では、次の順番で確認すると切り分けしやすくなります。
まず、WinHTTPの設定を確認します。
次に、Windowsのユーザー別プロキシ設定を確認します。
そのうえで、環境変数のプロキシ設定を確認します。
最後に、Gitやnpmなど、問題が起きているアプリケーション固有の設定を確認します。
この順番で確認すれば、ブラウザだけ通信できない、Windows Updateだけ失敗する、Gitやnpmだけ接続できないといったケースでも、原因を切り分けやすくなります。
以上、コマンドプロントからプロキシの設定を確認する方法についてでした。
最後までお読みいただき、ありがとうございました。