ブログに戻る

WindowsとLinuxでのプロキシ設定:2025年完全ガイド

<p>195カ国以上</p>

📅2025年11月13日

本記事シリーズの内容: Windows 10/11 および Linux (Ubuntu, Debian, CentOS) オペレーティングシステムにおけるプロキシサーバー設定の完全ガイド。グラフィカルインターフェースからコマンドライン、レジストリ、環境変数、PACファイル、自動設定に至るまでの全設定方法を解説します。本記事は2025年の最新OSアップデートに対応しています。

🪟 はじめに:Windowsでプロキシを設定する理由

Windowsでプロキシサーバーを設定することは、企業ネットワークでの作業、地域制限の回避、プライバシー保護、Webスクレイピングの自動化にとって重要なスキルです。2025年現在、WindowsではシンプルなGUIから強力なコマンドラインツールまで、プロキシを設定するための多くの方法が提供されています。

Windowsでプロキシを使用する主なシナリオ

🏢 企業ネットワーク

ほとんどの企業は、インターネットアクセス、トラフィック制御、セキュリティ確保のために、企業プロキシの使用を義務付けています。

🔒 プライバシー

プロキシを使用することで、実際のIPアドレスを隠し、個人情報を保護し、地域制限を回避できます。

⚙️ 自動化

Webスクレイピング、データ解析、自動テストには、IPのローテーションと制限回避のためにプロキシが不可欠です。

🌍 ジオロケーション

テスト、価格監視、サービス利用可能性の確認のために、異なる国からのコンテンツへのアクセス。

✅ このパートで学ぶこと

  • Windows 10および11のGUIによるプロキシ設定
  • 従来のコントロールパネルの使用方法
  • 詳細設定のためのWindowsレジストリ操作
  • PowerShellおよびコマンドラインによる自動化
  • 環境変数の設定
  • 特定のアプリケーションごとのプロキシ設定

🎨 Windows 11でのGUIによるプロキシ設定

Windows 11は、ナビゲーションが改善された更新された設定インターフェースを提供します。2025年現在、この方法は最も簡単であり、ほとんどのユーザーに推奨されます。

ステップバイステップガイド

ステップ1:設定を開く

Windows + Iを押すか、スタートメニューを開いて歯車アイコン(設定)を選択します。

💡 ヒント: タスクバーのネットワークアイコンを右クリックして「ネットワークとインターネットの設定」を選択することもできます。

ステップ2:プロキシ設定への移動

設定ウィンドウで、左側のパネルから以下を選択します。

  1. ネットワークとインターネット (Network & Internet)
  2. 下にスクロールして プロキシ (Proxy) を選択

ステップ3:設定方法の選択

Windows 11では、プロキシ設定に3つの方法があります。

🔄 自動検出

デフォルトでオン。WindowsはDHCPまたはDNS経由でプロキシ設定を自動的に検出します。

📜 セットアップスクリプトの使用

PACファイル用。設定スクリプトのURLを入力します。

⚙️ 手動設定

最も一般的な方法。プロキシのIPアドレスとポートを手動で入力します。

ステップ4:手動設定

  1. 「手動セットアップ」セクションで「セットアップ」ボタンをクリック
  2. 「プロキシ サーバーを使用する」のトグルをオンにします
  3. プロキシサーバーのIPアドレスまたはドメイン名を入力します
  4. ポート (通常 8080, 3128, 80 など) を入力します
  5. (オプション) 「プロキシ サーバーを使用しないアドレス」のフィールドに除外リストを追加します
  6. 「保存」をクリックします
設定例:
プロキシ サーバーのアドレス: 192.168.1.100
ポート: 8080

プロキシを使用しない宛先:
localhost;127.0.0.1;*.local;192.168.*

⚠️ 重要: Windows 11のプロキシ設定は、WinHTTPおよびWinINET APIを使用するすべてのアプリケーションにシステム全体で適用されます。ただし、Firefoxなどの一部のアプリケーションは独自のプロキシ設定を使用します。

🖥️ Windows 10でのプロキシ設定

Windows 10でのプロキシ設定プロセスはWindows 11と非常によく似ていますが、インターフェースに若干の違いがあります。この方法は2025年現在も数百万人のユーザーにとって有効です。

Windows 10の手順

方法1:Windowsの設定経由

  1. Windows + Iを押して設定を開きます
  2. ネットワークとインターネットを選択します
  3. 左パネルでプロキシ サーバーを選択します
  4. 「手動プロキシ セットアップ」セクションで「プロキシ サーバーを使用する」をオンにします
  5. アドレスとポートを入力します
  6. 「保存」をクリックします

除外設定

プロキシを使用しないアドレスは、除外フィールドに追加します。

localhost;127.0.0.1;*.local;intranet.company.com

アドレスはセミコロン (;) で区切ります。ワイルドカード (*) も使用可能です。

🎛️ 従来のコントロールパネル (Internet Options)

古くからある方法ですが、依然として機能的であり、最新のインターフェースでは利用できない高度な設定オプションを提供します。

Internet Optionsへのアクセス

開く方法:

1️⃣ 実行コマンドから

Windows + Rを押し、以下を入力します:

inetcpl.cpl
2️⃣ コントロールパネルから

コントロールパネル → ネットワークとインターネット → インターネットのプロパティ

