Instiq
第3章 · HTTPサーバーとプロキシサーバー·v1.0.0·更新 2026/7/7·読了目安 約10分

変更要約: 初版(主題2.09・副主題2.09.1〜2.09.4に対応)

3.4Squidの設定と管理

この節の要点

フォワードプロキシソフトウェアであるSquidの基本設定を学びます。設定ファイルsquid.conf、動作確認に使うsquidclient、アクセス許可を制御するhttp_accessディレクティブ、その条件を定義するacl(アクセスコントロールリスト)を押さえます。

Squidは、社内クライアントが外部Webサイトへアクセスする際に経由させるフォワードプロキシの代表的な実装です。「誰が」「どこへ」アクセスできるかを条件で組み立てるaclhttp_accessの考え方は、社内ネットワークのアクセス制御ポリシーを表現する上での中核です。

3.4.1設定ファイルと動作確認

  • 主設定ファイルはsquid.conf。プロキシとして許可するポート、キャッシュサイズ、アクセス制御ルールなどをここに記述します。
  • squidclientはSquidに対して直接リクエストを送り、動作確認やキャッシュの操作(パージ等)に使うコマンドラインツールです。

3.4.2aclとhttp_accessによるアクセス制御

  • aclディレクティブで「送信元ネットワーク」「時間帯」「宛先ドメイン」などの条件に名前を付けて定義します(例:acl localnet src 192.168.1.0/24)。
  • http_accessディレクティブで、定義したaclに対してallow(許可)かdeny(拒否)かを上から順に評価して決定します。最初に一致したルールが適用されるため、記述順序が結果を左右します。
試験ポイント

「http_accessは上から順に評価し、最初に一致したルールが適用される」「acl自体はアクセスを許可/拒否しない(条件の定義のみ)」「実際の許可/拒否を行うのはhttp_access」という役割分担が最頻出です。ルールの最後にhttp_access deny allを置き忘れると、意図せず全許可になる設定ミスも定番の出題です。

社内ネットワークからのみプロキシ利用を許可し、それ以外は拒否する典型的なsquid.confを組み立ててみます。まずacl localnet src 192.168.1.0/24で社内ネットワークのアドレス範囲にlocalnetという名前を付けます。次にhttp_access allow localnetlocalnetに一致する通信を許可し、最後にhttp_access deny allを置いてそれ以外のすべてを拒否します。ここで重要なのは、http_access上に書かれたルールから順に評価され、最初に条件が一致した時点で処理が確定する点です。仮にhttp_access deny allhttp_access allow localnetより先に書いてしまうと、localnetからの通信も含めて全て拒否されてしまいます。逆にdeny allを書き忘れると、どのaclにも一致しなかった通信の扱いが曖昧になり、意図せず外部からの利用まで許可してしまう事故につながります。設定を変更した後は、Squidプロセスへ設定再読込のシグナルを送るか再起動し、squidclientで実際にリクエストを送ってみて、期待通りに許可・拒否されるかを確認するのが安全な運用手順です。aclは「条件に名前を付けるだけ」で、それ自体はアクセスを制御しない、という点をhttp_accessとの役割分担として意識しておくと、設定ファイルを読むときに迷いません。

要素役割
squid.conf全体設定ファイルポート・キャッシュ・ルール
acl条件に名前を付ける(許可/拒否はしない)acl localnet src 192.168.1.0/24
http_accessaclへのallow/denyを順に評価http_access allow localnet
squidclient動作確認・キャッシュ操作リクエストを直接送信
注意

ひっかけ: 「aclディレクティブだけでアクセスを拒否できる」は誤りです。acl条件に名前を付けるだけで、実際に許可/拒否を行うのはhttp_accessです。また「http_accessは記述順序に関係なく、最も限定的な条件が優先される」も誤り=上から順に評価し、最初に一致したルールがそのまま適用されるため、deny allallowより前に置くと意図した許可が機能しません。

aclで条件を定義し、http_accessが上から順にallow/denyを評価するSquidのアクセス制御の流れを示す図。
http_accessは最初に一致したルールが勝つ

3.4.3この節のまとめ

  • 設定ファイルはsquid.conf、動作確認はsquidclient
  • acl=条件に名前を付けるだけhttp_access=上から順に評価しallow/denyを決定(最後にdeny allを置くのが定石)

進捗の記録にはログインが必要です。

理解度チェック

(軽い確認用)

Q1. Squidで社内ネットワーク192.168.1.0/24からのアクセスのみを許可し、それ以外を拒否する設定として最も適切なのは?

Q2. Squidのhttp_accessディレクティブの評価順序について正しい説明は?

Q3. Squidの設定変更後、実際にリクエストを送って許可/拒否の挙動を確認したい。使うツールは?

理解度を確認第3章「HTTPサーバーとプロキシサーバー」の問題を解く