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のanonymousアクセスするときのメールアドレスの指定
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

続いてスクリプトファイルを作る。
例えば、

は、直接接続し、その他は、192.168.1.1:3128のproxy接続を行なうと言う場合は、

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を登録しておけば、 自動で設定を行なってくれる。 この設定が変わっても、サーバ側の自動設定スクリプトを変更するだけで クライアントの変更は必要なくなる。

もどる


Kenji Ohmori
Last modified: Tue May 31 01:59:46 JST 2005