Squid を透過型 HTTP Proxy としてインストールする
Squid は Web Proxy Cache として広く利用されているソフトウェアです。
ここでは、それを 「透過型」 の HTTP Proxy としてインストールします。
透過型 HTTP Proxy を外部と接続するゲートウェイ上で動かすと、
利用者が意識すること無く、HTTP のアクセスをキャッシュすることができ、
外部接続のネットワークの負荷を下げることが出来ます。
また、各種のアクセス制御により、セキュリティの向上に役に立つ場合があります。
現在の最新の安定版は、2.5 STABLE7 (2004/10/11 リリース) です。
2.5 STABLE9 が 2005/02/24 にリリースされました。
-
ソースを展開します。
% tar xzvf …/squid-2.5.STABLE7.tar.gz
% cd squid-2.5.STABLE7
-
configureを実行し、makeします。
透過型に対応するために、configure に
--enable-pf-transparent を指定します。
アンダースコアが含れている不正なホスト名が指定されてもエラーにしたくない場合には、
--enable-underscores を指定します。
% ./configure --prefix=/usr/local/squid --enable-pf-transparent --enable-underscores
% make
-
グループIDを追加します。 /etc/group に以下のような設定を追加します。
squid:*:68:
-
ユーザIDを追加します。 vipw コマンドで以下のような設定を追加します。
squid:*:68:68::0:0:Squid Web Proxy Cache:/usr/local/squid:/sbin/nologin
-
インストールします。 /usr/local/squid の下に格納されます。
% su
# make install
# mkdir /var/squid /var/squid/cache /var/log/squid
# chown squid:squid /var/squid /var/squid/cache /var/log/squid
# chmod 750 /var/squid /var/squid/cache /var/log/squid
-
設定ファイル /usr/local/squid/etc/squid.conf を編集します。
詳細な説明がコメントとして書かれているので、それに従って設定します。
なお、このサンプルをページの最後に添付します。
参考にしてください。
-
キャッシュの初期化をします。 少し時間が掛かります。
# /usr/local/squid/sbin/squid -z
-
透過型 HTTP Proxy として動作させるために、NAT を設定します。
OpenBSD 3.2 以降を使用しているなら /etc/pf.conf のフィルタリングルールの前に、
OpenBSD 3.1 以前を使用しているなら /etc/nat.conf に、
以下のような設定を追加します。 ファイルが無ければ作成します。
なお、NAT を動かすためには、PF が有効になっている必要があります。
事前に設定しておいてください。
rdr on fxp1 proto tcp from any to 0.0.0.0/0 port 80 -> 127.0.0.1 port 3128
新しい設定を読み込ませます。
OpenBSD 3.2 以降を使用しているなら
# pfctl -f /etc/pf.conf
OpenBSD 3.1 以前を使用しているなら
# pfctl -N /etc/nat.conf
-
起動の設定を /etc/rc.local に記述します。
echo -n ' squid'
/usr/local/squid/sbin/squid
-
停止の設定を /etc/rc.shutdown に記述します。
/usr/local/squid/sbin/squid -k shutdown
-
ログファイルをローテーションするように crontab を設定します。
以下の例は、週一回(月曜日早朝)にローテーションします。
利用者が多い場合は、毎日にしたほうが良いでしょう。
30 3 * * 1 /usr/local/squid/sbin/squid -k rotate
- 透過型 HTTP Proxy として、192.168.0.* からのリクエストのみ許可する設定の例です。
# ----------------------------------------------------------------------
# NETWORK OPTIONS
# ----------------------------------------------------------------------
http_port 3128
icp_port 0
# ----------------------------------------------------------------------
# OPTIONS WHICH AFFECT THE NEIGHBOR SELECTION ALGORITHM
# ----------------------------------------------------------------------
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
# ----------------------------------------------------------------------
# OPTIONS WHICH AFFECT THE CACHE SIZE
# ----------------------------------------------------------------------
cache_mem 20 MB
cache_swap_low 90
cache_swap_high 95
maximum_object_size 4096 KB
minimum_object_size 0 KB
maximum_object_size_in_memory 20 KB
ipcache_size 512
ipcache_low 90
ipcache_high 95
fqdncache_size 512
cache_replacement_policy lru
memory_replacement_policy lru
# ----------------------------------------------------------------------
# LOGFILE PATHNAMES AND CACHE DIRECTORIES
# ----------------------------------------------------------------------
pid_filename /var/squid/squid.pid
cache_dir ufs /var/squid/cache 1024 64 64
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
# ----------------------------------------------------------------------
# OPTIONS FOR EXTERNAL SUPPORT PROGRAMS
# ----------------------------------------------------------------------
dns_retransmit_interval 5 seconds
dns_timeout 1 minutes
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
# ----------------------------------------------------------------------
# OPTIONS FOR TUNING THE CACHE
# ----------------------------------------------------------------------
equest_header_max_size 10 KB
request_body_max_size 10 MB
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
# ----------------------------------------------------------------------
# TIMEOUTS
# ----------------------------------------------------------------------
connect_timeout 1 minutes
read_timeout 3 minutes
request_timeout 30 seconds
client_lifetime 6 hours
half_closed_clients on
# ----------------------------------------------------------------------
# ACCESS CONTROLS
# ----------------------------------------------------------------------
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl local src 192.168.0.0/255.255.255.0
acl Safe_ports port 80 # http
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT
http_access allow local
http_access deny all
icp_access deny all
reply_body_max_size 0 deny all
# ----------------------------------------------------------------------
# ADMINISTRATIVE PARAMETERS
# ----------------------------------------------------------------------
cache_mgr webmaster@my.domain
cache_effective_user squid
cache_effective_group squid
visible_hostname myserver.my.domain
# ----------------------------------------------------------------------
# OPTIONS FOR THE CACHE REGISTRATION SERVICE
# ----------------------------------------------------------------------
# ----------------------------------------------------------------------
# HTTPD-ACCELERATOR OPTIONS この4行は、透過型 HTTP Proxy のための設定。
# ----------------------------------------------------------------------
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
# ----------------------------------------------------------------------
# MISCELLANEOUS
# ----------------------------------------------------------------------
logfile_rotate 10
append_domain .my.domain
# ----------------------------------------------------------------------
# DELAY POOL PARAMETERS (all require DELAY_POOLS compilation option)
# ----------------------------------------------------------------------