作成開始 : 平成17年06月19日(日)  最終更新日 : 平成17年07月02日(土)

Delegateでリバースプロキシを試す!

このドキュメントもDynaBook上で動いているDelegateを経由しています。(平成17年06月18日[土]から〜07月01日[金]まで)


例によって経験則なので、このままやっても動かないこともあるかもしれません。(このやり方でよかったのかなぁー?)

PC-9821v7のFreeBSD上で軽快にリバースプロキシしてましたが、ファンの音が少しうるさいのと電気量節約(たぶん)のためノートPCにDelegateを搭載しました。
はじめは、DynaBookにFreeBSDインストールして使おうかとも思いましたが、せっかく苦労してWindowsNTのインストールと周辺機器の追加をしたので、そのまま Win32用のDelegateを使うことにしました。(このPCも酷使されているなぁー)
これによって、PC-9821v7は実験用PCとして普段は電源OFFで待機です。


1.構築したPCと構成概要

●Delegateインストール、稼動PC

DynaBook 220SC

CPU : 133MHz
MEM : 48Mbyte
HDD : 1.33Gbyte
IISがポート81で動いています。(DeleGateがポート80のため)

こんな低スペックでも機能限定すればかなり軽快に動作します。
うぉーこんな低スペックです。3日くらいでリブートしないとだめかも?

こんな感じで公開したーーーーーい!

上記のように複数台のサーバー機を公開します。


2.Delegateの紹介

Delegate Home Pageを参照ください。(英語のサイトです)
日本語で見たい場合は検索エンジンで検索すればたーくさんヒットします。

3.(特に)参考にしたサイト

ごめんなさい検索しまくりで一通り拝見させていただきました。
この後、微調整などしたいと思いますので、その都度リンクいたします。
日本語マニュアル

4.配布ファイルの準備

http://www.delegate.org/ からダウンロードできます。
dg8_11_4.zip (1,061,355byte ->1.04Mbyte)をダウンロードしました。Win32用です。
展開すると次のようなファイル・フォルダが出来ます。
※C:\tmpに解凍した場合

 C:\
   |
   +----tmp
       |
       +--dg8_11_4・・・・・・・・・・・・・・・dg8_11_4.exe、CHANGES(英語)、COPYRIGHT(英語)、README(英語)
           |
           +doc・・・・・・・・・・・・・Manual.htm(英語)、tutor-en.htm(英語)、tutor_jp.htm(日本語)

5.インストールと設定

・Windowsクライアント上で取得したファイルを展開し、エクスプローラでサーバーの共有フォルダにコピーします。

 私は、C:\delegate を作成してそこにコピーしました。
 そして、dg8_11_4.exe を delegated としてリネームしました。これは、バージョンアップ時の作業を容易にするためです。
・次に、delegate用のキャッシュディレクトリとログディレクトリを作成します。このディレクトリはなくても動作しますが、作っておかないとキャッシュやログを作成してくれません。

私は C:\delegateの下に次のように作成しました。

 キャッシュ用のディレクトリ cache を作成。
 ログ用ディレクトリ log を作成。
・起動時に実行すべき内容を書いた cfg ファイルを作成します。
 私はC:\delegate に作成しました。

