ここでは、Squidを使用したプロキシサーバの構築方法を示す。
主要な設定はFC4、FC5、FC6、openSUSE10.0とも
/etc/squid/squid.conf
で行う。
使用するポートの設定は下記のように行う。
http_port 3128
デフォルトでは3128ポートが使われているが、セキュリティを向上させるためにも、別の番号にすることをお勧めする。8080のような、Proxyサーバによく利用されるポート番号も避けるべきである。
acl localnet src 192.168.11.0/255.255.255.0を追加。
http_access allow manager localhostの下あたりに、
http_access allow localnetを追加する。
アクセス元のIPを表示すると、ファイアウォール内のネットワークの情報が多少なりともわかってしまい、セキュリティ上の問題で隠したい場合も多い。そのような場合は、forwarded_for onを
forwarded_for off
にするとアクセス元のIPを隠すことが出来る。
Proxy経由であることを完全に消したい場合は、下記の記述を追加してヘッダから、各種情報を削除する。「アクセス元のIPを表示しない」に加えて下記の設定を行うことにより、外部からはProxyを経由していることがわからなくなる。Proxy経由のアクセスを制限しているサイトにつなぎたい場合などの有効であるが、誰かに不正に利用されても、あたかもこのサーバから発信しているように見えるため、本当に必要な場合以外はあまりお薦めしない。
header_access X-Forwarded-For deny all header_access Via deny all header_access Cache-Control deny all
有効期限が設定されていないファイルなどでも、squidにキャッシュしたファイルの寿命を制御して、延ばすことができる。特に画像のように頻繁に変更されないファイルは、この設定を行うことにより、キャッシュを有効に利用してアクセススピードを向上させることが出来る。
refresh_pattern -i \.(gif|png|jpe?g|tif?f|bmp)$ 1440 25% 10080 refresh_pattern -i \.(mpe?g|avi|ra?m|wmv|mov)$ 1440 25% 10080 refresh_pattern -i \.(wav|mp3|mid)$ 1440 25% 10080 refresh_pattern -i \.(class|swf|pdf)$ 1440 25% 10080 refresh_pattern -i \.(js|css)$ 1440 25% 10080
をsquid.confに追加する。記述の意味はこのサイトにある。
キャッシュの使用するディスク領域を変更するには、
cache_dir ufs /var/spool/squid 100 16 256
のように記述する。ここでは100MBまでHDDを使用する。そのとなりの、16、256はディレクトリの分割数を指定しているが、通常はデフォルトの16、256でOK。
起動は下記のように行う
# /etc/init.d/squid start
Starting WWW-proxy squid (/var/cache/squid) done
起動できないときはとりあえず下記のように打ってみる。
# squid -k parse
もし設定に問題がなければ何も表示されないはずである。
例えば、
# squid -k parse
FATAL: Could not determine fully qualified hostname. Please set 'visible_hostname'
Squid Cache (Version 2.5.STABLE10): Terminated abnormally.
CPU Usage: 0.028 seconds = 0.016 user + 0.012 sys
Maximum Resident Size: 0 KB
Page faults with physical i/o: 1
Aborted
このようなメッセージが表示された場合、hostnameがきちんと設定されていないために、起動できないという意味である。その場合は、
# hostname foo.example.com
のようにして設定してやると、ほかに問題がなければ動くはずである。
サーバ起動時に自動起動するようにするには、
# chkconfig squid on
念のため確認
# chkconfig squid --list
squid 0:off 1:off 2:off 3:on 4:off 5:on 6:off
もし、
FATAL: Could not determine fully qualified hostname. Please set 'visible_hostname'
というエラーが出て起動しない場合は、visible_hostnameを自分のホスト名を使い設定する。
visible_hostname example.com
openSUSE 10.0の場合、認証機構は標準ではインストールされていないので、まずはインストールする必要がある。
本家http://www.squid-cache.org/へ行って、ソースをとってきて解凍する。解凍してできた
$cd /tmp/squid-2.5.STABLE12
のようなディレクトリに移り、
$./configure
$make
と打つ。ここで、すでにyastでインストールされている場合は、make installはしない。カレントディレクトリを
$cd /tmp/squid-2.5.STABLE12/helpers/basic_auth/NCSA
に移り、ここで
#make install
すると
/usr/local/squid/libexec
あたりにncsa_authがインストールされる。
次にhtpasswd2もしくはhtpasswd2を使ってパスワードを生成する。openSUSE 10.0の場合は
$htpasswd2 -c /usr/local/squid/etc/passwd dsato
$New password:
$Re-type new password:
$Adding password for user dsato
そしてsquid.confの中の
auth_param basic program /usr/local/squid/libexec/ncsa_auth /usr/local/squid/etc/passwd acl password proxy_auth REQUIRED http_access allow password
を有効にする。(無ければ記述)
なおここで、
http_access allow password
を
http_access allow localnet password
と書けば、IPによる制限およびパスワードによる制限の両方を有効にできる。
#/etc/init.d/squid restart
で再起動する。
リバースプロキシは、通常のプロキシとは違って、サーバ側のパフォーマンスを改善するために行われる。
本文中のFC4はFedora ProjectのFedora Core 4を、FC5はFedora Core 5を、FC6はFedora Core 6、FC7はFedora Core 7をopenSUSEはNovellのSUSE Linux OSSを表します。
ここに登場するドメイン名やIPアドレスなどはフィクションです。実在の人物・団体等とは一切関係がありません。