3️⃣ Internet Explorerから

メニュー → ツール → インターネットのプロパティ

プロキシの設定

  1. 「接続」タブを開きます
  2. 「LANの設定」ボタンをクリックします
  3. 「プロキシ サーバー」セクションで「プロキシ サーバーを使用する」にチェックを入れます
  4. 詳細設定を行うには「詳細設定」ボタンをクリックします

詳細なプロキシ設定

「詳細設定」ボタンでは、プロトコルごとに異なるプロキシを設定できます。

プロトコル プロキシ アドレス ポート
HTTP 192.168.1.100 8080
Secure (HTTPS) 192.168.1.100 8443
FTP 192.168.1.100 2121
Socks 192.168.1.100 1080

利点: プロトコルごとに異なるプロキシを使用可能

📝 Windowsレジストリによる設定

Windowsレジストリは、システム設定を直接制御するための強力なツールです。この方法は、スクリプトによる自動化や上級ユーザーに適しています。

⚠️ 警告: レジストリの不適切な編集はシステムの動作を妨げる可能性があります。変更を加える前に、必ずレジストリのバックアップを作成してください。理解している場合にのみこの方法を使用してください。

プロキシ設定のためのレジストリキー

設定の場所

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings

主要なパラメータ

パラメータ 説明
ProxyEnable DWORD 1 プロキシを有効にする (0 = 無効)
ProxyServer String 192.168.1.100:8080 プロキシのアドレスとポート
ProxyOverride String localhost;127.*;*.local 除外リスト (プロキシを使用しないアドレス)
AutoConfigURL String http://proxy/proxy.pac PACファイルのURL

インポート用の.REGファイル例

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings]
"ProxyEnable"=dword:00000001
"ProxyServer"="192.168.1.100:8080"
"ProxyOverride"="localhost;127.0.0.1;*.local"

このテキストを.reg拡張子のファイルとして保存し、ダブルクリックしてレジストリにインポートします。

⚡ PowerShellによる設定

PowerShellは、Windowsの設定を自動化するためのモダンで強力なツールです。多数のコンピューターへの一括設定や構成の自動化に最適です。

プロキシ管理のためのPowerShellコマンド

プロキシの有効化

# プロキシ サーバーのアドレスを設定
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings" `
  -Name ProxyServer -Value "192.168.1.100:8080"

# プロキシを有効化
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings" `
  -Name ProxyEnable -Value 1

# 変更を適用 (システムに通知)
$signature = @'
[DllImport("wininet.dll")]
public static extern bool InternetSetOption(int hInternet, int dwOption, int lpBuffer, int dwBufferLength);
'@
$type = Add-Type -MemberDefinition $signature -Name wininet -Namespace pinvoke -PassThru
$type::InternetSetOption(0, 39, 0, 0) | Out-Null

プロキシの無効化

# プロキシを無効化
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings" `
  -Name ProxyEnable -Value 0

現在の設定の確認

# すべてのプロキシ設定を取得
Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings" | `
  Select-Object ProxyEnable, ProxyServer, ProxyOverride, AutoConfigURL

プロキシ設定用の完成された関数

function Set-Proxy {
  param(
    [Parameter(Mandatory=$true)]
    [string]$Server,
    [Parameter(Mandatory=$true)]
    [int]$Port,
    [string]$Override = "localhost;127.0.0.1;*.local"
  )

  $proxyString = "${Server}:${Port}"
  $regPath = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings"

  Set-ItemProperty -Path $regPath -Name ProxyServer -Value $proxyString
  Set-ItemProperty -Path $regPath -Name ProxyEnable -Value 1
  Set-ItemProperty -Path $regPath -Name ProxyOverride -Value $Override

  Write-Host "プロキシを設定しました: $proxyString" -ForegroundColor Green
}

# 使用例:
Set-Proxy -Server "192.168.1.100" -Port 8080

💻 コマンドライン (netsh) による設定

netsh (Network Shell) ユーティリティは、プロキシを含むWindowsネットワーク設定を管理するための従来のコマンドラインツールです。WinHTTPのプロキシ設定に影響します。

netsh winhttp コマンド

プロキシの設定

netsh winhttp set proxy proxy-server="192.168.1.100:8080" bypass-list="localhost;*.local"

IEからインポート

netsh winhttp import proxy source=ie

Internet Explorerの設定をWinHTTPにインポートします。

現在の設定の表示

netsh winhttp show proxy

プロキシ設定のリセット

netsh winhttp reset proxy

💡 ヒント: netsh winhttp コマンドは、Windows Update、PowerShell、および多くのシステムアプリケーションが使用するシステム全体のWinHTTP設定に影響を与えますが、Internet Explorer/Edgeの設定には影響しません。

🌐 Windowsの環境変数

多くのコンソールユーティリティやアプリケーション(Python、Node.js、Git、curlなど)は、プロキシサーバーを定義するために環境変数を使用します。これは開発ツールにとって特に重要です。

標準のプロキシ変数

一時的な設定 (コマンドライン経由)

set HTTP_PROXY=http://192.168.1.100:8080
set HTTPS_PROXY=http://192.168.1.100:8080
set NO_PROXY=localhost,127.0.0.1,.local

これらの変数は現在のコマンドプロンプトセッションでのみ有効です。

