MENU
草壁シトヒ
ブロガー
普通の会社員でブログ歴は10年以上。

<趣味・得意分野>
⇨スポーツ観戦:F1、サッカー、野球
⇨テック分野が好物:AI、スマホ、通信
2025年最新版!VPSサーバーランキング 詳細はこちら

【完全版】プロキシ設定の必須コマンド集!『Windows』『macOS』『Linux』環境別まとめ

当ページのリンクには広告が含まれています。

現代のネットワーク、特に企業や学校ではプロキシサーバーが欠かせません。セキュリティの強化やアクセスの管理、通信の高速化など、その役割は多岐にわたります。私が開発やサーバー管理を行う中で、コマンドライン(CLI)から直接プロキシを設定する場面が頻繁にありました。GUIを使わずに設定を自動化したいとき、この知識は必須です。

しかし、コマンドラインでのプロキシ設定は驚くほど複雑です。なぜなら、OSや使うツール、シェル環境によって設定方法がバラバラだからです。この「断片化」が、多くの技術者を悩ませる原因です。環境変数、アプリケーションごとのコマンド、設定ファイルの直接編集など、複数の方法が混在し、どれを使えば良いのか判断が難しいのが実情です。この記事では、この複雑なプロキシ設定を体系的に整理し、Windows、macOS、Linuxの各環境、さらにGitやDockerといった主要ツールでの設定方法を網羅的に解説します。

タップできる目次

コマンドラインプロキシ設定の基本

具体的なコマンドを見る前に、プラットフォームを問わない共通の基本原則を理解することが重要です。これらの概念は、後で紹介するコマンドがなぜそのように機能するのかを理解する土台となります。

プロキシ設定の3つの主要な方法

コマンドライン環境でのプロキシ設定は、主に3つの方法に分類されます。これらは互いに影響し、優先順位が存在します。

環境変数

プロキシ設定を子プロセスに伝えるための、最も広く使われている方法です。「http_proxy」や「no_proxy」といった変数を設定すると、多くのコマンドラインツールが自動でプロキシを認識します。手軽な方法ですが、変数名の大文字・小文字の扱いや、ツールごとの対応状況に一貫性がないという課題があります。

アプリケーション固有のコマンド

Git、npm、Dockerなどのツールは、環境変数よりも優先される独自の内部設定を持っています。「git config」や「npm config」といったコマンドは、そのアプリケーションの動作に限定した、より信頼性の高いプロキシ設定を実現します。

設定ファイルの直接編集

システムサービスや、環境変数を認識しない一部のツールには、専用の設定ファイルを直接編集する方法が最も確実です。「.wgetrc」や「apt.conf」といったファイルを使えば、永続的で詳細な制御ができます。

プロキシ環境変数の詳細

環境変数は最も一般的な設定方法ですが、その仕様は曖昧で多くの問題の原因となります。ここではその詳細を解説します。

変数名と大文字・小文字のルール

「http_proxy」(小文字)と「HTTP_PROXY」(大文字)のどちらを使うべきか、これは長年の混乱の種です。歴史的な経緯から、curlなどの一部のツールは小文字の「http_proxy」のみを認識します。一方で、新しいツールの多くは両方をチェックします。

私が推奨するベストプラクティスは、小文字と大文字の両方の変数を同じ値で設定することです。これにより、古いツールから新しいツールまで、最大限の互換性を確保できます。

変数目的推奨されるケース注釈
http_proxyHTTPトラフィック用プロキシ小文字最も広く認識される変数。一部ツールは小文字のみをチェック。
HTTP_PROXYHTTPトラフィック用プロキシ大文字多くのツールがフォールバックとしてチェック。両方を設定するのが安全。
https_proxyHTTPSトラフィック用プロキシ小文字上記と同様に、両方のケースを設定することを推奨。
HTTPS_PROXYHTTPSトラフィック用プロキシ大文字多くのツールのフォールバック。
no_proxy / NO_PROXYバイパスリスト小文字/大文字プロキシを経由しないホストを指定。ツールにより互換性が異なる。

プロキシ文字列の構造|認証と特殊文字

プロキシサーバーが認証を要求する場合、その情報をプロキシ設定の文字列に含める必要があります。完全なURL形式はprotocol://[username:password@]proxy.server:portです。

ユーザー名やパスワードに「@」や「#」、「\」などの特殊文字が含まれていると、認証に失敗します。これは企業環境で頻繁に発生する問題です。この問題を解決するには、URLエンコーディングを使い、特殊文字をエスケープする必要があります。例えば、パスワードがmy@passwordの場合、「@」を%40に置き換え、my%40passwordと記述します。

バイパスリスト|no_proxy変数

「no_proxy」環境変数は、プロキシを経由せずに直接アクセスするホストを指定するために使います。localhostや社内サーバーなどが典型例です。

しかし、「no_proxy」の構文は標準化されておらず、ツールによって実装が大きく異なります。一般的にはホスト名をカンマ区切りで列挙しますが、ドメインの前にドットを付けてサブドメイン全体を対象にする「.example.com」のような記法や、ワイルドカードとして「*」を使う記法などがあります。重要なのは、これらの構文が全てのツールで一貫してサポートされているわけではない点です。使用する主要なツールで動作を検証することが不可欠です。

OS別のシステムレベルプロキシ設定

基本概念を理解した上で、各OSレベルでのプロキシ設定方法を解説します。これらの設定は、多くのアプリケーションがデフォルトで参照する基準となります。

Windows環境|2つのプロキシ設定を理解する

Windowsのプロキシ設定は、WinINETプロキシとWinHTTPプロキシという2つの独立した設定が存在する点が非常に複雑です。この違いを理解しないと、多くの問題に直面します。

WinHTTPプロキシの設定 (netsh)

WinHTTPプロキシは、Windows Updateのようなシステムサービスが使用するプロキシです。管理者権限を持つコマンドプロンプトやPowerShellから「netsh」ユーティリティを使って設定します。

  • プロキシの設定

Shell

netsh winhttp set proxy proxy-server="proxy.example.com:8080" bypass-list="<local>;*.internal.com"
  • 設定の表示

Shell

netsh winhttp show proxy
  • 設定のリセット

Shell

netsh winhttp reset proxy
  • IE設定のインポート

Shell

netsh winhttp import proxy source=ie

このインポートコマンドは、ブラウザ用のWinINET設定をWinHTTPにコピーする便利な機能です。

PowerShellによるプロキシ設定

PowerShellを使えば、一時的な設定から永続的な設定まで柔軟に対応できます。

  • 一時的な設定(環境変数)

PowerShell

$env:http_proxy="http://user:pass@proxy.example.com:8080"
$env:https_proxy="http://user:pass@proxy.example.com:8080"
  • 永続的な設定(レジストリ操作)GUIの「インターネット オプション」と同じ設定をレジストリ操作で行います。

PowerShell

$regPath = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings"
Set-ItemProperty -Path $regPath -Name ProxyEnable -Value 1
Set-ItemProperty -Path $regPath -Name ProxyServer -Value "proxy.example.com:8080"

macOS環境|networksetupとシェルプロファイル

macOSでは、システムレベルのネットワーク設定は主に「networksetup」ユーティリティで管理します。

networksetupユーティリティの使い方

特定のネットワークサービス、例えば「Wi-Fi」ごとにプロキシを設定します。

  • ネットワークサービスの一覧表示

Shell

networksetup -listallnetworkservices
  • Webプロキシ(HTTP/HTTPS)の設定

Shell

networksetup -setwebproxy "Wi-Fi" proxy.example.com 8080
networksetup -setsecurewebproxy "Wi-Fi" proxy.example.com 8080
  • 設定の表示

Shell

networksetup -getwebproxy "Wi-Fi"
  • プロキシの無効化

Shell

networksetup -setwebproxystate "Wi-Fi" off
  • バイパスドメインの設定

Shell

networksetup -setproxybypassdomains "Wi-Fi" "*.local" "169.254/16"

シェルのための環境変数設定

