目次へもどる  

Google

プロキシサーバの設定

ここでは、Squidを使用したプロキシサーバの構築方法を示す。

Squidの設定

主要な設定はFC4、FC5、FC6、openSUSE10.0とも

/etc/squid/squid.conf

で行う。

使用するポートの設定

使用するポートの設定は下記のように行う。

http_port 3128

デフォルトでは3128ポートが使われているが、セキュリティを向上させるためにも、別の番号にすることをお勧めする。8080のような、Proxyサーバによく利用されるポート番号も避けるべきである。

アクセス制御

初期状態では、ローカルホストすなわち、squidを立ち上げているマシンからしかアクセスできないので、LAN内のパソコンからアクセスできるようにする。まず、LANのIPの範囲をlocalnetという名前でアクセスコントロール記述する。
acl localnet src 192.168.11.0/255.255.255.0
を追加。
http_access allow manager localhost
の下あたりに、
http_access allow localnet
を追加する。

アクセス元のIPを表示しない

アクセス元のIPを表示すると、ファイアウォール内のネットワークの情報が多少なりともわかってしまい、セキュリティ上の問題で隠したい場合も多い。そのような場合は、forwarded_for on

forwarded_for off

にするとアクセス元のIPを隠すことが出来る。

Proxyの存在を知らせない

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アドレスなどはフィクションです。実在の人物・団体等とは一切関係がありません。
実際に使用する際は、各自の環境に合わせて書き換えてください。
もし何か間違いなどありましたらこちらからご連絡ください
リンクに許可は不要です。
Copyright (C) 2007 Chikuma Engineering Co., Ltd. All Rights Reserved.