DeleGate で HTTP Proxy を構築する
SERVER
電総研の DeleGate を用いて、HTTP Proxy を構築してみました。
HTTP Proxy
電子技術総合研究所(電総研) の佐藤豊さんが作成した DeleGate を利用して、内部ネットワークに保護されているクライアントが HTTP Proxy を経由することで外部 Web サーバへアクセスできるようにしてみます。
たとえば今回は、8080/TCP ポートを使用して HTTP Proxy を内部ネットワークに対して公開するとします。
DeleGate で HTTP Proxy を行う場合、上記の接続用ポートのほかに、DeleGate が実際のアクセスに使用するポートも必要になります。今回はそれを 10080 とします。
/usr/sbin/delegated -P8080 SERVER="http://-/" MASTER="proxy.ez-net.jp:10080" RELIABLE="192.168.*.*" ADMIN="admin@dummy.ez-net.jp"
このような設定で、Proxy を設定します。
これを /etc/rc.d/rc.local などの起動スクリプトの中へ書き込んであげれば、再起動のたびに自動的に DeleGate が起動するようになります。そうでなければ、再起動のたびに毎回起動させてあげる必要があります。
SERVER のところに "http://-/" と設定することで、HTTP Proxy 機能が実現できます。ここを "ftp://-/" とした場合は FTP Proxy が出来るようです。
MASTER のところには、クライアントのアクセスに代わってアクセスするサーバの情報を指定します。もちろん DeleGate が稼動しているコンピュータです。
RELIABLE には、この Proxy を利用できるクライアントを指定します。上の例だと "192.168.*.*" ですので、192.168. とはじまる IP アドレスに対して利用を許可しています。RELIABLE="*" なんてすると誰でも使える Proxy が作れます。が、そうすると踏み台など悪用されてしまう恐れがあるので、ここは必ず自分の環境にあった設定にするようにしましょう。
ADMIN は、DeleGate で何かエラーがあった場合に表示されるメールアドレスです。
クライアントの設定
いろいろなブラウザによって設定する場所が違いますが、設定内容はほとんど一緒です。
Proxy (プロキシ) の設定を行う場所を見つけて、HTTP Proxy のところに先ほどの DeleGate を設定したコンピュータとポート番号を指定します。上記の例ですと、サーバ名が proxy.ez-net.jp で、ポート番号が 8080 となります。
指定するポート番号は DeleGate で -P オプションで指定した番号になるので気をつけましょう。
ルータの役割を担っている場合の注意
DeleGate が内部ネットワークと外部ネットワークとをつなぐ役割を担っている場合は、次の点に注意する必要があります。
DeleGate が、INPUT/FORWARD/OUTPUT に対して、内部クライアントの任意のポートと外部の WWW ポートとのやり取りが出来ないように設定されている必要があります。
そうしないと、内部クライアントが HTTP Proxy を経由しなくても外部の Web サーバへアクセスできてしまいます。もちろんキャッシュ目的など、必ず HTTP Proxy を通過させる必要がないのならばかまいませんけど。
パケットフィルタで守られている場合
DeleGate を設定するサーバにパケットフィルタが設定されている場合は、次の点に気をつけてください。
クライアントが HTTP Proxy に接続できるようにするために、INPUT/OUTPUT に対して、クライアントの任意のポートとサーバの待ちうけポートが通信できるようにする必要があります。
上記の場合だと、クライアントの任意のポートがサーバの 8080 番ポートとデータのやり取りを行える必要があります。
また、DeleGate が稼動しているサーバ自身が外部の WWW サーバとデータ通信が行えるように INPUT/OUTPUT を調整する必要があります。これは実際に通信を行うサーバの任意のポートと外部の WWW ポートとが自由にデータ通信を行えるようになっている必要があります。