• 検索結果がありません。

クライアント SOCKS サポート

ドキュメント内 rzab6pdf.ps (ページ 62-66)

とができます。

SOCKS サーバーを使用するためには、セキュア・クライアント・ホストで以下の 2 つのアクションを実 行しなければなりません。

1. SOCKS サーバーを構成します。

2. セキュア・クライアント・システムにおいて、クライアント・システム上の SOCKS サーバーに送信さ れるすべてのアウトバウンド・クライアント TCP 接続を定義します。

クライアント SOCKS サポートを構成するには、以下のステップを実行します。

a. System i® ナビゲーターで、「ユーザーのシステム」 > 「ネットワーク」 > 「TCP/IP 構成」の順 に展開します。

b. 「TCP/IP 構成」を右クリックします。

c. 「プロパティー」をクリックします。

d. 「SOCKS」タブをクリックします。

e. 「SOCKS」ページに関する接続情報を入力します。

注: セキュア・クライアント SOCKS 構成データは、セキュア・クライアント・ホスト・システムにあ るライブラリー QUSRSYS の QASOSCFG ファイルに保存されます。

構成が完了すると、システムは SOCKS ページで指定した SOCKS サーバーへ、特定のアウトバウンド接 続を自動的に送信します。システムが自動的に行うので、クライアント・アプリケーションに変更を加える 必要はありません。これが要求を受信すると、SOCKS サーバーは非セキュア・ネットワーク内のサーバー に対して別の外部の TCP/IP 接続を確立します。それから SOCKS サーバーは、内部 TCP/IP 接続と外部

TCP/IP 接続の間でデータを中継します。

注: 非セキュア・ネットワーク上のリモート・ホストは直接 SOCKS サーバーに接続しますが、セキュ ア・クライアントに直接アクセスすることはできません。

ここまでは、セキュア・クライアントから送信されるアウトバウンド TCP 接続について説明しました。ク ライアント SOCKS サポートは、SOCKS サーバーにファイアウォールを経由するインバウンド接続要求を 許可させることもできます。セキュア・クライアントから Rbind() 呼び出しを出せば、この通信が可能に なります。 Rbind() が操作を行えるようにするため、セキュア・クライアントはすでに connect() 呼び出し を発行済みで、その呼び出しの結果、SOCKS サーバーを介したアウトバウンド接続が行われている必要が あります。 Rbind() インバウンド接続は、connect() が確立したアウトバウンド接続が宛先にしていたのと 同じ IP アドレスからのものでなければなりません。

以下は、アプリケーションに対して透過的な SOCKS サーバーと、ソケット API がどのように対話するか を分かりやすく示したものです。例では、FTP クライアントは Rbind() API を bind() API の代わりに呼び 出します。これは、FTP クライアントからファイルまたはデータの送信が要求されたときに、FTP プロト コルによって FTP サーバーがデータ接続を確立できるようになるからです。この呼び出しを行うために は、 __Rbind プリプロセッサー #define (bind() を Rbind() として定義する) を使用して FTP クライアン ト・コードを再コンパイルします。別の方法として、アプリケーションが関連するソース・コードで

Rbind() を明示的にコーディングすることもできます。アプリケーションが SOCKS サーバーからのインバ

ウンド接続を必要としない場合は、Rbind() を使用しないでください。

注:

1. FTP クライアントは、非セキュア・ネットワークへのアウトバウンド TCP 接続を SOCK サーバー経

由で開始します。 FTP クライアントが connect() で指定する宛先アドレスは、非セキュア・ネットワー クに置かれている FTP サーバーの IP アドレスおよびポートです。セキュア・ホスト・システムは

SOCKS ページから構成されています。これにより、この接続を SOCKS サーバーから送信できます。

構成が完了すると、システムは SOCKS ページで指定された SOCKS サーバーへ接続を自動的に送信し ます。

2. ソケットがオープンされ、インバウンド TCP 接続を確立するための Rbind() が呼び出されます。確立 が完了すると、このインバウンド接続は上記で指定したのと同じ宛先アウトバウンド IP アドレスから 接続します。特定のスレッドについては、SOCKS サーバーを介するアウトバウンド接続とインバウン ド接続は対にする必要があります。言い換えれば、すべての Rbind() インバウンド接続は、SOCKS サ ーバーを使用したアウトバウンド接続の直後に実行されなければなりません。 Rbind() を実行する前 に、このスレッドと関連する非 SOCKS 接続への介入を試行することはできません。

3. getsockname() は SOCKS サーバーのアドレスを戻します。ソケットは、SOCKS サーバーから選択した

ポートと対になっている SOCKS サーバー IP アドレスに論理的にバインドされます。この例では、ア ドレスは制御接続ソケット CTLed によって、非セキュア・ネットワークに置かれている FTP サーバ ーへ送信されます。 これは FTP サーバーが接続されているアドレスです。 FTP サーバーは SOCKS サーバーに接続されますが、直接セキュア・ホストに接続されることはありません。

4. SOCKS サーバーは FTP クライアントとのデータ接続を確立し、FTP クライアントと FTP サーバーの

間でデータを中継します。ほとんどの SOCKS サーバーは、サーバーが一定の時間だけセキュア・クラ イアントに接続するのを許可します。サーバーがその時間内に接続しない場合は、accept() でエラー

ECONNABORTED が戻されます。

関連情報:

bind()--Set Local Address for Socket API

connect()--Establish Connection or Destination Address API accept()--Wait for Connection Request and Make Connection API getsockname()--Retrieve Local Address of Socket API

Rbind()--Set Remote Address for Socket API

ドキュメント内 rzab6pdf.ps (ページ 62-66)