Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
UNIX・サーバ構築の基礎知識 - DeleGateの導入
[go: Go Back, main page]

Last Update: 1998/04/21

DeleGateの導入

はじめに

 このページで書かれた文章は筆者の導入の経験に基づくものであり、 導入に関して決して完全なものではありません。 したがって、何らかの形で障害が発生しても筆者は一切責任を負わないものとします。
 このページではあなたが正しいネットワークオプションを選択した各OSごとのカーネルの再構築方法、 基本的なネットワークツールの使い方を熟知していることを前提としております。 もしこれらの知識が十分にない場合には、各OSごとのマニュアルや資料をよくお読みになってください。

 また、このページをご覧になり「ここがおかしい」や「ここをこうした方がよい」 などのご意見がありましたら 筆者 までご連絡ください。


目次




1.1. DeleGateとは?

 DeleGateとは電子総合研究所の佐藤豊さんが開発した純国産のプロキシーサーバです。 HTTP、Gopher、FTP、Wais、Telnet、NNTP、SMTP、POP、Whois などのTCP/IP上の各種プロトコルに対する汎用のプロトコル中継システムです。
 また、DeleGateはキャッシングを行うことが出来ます。 HTTPやFTPのキャッシングを行うことによりバックボーンのトラフィックを減少させることが可能です。
 対応しているプラットフォームはUNIX全般とWindowsNTとなっています。



1.2. DeleGateを導入する際に必要なもの

 筆者がDeleGateを導入する際に必要だったものを以下に示します。


1.3. DeleGateのコンパイル

 DeleGateパッケージを展開し、展開したディレクトリの中のsrc/MakeFile を必要に応じて修正します。その後makeを実行します。


# make
cc -DMKMKMK -DDEFCC=\"cc\" -I../include -L../lib mkmkmk.c -o mkmkmk.exe
-----------------------------------------------------------------
This Makefile assumes '.' is included in your PATH environment.
If the following rule failed in 'mkmkmk.exe: not found'
retry like this >>>>>>>>   make PATH=.:$PATH
-----------------------------------------------------------------
mkmkmk.exe -mkmkmk "cc" -I../include -L../lib maker/mkmake.c -o mkmake.exe

---- (中略) ----

!!!!!!!!!!!!!!!!!!!! WARNING !!!!!!!!!!!!!!!!!!!!!!!!!!!
!   You should have defined MANAGER as:                !
!     MANAGER = mail-address-of-the-DeleGate-manager   !
!   either in DELEGATE_CONF or in the Makefile.        !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Enter your E-mail address [root@dia]:        <- DeleGateの管理者のアドレスを入力してください
                          ~~~~~~~~~~         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 makeが一通り終わると、srcディレクトリにdelegatedが作成されています。 これを適当なディレクトリにコピーをします。筆者は/usr/local/etc/delegateにコピーをしました。



1.4. DeleGateの設定

 さて、DeleGateはプロキシーサーバなのでどんなプロトコルを中継するかを決めます。 DeleGateは実に多彩なプロトコルに対応しているので対応していないプロトコルに困ることはまずないでしょう。

 筆者は次のプロトコルを中継することにしました。
 また今回は上位ネットワークにあるFirewallマシンのDeleGateに中継します。  さらにバックボーンのトラフィックを減少させるためキャッシングも行うようにします。 これらのプロトコルを中継するにはファイアーウォールマシン上で走らせるわけですが、 delegatedにはconfファイルというものは存在しないのでdelegatedのオプションとしてこれらのプロトコルを設定します。 しかし、オプションが非常に多くなるのでシェルスクリプトを書くことにします。 筆者は起動時にdelegatedを起動したかったので/etc/rc.d/rc.delegateに書くことにします。rc.localから起動できるようにしておいてください。


Filename: /etc/rc.d/rc.delegate
#!/bin/sh
#
# /etc/rc.d/rc.delegate:  Local system initialization script.
#

#
# DeleGate HTTP(8080) Proxy
#
/usr/local/etc/delegate/delegated -P8080 \               <- ポート番号を8080にします
        MASTER=172.16.1.1:8080 \                         <- 上位ネットワークのdelegated[172.16.1.1]に中継します
        RELIABLE=*.midnight-dev.or.jp,172.20.1.[1-254] \ <- 172.20.1.1〜172.20.1.254まで使用許可
        SERVER=http://-/-/ \                             <- HTTP Proxyを選択
        CHARCODE=sjis \                                  <- キャラクターコードを強制的にSJISにします
        EXPIRE=2d \                                      <- キャッシュのクリアを2日にします
        EXPIRELOG=/var/log \                             <- expire.logの置かれるディレクトリ
        LOGDIR=/var/log \                                <- LOGディレクトリ
        LOGFILE=delegate.log \                           <- LOGのファイル名をdelegate.logにします
        VARDIR=/var/delegate \                           <- VARディレクトリを/var/delegateにします
        CACHEDIR=/var/delegate/cache \                   <- キャッシュディレクトリを/var/delegateにします
        CRON="0 5 * * * -expire 2" \                     <- 毎朝5時にexpireスクリプトを実行すます
        OWNER=bin                                        <- delegatedのオーナーをbinにします
