Proxyサーバを立ち上げる


Proxyサーバとは

Proxyサーバの問題点

Proxyサーバには利点ばかりではなく、問題点もいくつかあります。

Squid

Proxyサーバを実現するにはいろいろな方法があります。1つは、WWWサー バに付属している Proxyサーバを用いるもので、これには Cern httpd や Apache httpd があります。だが、これらはキャッシング機能が弱いため、 サーバダウンのトラブルに見舞われやすいようです。そこでここでは、 もう1つのWWWのキャッシング専用プロトコルを装備した、プロキシを専用 に請け負うソフトウェアを使用します。これには、Cached と Squid があ りますが、ここでは Cached を改良したものである Squid を使用します。

Cachedの特徴

Squidのインストール

今回、squid は FreeBSD-2.2.8Release にインストールしました。 Squid は以下の URL から入手できます。 今回は、squid-2.2.STABLE4-src.tar.gz を入手しました。
ソースファイルを入手したら、適当なディレクトリで展開し、 サーバの環境を調査するため、configure スクリプトを実行します。 すると、諸設定及び Makefile が自動的に作成されます。 その後は、make all 、make install で OK です。 デフォルトのインストールディレクトリは、/usr/local/squid になります。 この手順を具体的に以下に示します。
% tar xvfz squid-2.2.STABLE4-src.tar.gz
% cd squid-2.2.STABLE4
% ./configure
% make all
% su
Password:
# make install

Squidの設定

Squid の設定は、/usr/local/squid/etc/squid.conf によって行 ないます。以下に主な変更点を示します。また、変更前のデフォルトの squid.conf をここに、 変更後の squid.conf をここに置いておきます。

Squidの起動

今回はキャッシュディレクトリを /usr/local/squid/cache に、ログディ レクトリを /usr/local/squid/logs に設定したため、これらのディレク トリを作成します。
% cd /usr/local/squid
% su
Password:
# mkdir cache logs
次に各ディレクトリに書き込み権限があるのを確認しておきます。そして、 /usr/local/squid/ 以下の所有者を nobody、グループを nogroup に 変更します。
# chown -R nobody.nogroup /usr/local/squid/*
次にキャッシュ用のディレクトリを構築します。実行は以下のように -z オプションを付けて実行します。
# /usr/local/squid/bin/squid -z
キャッシュディレクトリの構築が終了したら、以下のようにして squid を起動します。&を付けるのを忘れないでください。
# /usr/local/squid/bin/squid -f /usr/local/squid/etc/squid.conf &
squidを起動すると、squid、dnsserver、ftpget デーモンが起動します。 マシンの再起動時に squid が自動的に起動するようにするために、 /etc/rc.local に以下を追加します。
#
# Starting Proxy Server
#
if [ -x /usr/local/squid/bin/RunCache -a -f /usr/local/squid/etc/squid.conf ]; then
    echo -n 'Starting Proxy Server:'
    (cd /tmp; /usr/local/squid/bin/squid -f /usr/local/squid/etc/squid.conf > /dev/null 2>&1 &)
    echo ' Squid.'
fi

Squidの停止

Squid を停止するには、以下のようにします。
# kill -TERM `cat /usr/local/squid/logs/squid.pid`
また、Squid を再起動させるには以下のようにします。
# kill -HUP `cat /usr/local/squid/logs/squid.pid`

その他

Squid のログファイルをローテートするには、
# /usr/local/squid/bin/squid -k rotate
と実行するか、
# /bin/kill -USR1 `cat /usr/local/squid/logs/squid.pid`
として、Squid を完全再起動します。cron で実行させるようにするため、 /etc/crontab に
0   3   *   *   7   nobody  /bin/kill -USR1 `cat /usr/local/squid/logs/squid.pid`
と書くと、毎週日曜日午前3時に実行されます。Squid のログファイルは、アイコンなど の転送も記録するので、かなり巨大になります。ディスクの容量が十分でない場合、 ローテートの間隔を狭めたり、古いログファイルを早めに消去するよう設定したりします。

戻る

sakai@oak.eg.t.kanazawa-u.ac.jp
Last modified: Sun Jan 16 04:06:15 JST 2000