DeleGate 9.1.1 を daemontools で起動させる
SERVER
DeleGate とは
DeleGate は、電子総合技術研究所 の佐藤豊さんが作成した多目的プロトコル中継システムです。 これを利用することで、内部ネットワークと外部ネットワークの分離や、内部ネットワークに用意した Web サーバを DeleGate 経由で外部へ公開したりすることが出来ます。
非常に多くの機能があってとても使いきれないのですけど、とりあえず今回は DeleGate 9.1.1 を用いて、内部に配置してある Web サーバを外部からアクセスすることが出来るようにしてみようと思います。
DeleGate 9.1.1 のインストール
今回は DeleGate Home Page (www.delegate.org) から、2006/06/07 の時点では最新の DeleGate 9.1.1 ( delegate9.1.1.tar.gz ) をダウンロードしてみました。ダウンロードするパッケージは SOURCE DISTRIBUTION です。
それを "/usr/local/src" ディレクトリにでもコピーしたら、次のようにしてアーカイブを展開 し、そのディレクトリへと移動します。
tar xvzf delegate9.1.1.tar.gz
cd delegate9.1.1/
そうしたら設定を少し調整するために、"delegate9.1.1/src/" ディレクトリ内に次のような内容の "DELEGATE_CONF" ファイルを用意します。
ADMIN = "xxx@xxxx.xxxx.xx.xx"
"ADMIN" という値は、anonymous-FTP へアクセスする際などに使用する DeleGate 管理者のメールアドレスとなりますので、環境に応じて設定しましょう。他にも "src/Makefile" 中で設定できる各種変数を、ここで調整することが出来るようです。
下準備が終わったら、次のようにしてコンパイルします。
make
これで "src/" ディレクトリに delegated が出来上がりますので、後はこれを "/usr/local/sbin" にでもコピーしてあげればインストールは完了です。
HTTP を中継してみる
例えば Web サーバが 192.168.1.1 上の 80/TCP 番ポートで運用されているとき、次のような感じにすることで、DeleGate 経由で Web サーバを公開することが出来るようです。DeleGate を運用している側も "-P80" として 80 番ポートで待ちうけを行います。
/usr/local/sbin/delegated -P80 SERVER="tcprelay://192.168.1.1:80" REACHABLE="*" RELIABLE="*"
これでもいいのですけど、今回は daemontools を用いて DeleGate を起動してみようと思います。なお daemontools につきましては EZ-NET: Slackware 10.0 へ daemontools を組み込んでみる の方を参照してみてください。
まずは DeleGate 用のディレクトリとして "/var/delegated/80" を作成します。
mkdir /var/delegated
mkdir /var/delegated/80
そして "/var/delegated/80" ディレクトリに、スティッキービットフラグを設定したら、ログファイル用のディレクトリとして "/var/delegated/80/log" も作成します。
chmod +t /var/delegated/80
mkdir /var/delegated/80/log
そうしたら、DeleGate 起動スクリプトとして次の内容のものを "/var/delegated/80/run" として保存します。
daemontools で起動させるポイントとしては "-v" オプションを指定して、DeleGate をフォアグラウンドで動作させると同時に、出力をログファイルではなく標準出力へとするところ、そして DeleGate を "exec" 命令で実行するところでしょうか。
#!/bin/sh
DELEGATE="/usr/local/sbin/delegated -v"
PORT=80
SERVER="tcprelay://192.168.1.1:80"
REACHABLE="*"
RELIABLE="*"
SERVICE="SERVER=${SERVER} REACHABLE=${REACHABLE} RELIABLE=${RELIABLE}"
exec ${DELEGATE} -P${PORT} ${SERVICE} 2>&1
そして、ログ用のスクリプトとしては次のようなものを "/var/delegate/80/log/run" として保存します。
#!/bin/sh
exec /usr/local/bin/multilog t ./main =status
後は次のようにして "/service" ディレクトリに "/var/delegated/80" へのシンボリックリンクを張れば、自動的に DeleGate が起動してくれます。
ln -s /var/delegated/80 /service/delegated.80