永続的な設定 (GUI経由)

  1. 「システム」(Windows + Pause) を開きます
  2. 「システムの詳細設定」をクリックします
  3. 「詳細設定」タブ → 「環境変数」をクリックします
  4. 「ユーザー環境変数」セクションで「新規作成」をクリックします
  5. HTTP_PROXY, HTTPS_PROXY, NO_PROXY の変数を追加します

永続的な設定 (PowerShell経由)

[Environment]::SetEnvironmentVariable("HTTP_PROXY", "http://192.168.1.100:8080", "User")
[Environment]::SetEnvironmentVariable("HTTPS_PROXY", "http://192.168.1.100:8080", "User")
[Environment]::SetEnvironmentVariable("NO_PROXY", "localhost,127.0.0.1", "User")

認証付きの形式

set HTTP_PROXY=http://username:password@192.168.1.100:8080
set HTTPS_PROXY=http://username:password@192.168.1.100:8080

⚠️ パスワード内の特殊文字はURLエンコードする必要があります (@ → %40, : → %3A)

🎯 特定アプリケーションごとの設定

一部のアプリケーションはシステムプロキシ設定を使用せず、独自の構成を必要とします。一般的なツールについて見ていきましょう。

🦊 Firefox

Firefoxは独自のプロキシ設定を使用します。

  1. メニュー → 設定 → ネットワーク設定
  2. 「設定」ボタンをクリック
  3. プロキシを手動で設定
  4. アドレスとポートを入力

📦 Git

Gitのプロキシ設定:

git config --global http.proxy http://192.168.1.100:8080
git config --global https.proxy http://192.168.1.100:8080

🐍 Python pip

pipの設定:

pip install package_name --proxy http://192.168.1.100:8080

📦 npm

npmの設定:

npm config set proxy http://192.168.1.100:8080
npm config set https-proxy http://192.168.1.100:8080

🎁 ProxyCove — Windows向け信頼性の高いプロキシ: すべての認証方法 (IPホワイトリスト、ログイン:パスワード) をサポートし、あらゆるアプリケーションに対応、24時間年中無休のテクニカルサポートを提供します。登録はこちら → プロモコード ARTHELLO+$1.3 を獲得できます。

続く...

次のパートでは、Linux (Ubuntu, Debian, CentOS) でのプロキシ設定、環境変数、apt/yumのプロキシ設定について解説します。

Linuxでのプロキシ設定:Ubuntu, Debian, CentOS - パート2

本パートの内容: Ubuntu, Debian, CentOS/RHELなど、様々なLinuxディストリビューションでのプロキシサーバー設定の詳細ガイド。システム環境変数、GUI設定、パッケージマネージャーaptおよびyumの設定、特定のアプリケーションの設定について解説します。本記事は2025年の最新情報に基づいています。

🐧 Linuxにおけるプロキシ設定の特性

Windowsとは異なり、Linuxにはプロキシサーバー設定のための単一の中央集権的な場所がありません。代わりに、環境変数、設定ファイル、個別のアプリケーション設定、およびGUI(デスクトップディストリビューションの場合)など、さまざまな方法が使用されます。

Linuxでのプロキシ設定の主なアプローチ

🌐 環境変数

最も一般的な方法。http_proxy, https_proxy, no_proxy変数は、ほとんどのコンソールユーティリティによって使用されます。

📝 設定ファイル

/etc/environment, /etc/profile, ~/.bashrc など、システムおよびユーザーごとの設定ファイル。

📦 パッケージマネージャー

APT、YUM/DNFは、それぞれの設定ファイルで個別に設定が必要です。

🎨 グラフィカルインターフェース

GNOMEやKDEなどのデスクトップ環境では、GUIによる設定が可能です(デスクトップ版のみ)。

⚠️ 重要な注意点

  • Linuxにはプロキシ設定の必須標準はありません。各アプリケーションはシステム設定を無視する場合があります。
  • 環境変数は大文字と小文字の両方 (HTTP_PROXYとhttp_proxy) で設定する必要があります。
  • APTやYUMは、環境変数を自動的に使用しません。
  • GUIがないサーバー版では、コマンドラインと設定ファイルのみを使用します。

🔧 環境変数 (http_proxy, https_proxy)

環境変数は、コンソールアプリケーション(curl, wget, 適切に設定されたapt-getなど)でプロキシを設定する標準的な方法です。

主要なプロキシ変数

主要な変数のリスト

変数 形式 説明
http_proxy http://proxy:8080 HTTPトラフィック用プロキシ
https_proxy http://proxy:8080 HTTPSトラフィック用プロキシ
ftp_proxy http://proxy:8080 FTPトラフィック用プロキシ
no_proxy localhost,127.0.0.1,.local プロキシを使用しないアドレス (除外リスト)
HTTP_PROXY http://proxy:8080 http_proxyの別名 (大文字)
HTTPS_PROXY http://proxy:8080 https_proxyの別名 (大文字)

一時的な設定 (現在のセッションのみ)

export http_proxy="http://192.168.1.100:8080"
export https_proxy="http://192.168.1.100:8080"
export ftp_proxy="http://192.168.1.100:8080"
export no_proxy="localhost,127.0.0.1,*.local"

