squidでHTTPプロキシを立てる。

squidでお手軽に検証用プロキシサーバを作るためのメモです。
認証は設定していません。


検証用の環境
CentOS 8.1.1911
squid: 4.4.8

前提条件

プロキシサーバがネットワーク的に外部と通信できること
プロキシサーバに名称解決の設定が行われていること
※プロキシ環境課の場合、基本的にプロキシの下段にある端末は名称解決を行わずプロキシサーバに丸投げする。

Squidのインストール

以下のコマンドでSquidをインストールします。

yum install squid

Squidのコンフィグを確認する

Squidのコンフィグは /etc/squid/squid.conf になります。
squidコンフィグを編集していきます。

以下の記述で送信元がローカルIPであるネットワークを localnet として定義しています。

acl localnet src 0.0.0.1-0.255.255.255  # RFC 1122 "this" network (LAN)
acl localnet src 10.0.0.0/8             # RFC 1918 local private network (LAN)
acl localnet src 100.64.0.0/10          # RFC 6598 shared address space (CGN)
acl localnet src 169.254.0.0/16         # RFC 3927 link-local (directly plugged) machines
acl localnet src 172.16.0.0/12          # RFC 1918 local private network (LAN)
acl localnet src 192.168.0.0/16         # RFC 1918 local private network (LAN)
acl localnet src fc00::/7               # RFC 4193 local private network range
acl localnet src fe80::/10              # RFC 4291 link-local (directly plugged) machines

しかし、今回さらにプロキシの許可する範囲を192.168.1.0/24 に限定するため、under_proxy_net というネットワーク定義を作成しておきます。

acl under_proxy_net src 192.168.1.0/24

デフォルトのローカルIP許可設定をコメントアウトしていきます。以下の設定をコメントアウトしてください。

http_access allow localnet
http_access allow localhost

上記をコメントアウトしたら、その直下に作成した under_proxy_net の許可設定を入れていきます。

http_access allow under_proxy_net

尚、その下部にある以下の設定は、許可したネットワークからのアクセス以外を拒否する設定(FWでいう暗黙のDeny)なので編集しないでください。

http_access deny all

また、プロキシサーバの待ち受けポートは以下の設定になります。
デフォルトでは 3128ポート が設定されています。必要に応じて変更してください。

http_port 3128

firewalldに許可設定を行う

Squidのコンフィグ編集が終わったら、firewalldに許可設定を行います。
以下は publicゾーン に TCP の 3128ポート の許可設定を行うサンプルになります。

firewall-cmd --add-port=3128/tcp --zone=public --permanent
firewall-cmd --reload

Squidを起動する

設定が終わったらSquidを起動します。
起動して問題がなければ自動起動設定も入れておきましょう。

systemctl start squid.service
systemctl enable squid.service

簡単ではありますが以上となります。