ターミナルで動作する多くのツールは、networksetupの設定より環境変数を優先します。永続的な設定のためには、シェルの設定ファイル(macOSでは~/.zshrc)にexportコマンドを記述します。

Bash

# ~/.zshrc に追記
export http_proxy="http://proxy.example.com:8080"
export https_proxy="http://proxy.example.com:8080"
export no_proxy="localhost,127.0.0.1,*.local"

Linux環境|環境変数の設定場所が重要

Linux環境のプロキシ設定は、ほぼ全面的に環境変数で管理されます。どこに設定を記述して永続化させるかが最も重要なポイントです。

ログインシェルと非ログインシェルの違い

SSHでのログイン時に読み込まれる~/.bash_profileと、ターミナルを開くたびに読み込まれる~/.bashrcの違いを理解する必要があります。設定に一貫性を持たせるため、私が推奨する方法は、全ての環境変数を~/.bash_profileに記述し、そこから~/.bashrcを読み込む構成にすることです。

  • ~/.bash_profileの記述例

Bash

# プロキシ設定
export http_proxy="http://proxy.example.com:8080"
export https_proxy="http://proxy.example.com:8080"
export no_proxy="localhost,127.0.0.1"

# .bashrc が存在すれば読み込む
if [ -f ~/.bashrc ]; then
   . ~/.bashrc
fi

システム全体の永続的な設定

全てのユーザーにプロキシ設定を適用する場合は、/etc/environmentファイルを編集します。このファイルにはキー=値の形式で記述します。

http_proxy="http://proxy.example.com:8080"
https_proxy="http://proxy.example.com:8080"
no_proxy="localhost,127.0.0.1"

アプリケーション固有のプロキシ設定

システムレベルの設定だけでは不十分なこともあります。多くの開発ツールは独自の設定方法を要求します。

バージョン管理システム|Git

Gitはプロキシ設定で多くの開発者がつまずくポイントです。Gitはhttp_proxy環境変数を一切参照しません。そのため、git configコマンドで独自に設定する必要があります。

  • プロキシの設定(グローバル)

Shell

git config --global http.proxy http://user:pass@proxy.example.com:8080
git config --global https.proxy http://user:pass@proxy.example.com:8080
  • 設定の表示

Shell

git config --global --get http.proxy
  • 設定の解除

Shell

git config --global --unset http.proxy

ソフトウェアパッケージマネージャー

Linuxのパッケージマネージャーはsudoと共に実行されるため、ユーザーの環境変数が引き継がれません。専用の設定ファイルが必要です。

APT (Debian/Ubuntu)

/etc/apt/apt.conf.d/ディレクトリに設定ファイルを作成します。例えば80proxy.confというファイル名で、以下の内容を記述します。

Acquire::http::Proxy "http://proxy:8080/";
Acquire::https::Proxy "https://proxy:8080/";

YUM/DNF (RHEL/CentOS/Fedora)

メインの設定ファイル/etc/yum.conf(または/etc/dnf/dnf.conf)を編集し、[main]ブロックに以下の行を追加します。

proxy=http://proxy.example.com:8080
proxy_username=user
proxy_password=pass

npm (Node.js)

npmはnpm configコマンドでプロキシを設定します。設定内容はホームディレクトリの~/.npmrcファイルに保存されます。

Shell

npm config set proxy http://user:pass@proxy.example.com:8080
npm config set https-proxy http://user:pass@proxy.example.com:8080

コンテナ化|Docker

Dockerのプロキシ設定は特に複雑です。デーモン、クライアント、コンテナの3つのレイヤーで設定が必要になる場合があります。

Dockerデーモンの設定

docker pullなどを実行するDockerデーモン自体の設定です。systemdを利用しているLinux環境では、以下の手順で設定ファイルを作成するのが推奨される方法です。

  1. ディレクトリとファイルを作成します。sudo mkdir -p /etc/systemd/system/docker.service.dsudo nano /etc/systemd/system/docker.service.d/http-proxy.conf
  2. ファイルに環境変数を記述します。[Service] Environment="HTTP_PROXY=http://proxy.example.com:8080" Environment="HTTPS_PROXY=http://proxy.example.com:8080" Environment="NO_PROXY=localhost,127.0.0.1"
  3. 設定を再読み込みし、Dockerを再起動します。sudo systemctl daemon-reloadsudo systemctl restart docker