[解説]

  1: -P80       ※Delegateが受け入れるポート番号です。ポート:80で稼動します。

  2: MANAGER=master@takaq1.plala.jp    ※管理者のメールアドレスです。

  3: DGROOT=C:/delegate           ※Delegateのルートフォルダです。

  4: SERVER=http                 ※HTTPサーバー・モードで動きます。

  5: RELIABLE=*                  ※全てのクライアントからのアクセスを受け入れます。

  6: PERMIT="*:*:*"               ※全てのプロトコル、ホスト、クライアントのアクセスを許可します。

  7: CONNECT=c,d:*:*:*             ※キャッシュがあればキャッシュからなければ直接接続します。

  8: RESOLV=file:C:/Winnt/system32/drivers/etc/hosts,dns

    ※最初これを書かないで動かしたら、目的のサーバーへ「not REACHABLE」で接続できませんでした。
      こんなエラーです。

      Forbidden by Delegate
      Forbidden by Delegate on 'dynabook.takaq.jp:80'.

      Tried from takaq1.plala.jp : 14330 to http://takaq1.plala.jp:80.

      Reason: 'takaq1.plala.jp' not REACHABLE


      (hosts にはキチンと各サーバーのIPアドレスと名前を書いていました)
    ※でも、MOUNTにIPアドレスでURL書いたら接続できたので、名前解決ができていないようでした。
    ※hosts には 192.168.2.5 takaq1.plala.jp などと書いています。
    ※これ解決に随分時間かかりました。もう、日曜日の朝になってしまいました。はは!

    ※平成17年06月21日(火) dns を追加→訪問者のドメイン取得のため。
      (これ無いと、訪問者はIPアドレスのみログ出力します)

 後は大体お分かりですね。

  9: MOUNT=/* http://takaq1.plala.jp:80/*            # 9821Xc13 & FreeBSD
 10: REACHABLE=192.168.2.5                    # 9821Xc13 Only
 11: MOUNT=/DynaBook/* http://DynaBook.takaq.jp:81/*  # DynaBook & Windows NT Server4.0
 12: REACHABLE=192.168.2.9
 13: MOUNT=/9821nemail/* http://9821nemail.takaq.jp:80/* # PC-9821Ne & Windows 95
 14: REACHABLE=192.168.2.8
 15: MOUNT=/FMV/* http://FMV.takaq.jp:80/*          # FMV & Windows 2000
 16: REACHABLE=192.168.2.13
 17: CACHE=do
 18: CACHEDIR=C:/delegate/cache
 19: LOGDIR=C:/delegate/log
 20: EXPIRE=2d # cache Rinit
 21: CRON="0 2 * * * -expire 2d"
 22: CACHEFILE='$[server:%P]/$[hash:%H]/$[server:%L/%p]'
 23: LOGFILE='' # no log file
 24: #LOGFILE='${LOGDIR}/${PORT}[date+%d]'          # log file
 25: PROTOLOG='${LOGDIR}/${PORT}/[date+%d].${PROTO}' # httpd log
 26: #ACTDIR=/var/run # RunID

ログとかキャッシュとかもチャンと出来ていました。これでしばらく様子見たいと思います。
しかし、どうも低スペックなのに WindowsNT + IIS 動いているから PC-9821v7 より少し遅いみたいです。
特に、しばらくアクセスが無い時の最初の応答は一呼吸かかるようです。
複数アクセスがある時はどうかな?
あまり遅かったりしたら中古屋で安〜いノートPC買おうかな!!!
上記ができたら、まずはデバックモードで動かしてみます。 コマンドプロンプトからカレントを C:\delegate にして・・・・・

 delegated -v +=proxy.cfg    です。(停止は Ctrl + C です。)

 これで、画面にロギングしながら調整すればいいです。

 そしたら、クライアントPCから動作確認をします。
 私のルータはLAN内から直接ドメイン名を入力するとルータの認証画面が表示されてしまいます。
 なので、WINDOWS\system32\drivers\etc\hosts に次の一行を追加しました。(WindowsXPの場合)

 192.168.2.9 takaq1.plala.jp    # Delegate PCのアドレス

 そして、いよいよブラウザからの確認です。

 http://takaq1.plala.jp/             → PC-9821Xc13のドキュメントルートを表示しました。
 http://takaq1.plala.jp/DynaBook/      → DynaBookのドキュメントルートを表示しました。
 http://takaq1.plala.jp/9821nemail/     → 9821nemailのドキュメントルートを表示しました。
 http://takaq1.plala.jp/FMV/         → FMVlのドキュメントルートを表示しました。
そしたら、まぁこれでOKでしょうから せっかくなのでWindowsのサービス登録をしときましょう。
これまた、コマンドプロンプトでカレント C:\delegate にし次のコマンドを実行します。

  delegated +=proxy.cfg

すると、ADMINのメールアドレスを聞かれ自動起動にしますか?を英語で聞かれます。
それぞれ入力し、コントロールパネル → サービス を確認したら「delegated -P80」でサービス名が登録されていました。
そして、既に動いていました。

※サービス登録からの削除は「delegated -P80」です。やっぱりADMINのメールアドレスと削除していいですかぁー?と聞かれました。
・インターネットからの確認

 ルータのポートマッピングでポート:80を192.168.2.9に向かうようにしました。
 ファイヤーウォールの設定でポート:80を192.168.2.9に向かうようにしました。

 クライアントPCのブラウザで外部プロキシを使うようにしました。(CyberSyndrome - The Proxy Search Engine参照)
 そして、再度ブラウザからのテストです。

 http://takaq1.plala.jp/             → PC-9821Xc13のドキュメントルートを表示しました。
 http://takaq1.plala.jp/DynaBook/      → DynaBookのドキュメントルートを表示しました。
 http://takaq1.plala.jp/9821nemail/     → 9821nemailのドキュメントルートを表示しました。
 http://takaq1.plala.jp/FMVl/         → FMVlのドキュメントルートを表示しました。

6.付記・・・・・・ってFreeBSDのページと同じです。

少し設定、動作確認に時間かかりましたが、うまく動いてくれています。
少しずつマニュアル読んで微調整していきたいと思います。

直接、各Webサーバーへのアクセスが抑止できましたし、キャッシュのおかげで各Webサーバーの負荷が小さくなりました。

難点としては、各サーバーでアクセス集計のCGI置いていますが、接続してくる相手のドメインを取得できない(つーか、全て192.168.2.9から来るので・・・)ので、接続ホストの集計が全て *takaq.jp になってしまうことでしょうか。
それと、訪問者のIPアドレスで現在アクセス数のカウントができない。
CGIなどで訪問者のIPアドレスによるリロード時のカウント抑制や設定URLとブラウザのURLで直リンク禁止なんかしている場合はおかしくなります。ですので、スクリプトをチビッといじりました。

超低スペックなので、やっぱり三日に一度リブート要るようです。(スワップが一杯になっちゃいます:メモリ欲しい)

・各サーバーへアクセス

 DynaBookへ 9821nemailへ・・・・・・・・・・・・毎週金曜日 21:00 〜 07:00 動いております。
 FMVへ(平成17年05月18日[水]追加)・・・・・takaqが仕事に行っている間動いております。  

戻る

サイトトップへ