# 互換性のために大文字も設定
export HTTP_PROXY="http://192.168.1.100:8080"
export HTTPS_PROXY="http://192.168.1.100:8080"
export FTP_PROXY="http://192.168.1.100:8080"
export NO_PROXY="localhost,127.0.0.1,*.local"

これらの変数は現在のターミナルセッションでのみ有効です。

認証付きの形式

export http_proxy="http://username:password@192.168.1.100:8080"
export https_proxy="http://username:password@192.168.1.100:8080"

⚠️ パスワードに特殊文字が含まれる場合は、URLエンコードを使用してください: @ → %40, : → %3A

設定変数の確認

# すべてのproxy関連変数を表示
env | grep -i proxy

# 特定の変数を表示
echo $http_proxy
echo $https_proxy

プロキシの無効化

unset http_proxy
unset https_proxy
unset ftp_proxy
unset HTTP_PROXY
unset HTTPS_PROXY
unset FTP_PROXY

🌍 システム全体の設定 (/etc/environment)

ファイル /etc/environment には、システム起動時にすべてのユーザーに適用されるシステム環境変数が含まれています。

永続的なシステム設定

ステップ1:ファイルの編集

sudo nano /etc/environment

ステップ2:変数の追加

ファイルの末尾に以下の行を追加します:

http_proxy="http://192.168.1.100:8080"
https_proxy="http://192.168.1.100:8080"
ftp_proxy="http://192.168.1.100:8080"
no_proxy="localhost,127.0.0.1,*.local"

HTTP_PROXY="http://192.168.1.100:8080"
HTTPS_PROXY="http://192.168.1.100:8080"
FTP_PROXY="http://192.168.1.100:8080"
NO_PROXY="localhost,127.0.0.1,*.local"

ステップ3:変更の適用

# システムの再起動 (推奨)
sudo reboot

# または現在のセッションに適用
source /etc/environment

💡 ヒント: /etc/environment は変数の展開やコマンドの実行をサポートしていません。より複雑なロジックが必要な場合は、/etc/profile または /etc/bash.bashrc を使用してください。

🐧 Ubuntu/Debianでの設定

UbuntuとDebianは最も人気のあるLinuxディストリビューションです。デスクトップ版のGUI設定と、サーバー版のコマンドライン設定の両方を見ていきましょう。

🎨 GUI経由 (Ubuntu Desktop)

GNOME設定

  1. 設定 (Settings) を開きます
  2. ネットワーク (Network) を選択
  3. 接続の横にある歯車アイコンをクリック
  4. プロキシ (Proxy) タブ
  5. 手動 (Manual) を選択
  6. HTTP, HTTPS, FTP, Socks のアドレスとポートを入力
  7. 適用 (Apply) をクリック

⌨️ コマンドライン経由

gsettings (GNOME用)

gsettings set org.gnome.system.proxy mode 'manual'
gsettings set org.gnome.system.proxy.http host '192.168.1.100'
gsettings set org.gnome.system.proxy.http port 8080

🔴 CentOS/RHELでの設定

CentOSとRed Hat Enterprise Linuxは類似した設定構造を使用しています。2025年現在、Rocky LinuxやAlmaLinuxへの移行が進んでいますが、これらの原則は同じです。

RHEL系でのシステム設定

方法1: /etc/profile.d/

プロキシ設定用のファイルを作成します:

sudo nano /etc/profile.d/proxy.sh

以下を追記します:

#!/bin/bash

export http_proxy="http://192.168.1.100:8080"
export https_proxy="http://192.168.1.100:8080"
export ftp_proxy="http://192.168.1.100:8080"
export no_proxy="localhost,127.0.0.1,*.local"

export HTTP_PROXY="http://192.168.1.100:8080"
export HTTPS_PROXY="http://192.168.1.100:8080"
export FTP_PROXY="http://192.168.1.100:8080"
export NO_PROXY="localhost,127.0.0.1,*.local"

ファイルに実行権限を付与: sudo chmod +x /etc/profile.d/proxy.sh

方法2: /etc/environment

Ubuntu/Debianと同様に /etc/environment を編集します。

📦 APTのプロキシ設定

重要: Ubuntu/DebianのAPT (Advanced Package Tool) は、システム環境変数を自動的に使用しません。プロキシ経由での動作には、個別の設定が必要です。

APTのプロキシ設定

方法1: apt.conf.d/ (推奨)

設定ファイルを作成します:

sudo nano /etc/apt/apt.conf.d/02proxy

以下を追記します:

Acquire::http::Proxy "http://192.168.1.100:8080";
Acquire::https::Proxy "http://192.168.1.100:8080";
Acquire::ftp::Proxy "http://192.168.1.100:8080";

認証付き

Acquire::http::Proxy "http://username:password@192.168.1.100:8080";
Acquire::https::Proxy "http://username:password@192.168.1.100:8080";

方法2:一時的な設定 (単一コマンド)

sudo apt-get -o Acquire::http::proxy="http://192.168.1.100:8080" update

現在のaptコマンドにのみ適用されます。

APT設定の確認

# 現在のAPT設定を表示
apt-config dump | grep -i proxy

# プロキシ経由での更新テスト
sudo apt-get update

特定のホストの除外

Acquire::http::Proxy "http://192.168.1.100:8080";
Acquire::http::Proxy::ppa.launchpad.net "DIRECT";

"DIRECT" は、指定されたホストへの接続にプロキシを使用しないことを意味します。

