Transparent Proxy over SOCKS by DeleGate の和訳

訳者: Hiroshi Suzuki<setter at i-red dot info>
翻訳日:2006/12/19

コメント:
翻訳の正確さは保証しません。
必ず、原文と共に、使用してください。

BACK ( DGbeecon )


DeleGate による SOCKS 越えの透過型プロキシ

Yutaka Sato
December 8, 2006

SocksTap: SOCKS を基盤とした透過型アプリケーションレベルプロキシ :p

DeleGate バージョン 9.4.1 は、"SOCKS 越えの透過型プロキシ" を実現しました (*1)。 それは、SOCKS プロキシ経由で対象に接続するように設定されたクライアントにために、 HTTP, FTP, NNTP を含むアプリケーションプロトコルで、キャッシュ, ログ, フィルタ などを行うのに使えます。 この機構は、クライアントが SOCKS 対応している (SOCKSified) 必要があり、 その代わり、IP 層での転送が不要になります。

DeleGate は、この目的のために、SOCKS サーバとして起動されます。 SOCK プロトコルのネゴシエーションが完了後、サーバプロセスはクライアント・サーバ間の TCP 接続上を伝達されるアプリケーションプロトコルを解釈するアプリケーションレベルプロキシ になり、各アプリケーションプロトコルで定義された方法と書式でキャッシュやロギングなどを行います。

第一段階) DeleGate は SOCKSサーバとして動作し、 クライアント認証と、対象サーバについてのネゴシエーションを行います。
   client ================> DeleGate
           SOCKS / TCP
            authentication
            connection

第二段階) DeleGate はアプリケーションレベルプロキシとして動作し、 クライアント・サーバ間の転送や、キャッシュからのデータを転送します。
                                       +-----> another-proxy
                                       |
   client ================> DeleGate --+------------> server
           HTTP                cache
           FTP                 log  
           NNTP                filtering
           SMTP                routing
           POP                 mount
           ...                 authentication
                               ...

TCP 接続上のプロトコルは、クライアントからの最初の要求かサーバからの最初の応答の パターンにより推測されます。(*2)
サーバへの接続は、アプリケーションプロトコルが HTTP で要求に対して存在する キャッシュが新鮮な場合、確立されないかもしれません。

DeleGate をこのような動作に設定するには、以下のように SOCKSTAP パラメータへ認識させるアプリケーションプロトコル名を追加します。

一番簡単な設定方法は、以下のように任意のプロトコルを認識させます。


(*1) 用語 "透過型プロキシ" は通常 "クライアントから見えない HTTP プロキシ" に対して使われます。 DeleGate は、そのようにも使えます。 それについて HTTP の仕様で正式に定義されている意味は、 このような使いかたではなく、要求・応答データを編集しない単なるプロキシを意味する 点に注意してください。

(*2) DeleGate には他にも、以前より "Generalist" と呼ばれている、 "サーキットレベルプロキシ越えの透過型アプリケーションレベルプロキシ" があります。 それによりアプリケーションプロトコルの情報が示されているので、 どのプロトコルで通信を認識しなければならないかを知ることは簡単です。

 

[CTX] [ALL] SOCKSTAP parameter


SOCKSTAP parameter*  ==  ProtoList[:[dstHostList][:[srcHostList][:params]]]
                     --  default: none