| PROXYサーバ(squid) |
PROXYサーバとは、httpやftpを中継するプログラムである。 中継する事により、firewallの役目も果たす事ができる。 firewall以外にもcacheとしての機能も持っており、少ないネット リソースを有効に活用するためにも利用できる。
デフォルトで、RedHat Linuxに附属されているsquidという Proxyサーバを利用する。
| ダウンロードとインストール |
http://www.squid-cache.org/が、squidの本家サイトである。ここから、最新版の.tar.gzをもってきてインストールする。
$ cd /usr/local/src
$ gtar xvfz /usr/local/src/squid-???.???.tar.gz
$ cd squid-???.???
$ ./configure
$ make
$ su
Passward: XXXXXX
# make install
RedHatには元々rpmパッケージが入っているのでそれを使うとよい。
| 基本的な設定 |
まずは、簡単にローカルネットワークからproxyサーバを介して外部に アクセスするような設定をしてみる。
設定用のファイルsquid.confは、RedHatのrpmで入れた場合は、/etc/squid/の下にある。 ◯ ポートの設定ローカルネットワークからアクセスするためのポートを指定する。 よくあるポートは8080とかである。 (squidでなにも指定しない場合は、3128になる。)
#Default: # http_port 3128 http_port 8080 |
ftp_user hoge@moke.jp |
アクセスをゆるすネットワーク等に名前を付けておく。 名前は適当でOK
acl clients src 192.168.1.0/255.255.255.0 |
実際のアクセス制御を設定する。上から順番にルールが適用される。 例えば、http_access deny allを一番上に書いてしまうと、 全てアクセス拒否が適用されて、その後にhttp_access allowを書いても 適用されない。
http_access allow localhost http_access allow clients http_access deny all |
| 立ち上げ及び確認 |
立ち上げは例によって、RedHatの起動スクリプトを利用する。
# /etc/rc.d/init.d/squid start squidを起動中: .[ OK ]
起動の確認は、clientというコマンドを使う。
$ client http://www.yahoo.co.jp <--適当なURLでOK
HTTP/1.0 200 OK
Date: Wed, 11 Feb 2004 06:54:07 GMT
P3P: policyref="http://privacy.yahoo.co.jp/w3c/p3p.xml", CP="CAO DSP COR CUR ADM
DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY O
NL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV"
Cache-Control: private
Pragma: no-cache
Content-Type: text/html;charset=euc-jp
X-Cache: MISS from yari.bigforest.hn.org
Proxy-Connection: close
<html>
<head>
<title>Yahoo! JAPAN</title>
<以下省略・・・>
と言う風にでていれば、成功です。
$ client http://www.yahoo.co.jp <--適当なURLでOK client: ERROR: Cannot connect to localhost:3128: Connection refused
等とでるようだとうまく行っていない。
| クライアントの設定 |
クライアントは、squidのサーバのアドレスとポートを設定する。
◯ 自動設定スクリプト自動設定スクリプトを利用すると、サーバの設定を変更しても 自動で全てのクライアントに設定を反映させることが出来る。
まずは、設定ファイルを置くWebサーバのmime.typeに登録する。 mime.typesの場所は、http.confの中のTypesConfigというディレクティブを参照すればよい。
# echo "application/x-ns-proxy-autoconfig pac" >> /etc/mime.types
続いてスクリプトファイルを作る。
例えば、
function FindProxyForURL(url, host)
{
if ( isPlainHostName(host)) {
return "DIRECT";
}
if ( isInNet(host, "192.168.1.0", "255.255.255.0")) {
return "DIRECT";
}
if ( dnsDomainIs(host, ".bigforest.hn.org")){
return "DIRECT";
}
return "PROXY 192.168.1.1:3128; DIRECT";
}
|
詳しくは、ここに自動設定スクリプトの設定方法が載っている。
この設定ファイルをhttp://www.bigforest.hn.org/proxy.pacに置いておき、 クライアント側のブラウザの自動設定スクリプトにこのURLを登録しておけば、 自動で設定を行なってくれる。 この設定が変わっても、サーバ側の自動設定スクリプトを変更するだけで クライアントの変更は必要なくなる。