Dockerクライアントと実行コンテナの設定

docker builddocker run時にプロキシ設定をコンテナに渡すには、ホームディレクトリの~/.docker/config.jsonファイルを編集します。

JSON

{
 "proxies": {
   "default": {
     "httpProxy": "http://proxy.example.com:8080",
     "httpsProxy": "http://proxy.example.com:8080",
     "noProxy": "localhost,127.0.0.1"
   }
 }
}

この設定により、ビルド時やコンテナ実行時にプロキシ関連の環境変数が自動でコンテナ内に設定されます。

検証とトラブルシューティング

設定が正しく機能しているかを確認し、問題の原因を特定するための知識は不可欠です。

検証テクニック

設定が意図通りに機能しているかを確認するためのコマンドです。

  • 環境変数の確認echo $http_proxy (Linux/macOS) や echo %http_proxy% (Windows)
  • システム設定の確認netsh winhttp show proxy (Windows) や networksetup -getwebproxy "Wi-Fi" (macOS)
  • 接続テストcurl https://httpbin.org/ip を実行し、表示されるIPがプロキシサーバーのものであることを確認します。

よくある問題と解決策

私が経験した典型的なトラブルとその解決策を紹介します。

407 Proxy Authentication Required

このエラーは、認証情報が正しくないことを示します。ユーザー名やパスワードに特殊文字が含まれていないか、URLエンコーディングが正しく行われているかを確認してください。

SSL/TLSエラー

企業ネットワークでは、HTTPS通信を検査する「SSLインスペクション」が導入されていることがあります。この環境では、プロキシが提示する証明書が信頼されていないため、証明書検証エラーが発生します。解決策は、企業のルートCA証明書をシステムの信頼ストアに追加することです。最終手段としてSSL検証を無効にする方法もありますが、セキュリティリスクを伴います。

sudoと環境変数

sudo apt updateなどが失敗する場合、sudoが環境変数を引き継いでいないことが原因です。各パッケージマネージャー専用の設定ファイルを使用する方法で解決します。

まとめ

コマンドラインによるプロキシ設定は、OSとアプリケーションが織りなす複雑な階層構造の理解が鍵です。普遍的な標準がないため、環境変数、アプリ固有コマンド、設定ファイルを状況に応じて使い分ける必要があります。特に、WindowsのWinHTTPとWinINETの二重構造や、Git、Dockerといったツールの独自要件は、多くの技術者が直面する共通の課題です。

この記事で解説したように、各レイヤーの役割を体系的に理解し、正しいツールと構文を選べば、これらの課題は克服できます。認証情報を扱う際のセキュリティリスクを常に念頭に置き、安全な対策を講じることが堅牢なシステム運用には不可欠です。最後に、主要なコマンドを一覧表にまとめました。日々の業務で役立ててください。

マスターコマンドリファレンス表

OS / ツールプロキシ設定コマンドプロキシ表示コマンドプロキシ解除コマンド
Windows (システム)netsh winhttp set proxy...netsh winhttp show proxynetsh winhttp reset proxy
macOS (システム)networksetup -setwebproxy...networksetup -getwebproxy...networksetup -setwebproxystate... off
Linux (シェル)export http_proxy="..."echo $http_proxyunset http_proxy
Gitgit config --global http.proxy...git config --global --get http.proxygit config --global --unset http.proxy
Docker (デーモン)daemon.jsonまたはsystemdファイルを編集systemctl show --property=Environment docker設定を削除して再起動
npmnpm config set proxy...npm config get proxynpm config rm proxy
APT/etc/apt/apt.conf.d/...を編集cat /etc/apt/apt.conf.d/...設定ファイルを削除
YUM/DNF/etc/yum.confを編集cat /etc/yum.conf設定行を削除
よかったらシェアしてね!
  • URLをコピーしました!
タップできる目次