📦 YUM/DNFのプロキシ設定

YUM (CentOS 7以下) および DNF (CentOS 8+, Fedora, Rocky Linux, AlmaLinux) も、プロキシ設定には個別の対応が必要です。

YUM/DNFのグローバル設定

YUM (CentOS 7 以前)

設定ファイルを編集します:

sudo nano /etc/yum.conf

[main]セクションに以下を追加します:

[main]
proxy=http://192.168.1.100:8080
proxy_username=your_username
proxy_password=your_password

認証が不要な場合は、proxy_usernameとproxy_passwordを省略できます。

DNF (CentOS 8+, Fedora, Rocky Linux)

設定ファイルを編集します:

sudo nano /etc/dnf/dnf.conf

[main]セクションに以下を追加します:

[main]
proxy=http://192.168.1.100:8080
proxy_username=your_username
proxy_password=your_password

特定のレポジトリの設定

/etc/yum.repos.d/*.repo ファイル内で、特定のレポジトリに対してプロキシを設定できます:

[epel]
name=Extra Packages for Enterprise Linux 8
baseurl=https://download.fedoraproject.org/pub/epel/8/$basearch
proxy=http://192.168.1.100:8080
proxy_username=username
proxy_password=password

特定のレポジトリのプロキシ無効化

[local-repo]
name=Local Repository
baseurl=http://192.168.1.50/repo
proxy=_none_

proxy=_none_ は、このレポジトリに対してプロキシを無効にします。

設定の確認

# YUMの場合
sudo yum repolist

# DNFの場合
sudo dnf repolist

# 設定内容の表示
sudo dnf config-manager --dump | grep -i proxy

👤 .bashrc および .profileでの設定

特定のユーザーのみに適用されるプロキシ設定には、ホームディレクトリ内の .bashrc または .profile ファイルを使用します。

ユーザーごとの設定

.bashrcの編集

nano ~/.bashrc

末尾に以下を追加します:

# Proxy settings
export http_proxy="http://192.168.1.100:8080"
export https_proxy="http://192.168.1.100:8080"
export ftp_proxy="http://192.168.1.100:8080"
export no_proxy="localhost,127.0.0.1,*.local"

export HTTP_PROXY=$http_proxy
export HTTPS_PROXY=$https_proxy
export FTP_PROXY=$ftp_proxy
export NO_PROXY=$no_proxy

変更を適用するには:

source ~/.bashrc

プロキシ管理関数の作成

# プロキシを有効にする関数
proxy_on() {
  export http_proxy="http://192.168.1.100:8080"
  export https_proxy="http://192.168.1.100:8080"
  export HTTP_PROXY=$http_proxy
  export HTTPS_PROXY=$https_proxy
  echo "Proxy enabled"
}

# プロキシを無効にする関数
proxy_off() {
  unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY
  echo "Proxy disabled"
}

# プロキシの状態を確認する関数
proxy_status() {
  echo "http_proxy: $http_proxy"
  echo "https_proxy: $https_proxy"
}

使用法: proxy_on, proxy_off, proxy_status

🛠️ アプリケーション (curl, wget, git) の設定

一部の一般的なユーティリティは、独自のプロキシ設定方法または設定ファイルを持っています。

📡 curl

curlは環境変数を使用しますが、パラメータでプロキシを指定することも可能です:

curl -x http://192.168.1.100:8080 https://example.com

# 認証付き
curl -x http://user:pass@192.168.1.100:8080 https://example.com

# .curlrc経由
echo 'proxy = "http://192.168.1.100:8080"' >> ~/.curlrc

📥 wget

wgetも環境変数を使用しますが、設定ファイルがあります:

# ~/.wgetrc
http_proxy = http://192.168.1.100:8080
https_proxy = http://192.168.1.100:8080
use_proxy = on

🔧 git

Git独自のプロキシ設定システム:

# 全リポジトリに対してグローバルに設定
git config --global http.proxy http://192.168.1.100:8080
git config --global https.proxy http://192.168.1.100:8080

# 特定のリポジトリに対して設定
git config http.proxy http://192.168.1.100:8080

# プロキシを無効化
git config --global --unset http.proxy
git config --global --unset https.proxy

🐳 Docker

Dockerデーモンとクライアントの設定が必要です:

# /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://192.168.1.100:8080"
Environment="HTTPS_PROXY=http://192.168.1.100:8080"
Environment="NO_PROXY=localhost,127.0.0.1"

🎁 ProxyCove — Linux向けプロフェッショナルプロキシ: 全てのディストリビューションとの完全な互換性、IPホワイトリストと認証のサポート、あらゆるアプリケーションでの動作を保証します。登録はこちら → プロモコード ARTHELLO+$1.3 を獲得できます。

最終パートはもうすぐ!

最終パートでは、PACファイル、自動設定、一般的な問題のトラブルシューティングと結論を扱います。

PACファイル、自動設定、トラブルシューティング - 最終回

本最終パートの内容: PAC (Proxy Auto-Configuration) ファイルの完全ガイド、WPADによるプロキシの自動検出、WindowsおよびLinuxにおける一般的なプロキシ問題の診断と解決、2025年のベストプラクティスと結論。

📜 PACファイルとは

PAC (Proxy Auto-Configuration) は、特定のURLに対してどのプロキシサーバーを使用するかを自動的に決定するJavaScriptファイルです。これにより、トラフィックルーティングの柔軟なルールを作成でき、各クライアントを手動で設定する必要がなくなります。

PACファイルの利点

✅ 柔軟性

異なるサイトに異なるプロキシ、ローカルリソースへの直接アクセス、複数のプロキシによる耐障害性。

✅ 一元管理

PACファイルを1か所変更するだけで、すべてのクライアントに適用されます。

✅ 条件付きロジック

ドメイン、IPサブネット、時刻、曜日などに基づいてプロキシを選択できます。

✅ パフォーマンス

複数のプロキシ間の負荷分散、障害発生時の自動切り替え。

PACファイルの使用が推奨されるケース

  • 企業ネットワーク — 社内リソースと外部リソースで異なるプロキシを使用する場合
  • 複雑なルーティング — 国別やサービス別にプロキシを使い分ける場合
  • 冗長化 — メインプロキシがダウンした場合にバックアッププロキシに自動的に切り替える場合
  • 最適化 — 最も効率的なルートにトラフィックを誘導する場合

💻 PACファイルの構文と構造

PACファイルは、FindProxyForURL(url, host) というJavaScript関数を含むテキストファイルです。

基本構造

function FindProxyForURL(url, host) {
  // ここにロジックを記述
  // プロキシ設定を文字列として返す
  return "PROXY proxy.example.com:8080";
}

関数の引数

引数 説明
url ブラウザがアクセスしようとしている完全なURL https://example.com/page
host URLから抽出されたホスト名のみ example.com

返される値

説明
DIRECT プロキシなしで直接接続
PROXY host:port HTTP/HTTPSプロキシ
SOCKS host:port SOCKSプロキシ (v4/v5)
SOCKS5 host:port SOCKS5プロキシを明示
PROXY p1:8080; PROXY p2:8080; DIRECT 複数の選択肢 (フォールバック)

組み込みPAC関数

関数 説明
isPlainHostName(host) ホストがドットを含まない単純な名前か確認
dnsDomainIs(host, domain) ホストが指定ドメインに属するか確認
localHostOrDomainIs(host, domain) ホストとドメインを比較
isResolvable(host) ホストがDNSで解決可能か確認
isInNet(host, pattern, mask) IPアドレスがサブネット内にあるか確認
shExpMatch(str, pattern) ワイルドカード (*) や (?) を使用したパターンマッチング
weekdayRange(day1, day2) 曜日範囲の確認
dateRange(...) 日付範囲の確認
timeRange(...) 時刻範囲の確認

📚 PACファイルの実際的な例

例1:全リクエストに単一プロキシを使用

function FindProxyForURL(url, host) {
  return "PROXY proxy.company.com:8080";
}

例2:ローカルアドレスはプロキシなし

function FindProxyForURL(url, host) {
  // ローカルホストは直接接続
  if (isPlainHostName(host) ||
      dnsDomainIs(host, ".local") ||
      isInNet(host, "192.168.0.0", "255.255.0.0") ||
      isInNet(host, "10.0.0.0", "255.0.0.0") ||
      host == "localhost" ||
      host == "127.0.0.1")
  {
      return "DIRECT";
  }

  // その他はプロキシ経由
  return "PROXY proxy.company.com:8080";
}

例3:ドメインごとに異なるプロキシ

function FindProxyForURL(url, host) {
  // ソーシャルメディアは専用プロキシ経由
  if (shExpMatch(host, "*.facebook.com") ||
      shExpMatch(host, "*.twitter.com") ||
      shExpMatch(host, "*.instagram.com"))
  {
      return "PROXY social-proxy.company.com:8080";
  }

  // 動画ストリーミングは別のプロキシ経由
  if (shExpMatch(host, "*.youtube.com") ||
      shExpMatch(host, "*.netflix.com"))
  {
      return "PROXY video-proxy.company.com:8080";
  }

  // ローカルリソースは直接接続
  if (isInNet(host, "10.0.0.0", "255.0.0.0"))
  {
      return "DIRECT";
  }

  // その他はメインプロキシ経由
  return "PROXY main-proxy.company.com:8080";
}

例4:耐障害性 (フォールバック)

function FindProxyForURL(url, host) {
  // ローカルアドレスは直接接続
  if (isPlainHostName(host) ||
      isInNet(host, "192.168.0.0", "255.255.0.0"))
  {
      return "DIRECT";
  }

  // メインプロキシを試行、失敗したらセカンダリ、それでもダメなら直接接続
  return "PROXY proxy1.company.com:8080; " +
         "PROXY proxy2.company.com:8080; " +
         "DIRECT";
}

ブラウザは proxy1 に接続を試み、失敗したら proxy2、それでもダメなら直接接続を試みます。

例5:時間依存のルーティング

function FindProxyForURL(url, host) {
  // 勤務時間中 (8:00-18:00) かつ平日
  if (weekdayRange("MON", "FRI") &&
      timeRange(8, 18))
  {
      return "PROXY work-proxy.company.com:8080";
  }

  // それ以外の時間帯は別のプロキシを使用
  return "PROXY night-proxy.company.com:8080";
}

例6:複雑な企業構成

function FindProxyForURL(url, host) {
  // ローカルホストは直接接続
  if (isPlainHostName(host) ||
      dnsDomainIs(host, ".local") ||
      dnsDomainIs(host, ".company.com") ||
      isInNet(host, "10.0.0.0", "255.0.0.0") ||
      isInNet(host, "172.16.0.0", "255.240.0.0") ||
      isInNet(host, "192.168.0.0", "255.255.0.0") ||
      host == "localhost" ||
      host == "127.0.0.1")
  {
      return "DIRECT";
  }

  // HTTPSトラフィックは専用SSLプロキシ経由
  if (url.substring(0, 6) == "https:")
  {
      return "PROXY ssl-proxy.company.com:8443; DIRECT";
  }

  // メディアコンテンツはキャッシュプロキシ経由
  if (shExpMatch(url, "*.mp4") ||
      shExpMatch(url, "*.mp3") ||
      shExpMatch(url, "*.jpg") ||
      shExpMatch(url, "*.png"))
  {
      return "PROXY cache-proxy.company.com:3128";
  }

  // HTTPはメインプロキシ、フォールバックあり
  return "PROXY proxy1.company.com:8080; " +
         "PROXY proxy2.company.com:8080; " +
         "DIRECT";
}

🚀 PACファイルの展開

PACファイルを記述した後、正しく配置し、クライアントがそれを使用するように設定する必要があります。

PACファイルの配置

1. Webサーバー (HTTP/HTTPS)

PACファイルをWebサーバーに配置します:

http://proxy.company.com/proxy.pac
https://proxy.company.com/proxy.pac

⚠️ MIMEタイプは application/x-ns-proxy-autoconfig である必要があります。

2. ファイルシステム (file://)

# Windows
file:///C:/proxy.pac
file://\\server\share\proxy.pac

# Linux
file:///etc/proxy.pac

テストには便利ですが、本番環境での使用は推奨されません。

ApacheでのMIMEタイプ設定

# httpd.conf または .htaccess
AddType application/x-ns-proxy-autoconfig .pac

NginxでのMIMEタイプ設定

# nginx.conf
types {
  application/x-ns-proxy-autoconfig pac;
}

クライアントの設定

Windows

設定 → ネットワークとインターネット → プロキシ → 「セットアップスクリプトを使用する」 → PACファイルのURLを入力

Linux (GNOME)

gsettings set org.gnome.system.proxy mode 'auto'
gsettings set org.gnome.system.proxy autoconfig-url 'http://proxy.company.com/proxy.pac'

Firefox

設定 → ネットワーク設定 → プロキシの自動設定 → 自動プロキシ設定のURL

🔍 WPAD — プロキシの自動検出

WPAD (Web Proxy Auto-Discovery Protocol) は、ブラウザがPACファイルを自動的に見つけるためのプロトコルです。2025年現在、主要なブラウザとOSでサポートされています。

WPADの動作原理

  1. DHCPメソッド: クライアントがDHCPサーバーにオプション252を要求し、サーバーがPACファイルのURLを返します。
  2. DNSメソッド: クライアントはDNS経由でホスト wpad.domain.com を検索します。
  3. PACのロード: ホストが見つかった場合、クライアントは http://wpad.domain.com/wpad.dat をロードしようとします。

DNS経由でのWPAD設定

DNSレコード (AまたはCNAME) を作成します:

wpad.company.com. IN A 192.168.1.100
# または
wpad.company.com. IN CNAME proxy-server.company.com.

PACファイルを http://wpad.company.com/wpad.dat に配置します。

DHCP経由でのWPAD設定

DHCPサーバーの設定でオプション252を追加します:

# ISC DHCP (dhcpd.conf)
option wpad code 252 = text;
option wpad "http://proxy.company.com/proxy.pac";

⚠️ WPADのセキュリティリスク

  • WPADハイジャック: 攻撃者がWPAD応答を偽装し、トラフィックを自身のプロキシにリダイレクトする可能性があります。
  • DNSスプーフィング: wpad.domain.com のDNSレコードを偽装する攻撃。
  • 推奨事項: WPADは信頼できる企業ネットワークでのみ使用してください。
  • 代替案: PACファイルのURLを明示的に指定する方が安全です。

🔧 トラブルシューティング:問題の診断

一般的な問題と解決策

問題1:プロキシが機能しない

症状: サイトが開かない、接続エラー

解決策:
  • プロキシサーバーの到達可能性を確認: ping proxy-host
  • ポートの確認: telnet proxy-host 8080 または nc -zv proxy-host 8080
  • ファイアウォールによるプロキシのブロックがないか確認
  • 設定のアドレスとポートが正しいか確認

問題2:エラー407 (Proxy Authentication Required)

症状: 認証要求が表示される、エラーコード407

解決策:
  • ユーザー名とパスワードが正しいか確認
  • 形式 http://user:pass@proxy:port が正しいか確認
  • 認証情報の有効期限が切れていないか確認
  • IP認証の場合、自身の外部IPがホワイトリストに登録されているか確認
  • 外部IPアドレスが変更されていないか確認

問題3:プロキシ経由で動作が遅い

症状: ページの読み込みが遅い、タイムアウト

解決策:
  • プロキシ速度の確認: curl -x proxy:port -w "@curl-format.txt" https://example.com
  • 別のプロキシサーバーを試す (利用可能な場合)
  • プロキシサーバーの負荷を確認
  • ローカルリソースへのアクセスにプロキシを使用していないか確認 (除外リストの確認)
  • DNS設定 (遅いDNSがプロキシの遅延を引き起こす可能性あり)

問題4:PACファイルが機能しない

症状: 自動設定が適用されない

解決策:
  • PACファイルのURLにアクセス可能か確認
  • MIMEタイプが正しいか確認: application/x-ns-proxy-autoconfig
  • PACファイル内のJavaScript構文を確認
  • ブラウザのDevToolsやpactesterを使用して構文をテスト
  • ブラウザのキャッシュをクリア

🧪 プロキシのテスト

テストツール

接続確認 (curl)

# HTTPプロキシの確認
curl -x http://proxy:8080 -I https://www.google.com

# 認証付き
curl -x http://user:pass@proxy:8080 https://www.google.com

# 外部IPの確認 (プロキシ経由か確認)
curl -x http://proxy:8080 https://ifconfig.me
curl -x http://proxy:8080 https://api.ipify.org

ポート確認 (netcat)

# Linux
nc -zv proxy-host 8080

# Windows (PowerShell)
Test-NetConnection -ComputerName proxy-host -Port 8080

PACファイルのテスト (Linux)

# pactesterのインストール (Ubuntu/Debian)
sudo apt-get install libpacparser1

# PACファイルのテスト
pactester -p /path/to/proxy.pac -u https://www.google.com

現在の設定確認 (Windows PowerShell)

# 現在のプロキシ設定を表示
Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings" | Select-Object ProxyEnable, ProxyServer, AutoConfigURL

# WinHTTPプロキシを表示
netsh winhttp show proxy

オンラインツール

  • whatismyip.com — 外部IPの確認
  • ifconfig.me — コンソール形式でIPを表示
  • browserleaks.com/proxy — プロキシの詳細情報
  • ipleak.net — DNS、WebRTCのリークチェック

🔒 プロキシ使用時のセキュリティ

セキュリティに関する推奨事項

✅ HTTPSプロキシの使用

クライアントとプロキシ間のデータを暗号化し、盗聴から保護します。

✅ パスワードの平文保存を避ける

パスワードはパスワードマネージャー、環境変数、または暗号化された設定ファイルに保存してください。

✅ 証明書の検証

MITMプロキシを使用する場合、プロキシサーバーのルート証明書を信頼していることを確認してください。

✅ DNSリークの最小化

DNS-over-HTTPSを使用するか、DNSクエリをプロキシ経由でルーティングし、リークを防ぎます。

❌ 避けるべきこと

  • 機密データを扱う際に無料の公開プロキシを使用しないこと
  • SSL証明書の警告を無視しないこと
  • プロキシパスワードをコマンド履歴 (bashなど) に平文で残さないこと (コマンドの前にスペースを入れるなど)
  • 暗号化されていないHTTPプロキシでパスワードを送信しないこと

🎯 2025年のベストプラクティス

1️⃣ 適切なプロキシタイプの選択

Webスクレイピング/データ収集: 住宅用またはモバイルプロキシ
企業ネットワーク: IPホワイトリスト付きデータセンタープロキシ
ジオブロック回避: 目的の国に合わせた住宅用プロキシ

2️⃣ 複雑なルーティングにはPACファイルを使用

PACファイルは、企業環境でのインテリジェントなトラフィックルーティングに最適です。一元管理と柔軟性を提供します。

3️⃣ 除外設定を徹底する

localhost, 127.0.0.1, プライベートサブネットなど、ローカルリソースへのアクセスはプロキシを経由させないことで、アクセス速度を向上させます。

4️⃣ フォールバックを実装する

PACファイルで複数のプロキシと直接接続のオプションを組み合わせ、プロキシ障害時の耐障害性を確保します。

5️⃣ モニタリングとロギング

プロキシの動作状況、接続速度、アクセス可能性を定期的に確認し、エラーログを記録して迅速な対応に備えます。

6️⃣ ドキュメント化

すべてのプロキシ設定、PACファイル、除外リスト、復旧手順を文書化し、将来のトラブルシューティングの時間を節約します。

📝 結論と推奨事項

シリーズのまとめ

Windows

簡単な設定にはGUIを使用し、自動化にはPowerShell、詳細設定にはレジストリを活用します。コンソールツールには環境変数が必須です。

Linux

主に環境変数 (/etc/environment や ~/.bashrc) を使用します。APTやYUM/DNFは個別の設定が必要です。

PACファイル

PACファイルは複雑なルーティングシナリオで最大の柔軟性を提供します。企業環境での導入を推奨します。

トラブルシューティング

問題のほとんどは、プロキシの到達可能性、認証情報、設定の正確性の確認で解決します。curlやオンラインツールを活用して診断してください。

🏆 ProxyCove — あなたの理想的な選択肢

🌍

グローバルカバレッジ

195か国以上

高速

最大10 Gbps

🔐

セキュリティ

IP + ログイン/パス

👨‍💼

24/7サポート

日本語対応

💎

手頃な価格

$1.5/GBから

📊

API

完全統合

プロキシを使った作業を始めましょうか?

ProxyCoveに登録し、プロモコード ARTHELLO を使用して残高をチャージすると、+$1.3のボーナスがもらえます!