はじめに
Linux 環境でのプロキシサーバー構築において、長年にわたりデファクトスタンダードとして利用されている OSS(オープンソースソフトウェア)が「Squid」です。Web アクセスを中継・キャッシュすることで通信を最適化するだけでなく、アクセス制御やセキュリティの要としても機能します。
本記事では、Squid Proxy の基本概念である「フォワードプロキシ」と「リバースプロキシ」の違いから、モダンな Linux ディストリビューション(Ubuntu / Rocky Linux / AlmaLinux)におけるインストール手順、そして実務で使える squid.conf の具体的な設定例までを体系的に解説します。
Squid Proxy とは?フォワードとリバースの違い
プロキシ(Proxy)とは「代理」を意味し、クライアントとサーバーの間に入って通信を中継する仕組みのことです。Squid はこのプロキシサーバーを構築するためのソフトウェアであり、中継の「方向(誰の代理をするか)」によって、主に 2 つの役割を持たせることができます。

フォワードプロキシ(社内からインターネットへのアクセス中継)
企業などの内部ネットワークからインターネットへアクセスする際に、クライアントの「代理」として Web サイトへリクエストを送信する方式です。一般的な「プロキシ」という言葉はこちらを指すことが多いです。
特定のセグメント(IP アドレス)からの通信のみを許可・拒否します。
クライアントの本来の IP アドレスを隠蔽し、外部の Web サイトに社内ネットワークの情報を漏らしません。
一度取得した Web ページのデータを Squid 内に保存し、次回以降のアクセスを高速化するとともに回線帯域を節約します。
リバースプロキシ(インターネットから社内 Web サーバーへのアクセス中継)
外部(インターネット)から内部の Web サーバーへアクセスが来る際に、Web サーバーの「代理」としてリクエストを最前線で受け付ける方式です。
重要なデータを持つ Web サーバーを直接インターネットに公開せず、DMZ(非武装地帯)などに配置した Squid が通信を仲介することで、外部からの直接攻撃を防ぎます。
背後に同じ処理をする Web サーバーを複数台並べ、Squid がアクセスを振り分けることで、大量のリクエストを安定して処理するシステムを構築できます。
Squid のインストール手順
Squid は、主要な Linux ディストリビューションの標準リポジトリから簡単にインストールすることが可能です。お使いの OS 環境に合わせて、以下のコマンドを実行してください。
Ubuntu 環境の場合(apt を使用)
sudo apt update
sudo apt install squid -yRocky Linux / AlmaLinux 環境の場合(dnf を使用)
sudo dnf install squid -yインストールが完了すると、Squid のメイン設定ファイルである squid.conf が /etc/squid/squid.conf に作成されます。設定を変更する前に、元のファイルをバックアップしておくことを推奨します。
sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.org【フォワードプロキシ編】squid.conf の基本設定
社内ネットワークからインターネットへのアクセスを中継する「フォワードプロキシ」として動作させるための基本設定を行います。エディタ(viやnanoなど)で /etc/squid/squid.conf を開き、以下の内容を追記・修正します。
待ち受けポートとホスト名の設定
デフォルトのポート番号(3128)から変更する場合や、プロキシサーバーのホスト名を明示する場合の設定です。
# 待ち受けポートを8080に指定(デフォルトは3128)
http_port 8080
# プロキシサーバーのホスト名を定義
visible_hostname myproxyACL(アクセスコントロールリスト)による接続元 IP の制限
セキュリティを確保するため、プロキシの利用を許可する社内ネットワーク(IP アドレス帯)を定義します。
# 接続を許可するネットワーク(例: 192.168.1.0/24)を「myacl」として定義
acl myacl src 192.168.1.0/24
# 「myacl」からのアクセスを許可
http_access allow myacl
# それ以外のアクセスをすべて拒否(※http_access allow myacl より下に記述すること)
http_access deny all
Squid の http_access は上から順に評価されるため、必ず「許可」ルールのあとに「すべて拒否(deny all)」を記述してください。
匿名化設定(アクセス先への自 IP 隠蔽)
プロキシサーバーを経由していることや、背後にいるクライアントの本来の IP アドレス(プライベート IP など)が外部の Web サイトに漏れないようにするための設定です。
# クライアントのIPアドレスを隠蔽する
forwarded_for off
# プロキシ経由のアクセスであることをアクセス先に知られないようにヘッダーを削除する
request_header_access X-Forwarded-For deny all
request_header_access Via deny all
request_header_access Cache-Control deny all※旧バージョンの Squid では header_access というディレクティブが使われていましたが、現在のモダンな環境(Squid 3系以降)では廃止されており、request_header_access を使用しないと起動エラーになるため注意が必要です。
【リバースプロキシ編】squid.conf の応用設定
インターネットからのアクセスを社内の Web サーバーへ中継する「リバースプロキシ」として動作させる場合の設定です。DMZ 等に配置した Squid が代理で応答し、バックエンドの Web サーバーを保護・負荷分散します。
以下の設定を squid.conf に記述します。



