Just MyShopへ
Princo.org は Justsystem を応援します
技術関連情報サイト http://wiki.princo.org/ をオープンしました.
dum
logo01 logo02
Linux Tips
TOP > tips > xinetd_proxy.html
メニュー

Just MyShopへ
Justsystem
応援します!
border01 border02 border03
border04

xinetdでマルチプロトコル透過Proxyを構築

はじめに

xinetdは、リクエストに応じて設定されているデーモンを立てる優れたサービスです。 xinetdで主に提供可能なサービスとしては、telnet,ssh,ftp,popperそしてfinger等があります。 ここでは、xinetdを使って様々なプロトコルに応用可能な透過Proxyを構築します。

xinetd redirect(透過プロクシ)を利用すると、 外部のIPが発信したリクエストに対して、あたかもxinetdが動いているIPを持つ サーバーがリクエストしたように見せかける事が可能です。(踏み台利用)

応用例として私が実際に使っているのは,外部からxinetdサーバーを踏み台としたSMTP送信です。 私が外部の如何なる場所でインターネット接続をして居ようが、どんなOSを使っていようが、 自分のプロバイダのSMTPを利用することが可能なのです。

利用できるのはSMTPだけではありません。 POP,SMTP,WWWなど、いろいろと応用可能です。

外部からSMTP送信をする

目的

外部のIPアドレス(会社や学校や秘密組織)から xinetdサーバを踏み台にして、契約プロバイダのSMTP(smtp.your.isp.co.jp:25)に接続します。

接続図

                      +-------------------+
     |                |                   |
外部 |---(port:25)--->|  xinetd server    |--->(smtp.your.isp.co.jp:25)
     |                |                   |
                      +-------------------+

設定ファイル

下記の内容で /etc/xinetd.d/proxy-smtp ファイルを作成します。

service smtp
{
    disable = no
    socket_type = stream
    wait = no
    user = root
    redirect = smtp.your.isp.co.jp 25
}

redirectの行には、代理で取得する最終目的地のホスト名(又はIPアドレス) とポートを 明示します。

リクエストを受信したsmtp.your.isp.co.jpは、自社ユーザーからのリクエストだと 思いこみ、何の迷いもなく如何なるsmtp転送も許可してくれます。

外部から隠しPORTでSMTP送信をする

目的

smtpをredirectするのは良いのですが、既にxinetdサーバーと 同じIPアドレスで smtpサービスが稼働している場合、 ポート番号が重なってしまうため この手法でのリダイレクトは行えません。

そこで、xinetdで隠しportをredirect用にオープンすることにより、 この問題を解決できます。

また、ポートスキャンなどに引っかからない為に最初から 隠しPORTを利用するのも良いかもしれません。

接続図

                        +-----------------+
     |                  |                 |
外部 |---(port:9999)--->|  xinetd server  |--->(smtp.your.isp.co.jp:25)
     |                  |                 |
                        +-----------------+

設定ファイル

下記の内容で /etc/xinetd.d/proxy-smtp ファイルを作成します。

service proxy-smtp
{
    disable = no
    socket_type = stream
    wait = no
    user = root
    redirect = smtp.your.isp.co.jp 25
}

service行に注意してください。 proxy-smtpは規定外のサービス名なので、 xinetdは噛んでくれません。 そのため、/etc/servicesファイルにproxy-smtpサービスのエントリを追加します。

...
tproxy 8081/tcp
tproxy 8081/udp
jetdirect 9100/tcp
mandelspawn 9359/udp
proxy-smtp 9999/tcp
proxy-smtp 9999/udp

kamanda 10081/tcp
kamanda 10081/udp
amandaidx 10082/tcp
...
dum
border05 dum dum

(c) 2002 Princo.org