LAN 内のコンピュータから Web にアクセスする際,一括してウイルスチェックやコンテンツフィルタリングなどをのちのち実施するために,ルータ化した CentOS 5.5 + squid で透過プロキシを構築したときのメモを残しておく。
透過プロキシとは、クライアントで特別な設定をすることなく利用できるプロキシサーバのことである。
手順
普通に yum で squid をインストールする。
# yum install -y squid
設定ファイルを編集する。
# vi /etc/squid/squid.conf
# ホスト名を適当に設定
visible_hostname proxy.local
# 内側のネットワーク
acl lan src 172.16.0.0/255.255.0.0
acl all src 0.0.0.0/0.0.0.0
# 内側からの Web アクセスのみ許可
acl Safe_ports port 80
http_access deny !Safe_ports
http_access allow lan
http_access deny all
# キャッシュしない
no_cache deny all
# 透過プロキシ化
http_port 3128 transparent
access_log /var/log/squid/access.log squid
coredump_dir /var/spool/squid
# proxy 情報を隠蔽
forwarded_for off
header_access X-Forwarded-For deny all
header_access Via deny all
header_access Cache-Control deny all
squid を起動する。
# service squid start
# chkconfig squid on
iptables を用いて透過プロキシ化する。
# iptables -t nat -A PREROUTING -i (内側 NIC) -s (内側ネットワーク) -p tcp --dport 80 -j REDIRECT --to-port 3128
# service iptables save
以上により,クライアントは特に設定をしなくても,Web アクセスの際に自動的に proxy を経由するようになる。ウイルスチェックやコンテンツフィルタリングはまた今度。
(2013/01/04 追記)
Squid 3.X 系の場合、起動時に
ERROR: Directive 'header_access' is obsolete.
と表示されるようだ。これは、squid.conf の header_access 行を
request_header_access X-Forwarded-For deny all
request_header_access Via deny all
request_header_access Cache-Control deny all
と修正することで解消される。
コメント
CentOS6/20140827_Squidによる透過プロキシの構築
20140827_Squidによる透過プロキシの構築 概要 対象の環境ではiptablesが稼働している。 クライアントはiptablesにより80番宛てのアクセスがプロキシ経由に変換される。 プロキシサーバは自身…