フォワードプロキシとは用途が異なるため、要件に合わせて個別に設定してください。
# リバースプロキシとして80番ポートで待ち受ける(accelオプションを付与)
http_port 80 accel defaultsite=10.1.23.253
# 転送先となる社内の実Webサーバー(オリジンサーバー)のIPとポートを指定
cache_peer 10.1.23.253 parent 80 0 no-query originserver
# メモリに保持するキャッシュサイズを指定(サーバーの搭載メモリに応じて調整)
cache_mem 256 MB
# プロキシサーバー自身のホスト名を定義
visible_hostname prox.srv.world上記の構成により、クライアントから Squid(80番ポート)へ送られたリクエストは、背後にある実サーバー(10.1.23.253)へと安全に転送され、取得した Web コンテンツは Squid のメモリ上にキャッシュされます。
起動と動作確認・トラブルシューティング
設定ファイルの編集が完了したら、サービスを起動して通信が正しく行われるか確認します。CentOS 6時代は init.d スクリプトを使用していましたが、現在のUbuntuやRocky Linux等のモダンなOSでは systemctl コマンドを使用します。
キャッシュの初期化とサービスの起動
Squid を初めて起動する際、またはキャッシュディレクトリの設定を追加した場合は、スワップディレクトリの初期化を行います。
# キャッシュディレクトリの作成(初期化)
sudo squid -z
# Squidサービスの起動と、OS起動時の自動実行の有効化
sudo systemctl start squid
sudo systemctl enable squid設定ファイルのリロード(無停止反映)
運用中に squid.conf の設定を変更した際、サービスを再起動(restart)すると通信中の既存セッションが切断されてしまいます。影響を与えずに設定だけを再読み込みさせるには、以下のコマンドを使用します。
sudo systemctl reload squid
# または
sudo squid -k reconfigure動作確認とトラブルシューティング
意図した通りにプロキシが機能しているか、またはエラーが出ていないかを確認するためのコマンド群です。
アクセスログのリアルタイム監視
クライアントからのリクエストが正しく Squid に到達し、処理されているかを確認します。
sudo tail -f /var/log/squid/access.log確立されたセッション数の確認
現在のネットワーク接続状態を確認します。(※旧環境で使われていた netstat コマンドは非推奨となっているため、後継の ss コマンドを使用します)
ss -napt | grep squid | grep -i ESTAB | wc -lまとめ
本記事では、Squid Proxy の基本概念と、モダンな Linux 環境における構築手順、および代表的な設定例について解説しました。
- Squid はフォワード(内部から外部)とリバース(外部から内部)の両方で活用できる。
- Ubuntu は apt、Rocky/AlmaLinux は dnf を利用して標準リポジトリから容易に導入可能である。
- フォワードプロキシでは ACL による IP 制限や匿名化(ヘッダー削除)でセキュリティを高める。
- リバースプロキシでは cache_peer を用いて Web サーバーの保護と応答の高速化を図る。
- サービスの起動や設定の無停止反映(リロード)には systemctl コマンドを利用する。
以上、最後までお読みいただきありがとうございました。


