プロキシーサーバーの設置


プロキシーサーバーは、インターネットのWEBページ等をクライアントの代理としてアクセスしに行って、アクセス先のデータを自分のサーバーにキャッシュして置いてくれる機能を持っています。
一度キャッシュされると、次回からはそのWEBページにアクセスはせず、キャッシュされたデータから読み出してくるので、アクセスが高速になるという仕組みです。
キャッシュされたデータは、期限や上限が設定できますので、期限が切れた場合などは削除され、また新たにキャッシュされることになります。

DeleGateのインストール
DeleGateは、http://www.delegate.org/delegate/のWEBページからソースを取ってきて、makeでコンパイルして作成しインストールします。
この時点での最新版は、delegate7.9.1.tar.gzでしたので、これを取ってきます。
取ってきたら、適当なディレクトリ/usr/tmp等に持ってきてきて、圧縮されたファイルを展開してからmaikeをします。

hoge# cd /usr/tmp
hoge# tar zxvf delegate7.9.1.tar.gz
hoge# cd /delegate7.9.1/src
hoge# make

コンパイルしている途中に、管理者のメールアドレスの入力を求めてきますので、適当なメールアドレスを入力します。後で変更可
コンパイルが成功すると、delegatedというファイルが出来ますので、このファイルを/usr/local/sbinのディレクトリ等に置いておきます。

hoge# cp /usr/tmp/delegate7.9.1/src/delegated /usr/local/sbin/

DeleGateをdelegateの権限で動作
DalaGateはnobodyの権限で動作するようになっていますが、セキュリティを考えて、ここではdelegateというオーナーを新たに作成して、その権限で動作せせるようにしたいと思います。
まず、vipwと打ち込んで以下のオーナーを作成します。
delegate:*:65530:65530::0:0:DeleGate:/nonexistent:/sbin/nologin

次に/etc/groupにdelegateのグループをを登録します。
エデイタで/etc/groupを開いて以下の行を追加してください。
65530の番号がdelegateというグループと対応付きます。
delegate:*:65530:delegate

先ほどコピーしたファイルのオーナーのグループと権限をdelegateに変えます。
ついでにパーミッションも変えます。

hoge# chown -R delegate:delegate /usr/local/sbin/delegated
hoge# chmod 700 /usr/local/sbin/delegated

キャッシュ及びログ保存ディレクトリの作成
DeleGateでキャッシュされるデーターとログファイルの保存場所を作成します。

hoge# mkdir /usr/home/delegate
hoge# mkdir /usr/home/delegate/cache
hoge# mkdir /usr/home/delegate/log
hoge# chown -R delegate:delegate /usr/home/delegated
hoge# chown -R delegate:delegate /usr/home/delegate/cache
hoge# chown -R delegate:delegate /usr/home/delegate/log

httpプロキシーとしての設定
一般的によく使用される、プロキシーサーバーを作成します。
httpのデータを代理で取りに行って、自分のサーバーの中にキャッシュしていくタイプのものです。 まずDeleGateの起動スクリプトdelegated.shを作成します。
システム起動時に自動的に読み込ませるので、/usr/local/etc/rc.d/の中にこのファイルを置いておきます。
#!/bin/sh

if [ -f /usr/local/sbin/delegated ]; then

/usr/local/sbin/delegated -P8080 \
MANAGER=root@hoge.foo.jp \
OWNER="delegate/delegate" \
DGROOT=/usr/home/delegate \
LOGDIR=/usr/home/delegate/log \
CACHEDIR=/usr/home/delegate/cache \
SERVER=http \
RELIABLE=192.168.0.[0-254] \
EXPIRE=7d CRON="5 5 * * * -expire 7d" \
echo " delegated started. "

fi
OWNER = ユーザ/グループ
delegatedが動作するユーザ/グループ権限を指定します。デフォルトはnobody/nobody
DGROOT = ディレクトリ
delegated関連ファイルの格納場所。デフォルトは/var/spool/delegate-[実行ユーザ]/
LOGDIR = ディレクトリ
delegatedのログの格納場所
CACHE = do | no | ro
キャッシュを有効にするかどうか
CACHEDIR = キャッシュディレクトリ
キャッシュデーターが格納されるディレクトリ
EXPIRE = キャッシュの有効期限
キャッシュをexpireする間隔。デフォルトは1d(一日)
ADMIN = アドレス
管理者のメールアドレス
UMASK = マスク
delegateが作成するファイルに対してのマスク
-P = ポート番号
delegatedが使用するポート番号を指定します。
SERVER = プロトコル://ホスト:ポート番号
デフォルトの転送先
CRON=....
cronで行う作業 、書式はcrontabと同じ。
RELIABLE = ホスト名またはIPアドレス
DeleGateの使用を許可するホスト名やIPアドレスを書いておく。

ブラウザーの設定
DELEGATE1.GIF - 24,436BYTES

プロキシーサーバーを使用するにチェックをします。
プロキシーアドレスは、設置したサーバーのIPアドレス、この場合192.168.0.15です。ホスト名を指定しないのは、インターネットに接続した段階で、ローカルのDNSは参照されないからです。
ポートは先ほど指定した8080です。

ログの削除
delegateを使用していると、ログがたまってくるので、newsyslogを使用して自動的にログをロテートするようにしてみました。
詳しくはログのロテートを参考にしてください。

以下、newsyslog.conf
/home/delegate/log/8080.http             644  10    100  $M1D0 Z
/home/delegate/log/8080                  644  10    100  $M1D0 Z
/home/delegate/log/errors.log            644  10    100  $M1D0 Z
/home/delegate/log/expire.log            644  10    100  $M1D0 Z

BACK