#
# DeleGate FTP(8021) Proxy
#
/usr/local/etc/delegate/delegated -P8021 \               <- ポート番号を8021にします
        PROXY=172.16.1.1:8021 \                          <- 上位ネットワークのdelegated[172.16.1.1]に中継します
        RELIABLE=*.midnight-dev.or.jp,172.20.1.[1-254] \ <- 172.20.1.1〜172.20.1.254まで使用許可
        SERVER=ftp://-/-/ \                              <- FTP Proxyを選択
        EXPIRE=2d \                                      <- キャッシュのクリアを2日にします
        EXPIRELOG=/var/log \                             <- expire.logの置かれるディレクトリ
        LOGDIR=/var/log \                                <- LOGディレクトリ
        LOGFILE=delegate.log \                           <- LOGのファイル名をdelegate.logにします
        VARDIR=/var/delegate \                           <- VARディレクトリを/var/delegateにします
        CACHEDIR=/var/delegate/cache \                   <- キャッシュディレクトリを/var/delegateにします
        CRON="0 5 * * * -expire 2" \                     <- 毎朝5時にexpireスクリプトを実行すます
        OWNER=bin                                        <- delegatedのオーナーをbinにします

 この例ではHTTP Proxyを8080番、FTP Proxyを8021番に設定し、上位ネットワークのdelegatedに中継しています。 さらに、クライアントのIPアドレスが172.20.1.1〜172.20.1.254のみProxyの使用を許可しています。 この設定をすることで、不特定のホストからのアクセスを防ぐことが出来ます。

 これでこのスクリプトを実行するか、再起動を行えば使用可能になります。



2.1. クライアントの設定

 DeleGateの設定が終わったら今度はクライアントの設定です。 DeleGate用に各クライアントソフトウェアのProxyの設定を行います。



2.1.1. Internet Explorerの設定

 Internet Explorerの設定は[オプション]のなかのProxy設定を以下のように設定してください。

iesetup



2.1.2. Netscape Navigatorの設定

 Netscapeも同様にProxyの設定を行ってください。

nssetup


注意:Internet ExplorerとNetscape NavigatorのFTP Proxyの設定ですが、DeleGateのFTP Proxy(8021番)を指定せずに、HTTP Proxy(8080番)を設定してください。DeleGateのFTPとWEBブラウザのFTPの解釈が微妙に違うのです。DeleGateはFTP->HTTP変換機能を持っているのでこれを使います。


2.1.3. AsaTermの設定

 筆者はASAHI-NETに加入しているため、AsaTermを利用しています。 TELNETを標準でサポートしていますが、先程DeleGateで設定したTELNET Proxyでは接続できません。 そこで、DeleGateの汎用プロトコルであるTCP RELAYを使用します。


Filename: /etc/rc.d/rc.delegate
#
# DeleGate TCPRELAY For ASAHI-NET
#
/usr/local/etc/delegate/delegated -P5023 \        <- ポート番号を5023にします
    RELIABLE=*.midnight-dev.or.jp,172.20.1.[1-254] \ <- 172.20.1.1〜172.20.1.254まで使用許可	
    SERVER=tcprelay://asahi-net.or.jp:23/         <- TCP RELAYを選択

 この設定では、delegatedが走っているホストの5023番にtelnet接続をすると、 直接asahi-net.or.jp:23に接続されるようになります。

 この後AsaTermを使って接続するわけですが、AsaTermを次のように変更します。

asasetup

 接続条件でTELNETを選択しポート番号を5023番にしてください。これで通常通りに使用できます。



2.1.4. NIFTY MANAGERの設定

 NIFTY MANAGER for Windows95はバージョンが4になってからTCP/IPに対応しました。 このNIFTY MANAGERはTELNETプロトコルではなく独自のプロトコルを使用しているようなので、 TCP RELAYを使用します。筆者はNIFTYには加入していませんが、例を次に挙げておきます。 AsaTermの時と同様にDeleGateを設定します。


Filename: /etc/rc.d/rc.delegate
#
# DeleGate TCPRELAY For NIFTY MANAGER
#
/usr/local/etc/delegate/delegated -P4134 \            <- ポート番号を4134にします
    RELIABLE=*.midnight-dev.or.jp,172.20.1.[1-254] \ <- 172.20.1.1〜172.20.1.254まで使用許可	
    SERVER=tcprelay://hmi.nim.niftyserve.or.jp:4134/  <- TCP RELAYを選択

 この設定では、delegatedが走っているホストの4134番に接続をすると、 直接hmi.nim.niftyserve.or.jp:4134に接続されるようになります。

 この後、NIFTY MANAGERの接続ポートを変更すれば通常通りに使用できます。



2.1.5. NIFTERMの設定

 NIFTERMはTELNETに対応しております。例を次に挙げておきます。 AsaTermの時と同様にDeleGateを設定します。


Filename: /etc/rc.d/rc.delegate
#
# DeleGate TCPRELAY For NIFTERM
#
/usr/local/etc/delegate/delegated -P6023 \            <- ポート番号を6023にします
    RELIABLE=*.midnight-dev.or.jp,172.20.1.[1-254] \ <- 172.20.1.1〜172.20.1.254まで使用許可	
    SERVER=tcprelay://r2.niftyserve.or.jp:23/  <- TCP RELAYを選択

 この設定では、delegatedが走っているホストの6023番に接続をすると、 直接r2.niftyserve.or.jp:23に接続されるようになります。

 この後、NIFTERMのTELNET接続ポートを変更すれば通常通りに使用できます。



3.1. 実際の管理と運用

 一度、起動してしまえばあとはほとんど問題ないのですが、 HTTP/FTPキャッシュが/varディレクトリに設定されている場合、 100%近くになりサーバがまれにダウンしてしまう場合があります。 管理者はこまめにチェックを行い100%近くになったらキャッシュをEXPIREするようにしましょう。



4.1. 参考文献

 今回のページを作成するにあたり次のものを参考にしました。





このページに関するご感想・ご意見などをお聞かせ願えれば幸いです。
By Yuichi.Sasaki(sasaki@midnight-dev.forum.or.jp)
インデックスへ戻る