PROXYサーバを構築する (squid)

対象プラットフォーム: FreeBSD 7.x / FreeBSD 6.x


はじめに

このページでは、squid(version 2)を利用してPROXYサーバを構築する方法について説明します。

「squid」のビルド

squidはデフォルトでシステムにインストールされていませんので、別途システムにインストールする必要があります。

インストールはportsを利用して行います。
portsの取得および展開方法については、「最新のportsを取得して展開する」を参照してください。

portsの展開が完了した後、下記手順でsquidをmakeし、インストールします。

「squid」のビルド
$ cd /usr/ports/www/squid
$ make config-recursive
$ make install clean

「squid.conf」の設定

ビルドとインストールが完了したら、squidの唯一の設定ファイルである「/usr/local/etc/squid/squid.conf」を下記の通り編集します。

「squid.conf」の設定
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
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 to_localhost dst 127.0.0.0/8
acl our_networks src 192.168.16.0/24
acl SSL_ports port 443
acl Safe_ports port 80
acl Safe_ports port 21
acl Safe_ports port 443
acl Safe_ports port 70
acl Safe_ports port 210
acl Safe_ports port 1025-65535
acl Safe_ports port 280
acl Safe_ports port 488
acl Safe_ports port 591
acl Safe_ports port 777
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow our_networks
http_access deny all
http_reply_access allow all
icp_access allow all
http_port 8080
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
cache_mem 16 MB
cache_dir ufs /home/squid/cache 512 16 256
minimum_object_size 512 KB
maximum_object_size 65536 KB
cache_swap_low 90
cache_swap_high 95
access_log none
cache_log /home/squid/cache.log
mime_table /usr/local/etc/squid/mime.conf
pid_filename /home/squid/squid.pid
debug_options ALL,1
client_netmask 255.255.255.255
ftp_user squid@kishiro.com
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
cache_effective_user squid
append_domain .kishiro.com
coredump_dir /home/squid/cache

「squid.conf」は150KBを越える非常に巨大なファイルですが、実際にユーザが設定する箇所はそれほど多くはありません。
上記の内容を設定しておけば、通常の使用には困らないはずです。

以下に必要と思われる最低限の設定について説明します。

アクセスコントロールに関する設定

上記設定ファイル内の「acl」および「http_access」「http_reply」「icp_access」等は、squidサーバに対してのアクセスに関連する設定部分です。

先頭が「acl」で始まる箇所は、それぞれ第2パラグラフで指定されているパラメータを、第3および第4パラグラフで設定しています。
たとえば、「acl our_networks src 192.168.16.0/24」の行では、「our_networks」という値を「ソースのポートが192.168.16.0/24からのパケット」と定義しています。

続いての、「http_access」から始まる複数の行は、squidサーバに対してのアクセスルールを定めています。
これらの定義は、ipfwによるfirewallルールと同様に、上から順番に評価されます。

squidを動作させるport番号の設定

「http_port」は、squidを動作させるport番号の指定です。
上記の例では、一般的なPROXYサーバにあわせ、8080番portに指定しています。

キャッシュに関する設定

続いて、squidの設定の中で一番重要な、キャッシュそのものに関する設定の部分になります。

「cache_mem」では、メモリ上に確保されるキャッシュのサイズを指定します。
また、「cache_dir」では、ディスク上に保存されるキャッシュに関する設定を行います。
上記の例では、トータルサイズが512MB、ディレクトリ階層が16×256のキャッシュを生成して利用します。

「minimum_object_size」には、キャッシュに格納するファイルの下限のサイズを指定します。
小さいファイルはネットワークの帯域がある程度あれば、取得に時間が掛からないため、ある程度の大きさを指定しておくことをお勧めします。
最後に、「maximum_object_size」には、キャッシュに格納するファイルの上限のサイズを指定します。
限られたキャッシュサイズを有効に使うことを考えると、あまりにも大きいファイルをキャッシュに格納しておくのはあまりよいことではありません。
こちらも、ご利用になる環境にあわせ、適当な値を指定してください。

ログに関する設定

続いて、ログに関する設定の部分になります。
「access_log」では、クライアントであるUserAgentが、squidにアクセスした際のログの保存先を指定します。
小規模なイントラネット内のマシンに対してPROXYサービスを提供する、ごく一般的なsquidの一般的な用途では、access_logを取る必要はあまりないので(イントラネット内のクライアントを信用していない場合は別ですが…)、上記の例では「none」を指定しています。
一方、「cache_log」は、squidが自分のキャッシュの中にファイルを取り込む際のログの保存先を指定します。

その他の設定

上記以外の設定で必要そうなのは、「ftp_user」と「append_domain」の二つです。
前者は、squidがftpサーバ上のファイルを取得する際、ftpサーバに送信するメールアドレスになります。
後者は、UserAgentがドメイン名を省いてsquidサーバに要求を投げた際に、squid側が補完するドメイン名を指定します。

キャッシュディレクトリの作成

上記までで設定ファイルの編集は終わりですが、squidを実際に動かす前に、実際にファイルがキャッシュされるキャッシュフォルダを作成する必要があります。

以下のようにしてキャッシュフォルダを作成してください。

キャッシュディレクトリの作成
$ squid -z

squidは、「squid.conf」の「cache_dir」に設定した値に基づき、キャッシュフォルダを生成します。
「cache_dir」で指定されたディレクトリが存在しない場合、上記のコマンドは失敗しますので、あらかじめディレクトリを作成し、そのオーナー/グループを「squid/squid」に設定しておいてください。

「rc.conf」の設定

最後に、システムの起動時にsquidが自動的に起動するよう、「/etc」に格納されている設定ファイル「rc.conf」に下記の記述を追記します。

「rc.conf」の設定
squid_enable="YES"

この設定により、システム再起動時にsquidが自動的に起動するようになります。

変更履歴

2009/03/13

・「squid -z」が失敗する際の対応方法について追記。


あなたの探し物は見つかりましたか?
まさにこれだ
参考になった
ちょっと違う
これじゃない

何かメッセージがあればお願いします

このメッセージを非公開にする

ご注意

・頂いたメッセージは管理者のチェックの後、公開されます。
・メッセージの公開を希望されない場合には、「このメッセージを非公開にする」にチェックを入れてください。
・管理者が不適切と判断したメッセージは公開しませんので、予めご了承ください。


まだ評価がありません

表示できるメッセージはありません。


目次に戻る
image