2008年4月8日火曜日

FTPS と Passive プロパティ

弊社の FTP コンポーネントでは、PORT (Active) モードと PASV (Passive) モードをサポートしており、切り替えは Passive プロパティの値を変更することで行います。(Passive の値が true の時 PASV モード。)

FTPS コンポーネントにもこの Passive プロパティが存在していますが、V6 製品では Passive に false を設定しても必ず PASSIVE モードで接続されます。これはファイアウォール使用時に SSL 接続を PORT モードで行うことは困難だからです。(特に NAT ファイアウォールの場合、リモート側からのデータコネクションで使用するポートを特定することが困難。) このため、SSL 製品のFTPS コンポーネントでは Passive プロパティは互換性のため残したまま、その値の如何にかかわらず常に Passive モードで接続するようになっていました。

ただし、SSL V8 製品では再び Passive プロパティの設定が有効となり、SSL 製品でも PORT モードと PASV モードを選択使用することが可能となっています。これは、Config() で上記の問題に対応できるようになったためです。このために使用する設定は以下の通りです。
  • ftp.Config("PortRange=...");
  • ftp.Config("ActiveModePORTAddress=...");

PortRange 設定により FTPS コンポーネントが PORT モード時にリスンする TCP/IP ポートの範囲を指定し、ActiveModePORTAddress 設定により、PORT コマンドのパラメータとしてサーバ側に通知する IP アドレスとポートを設定します。これにより、PORT コマンドでサーバに通知するアドレスとポートをクライアント PC のものではなくファイアウォールの外側アドレス (およびポート) を設定することが可能となります。そして、ファイアウォールの当該インターフェイスおよびポートへの外部からの接続を、当該クライアントにフォワードするように設定します。

以上により、ファイアウォールがパケットの書き換えを行うことなく外部のサーバと FTP(S) の PORT モード接続を行うことが可能となります。

各設定の詳細については、製品添付のヘルプをご参照ください。

0 件のコメント: