FTP( File Transfer Protocol )のモードの違い




FTP ( File Transfer Protocol ) には次の 2 つの転送モードがある。

1. ポートモード ( port mode )
2. パッシブモード ( passive mode )

モードによって動作が異なるため、
FTP によるファイル転送が失敗する原因となることが多い。

動作の異なる部分は、データのやり取りの部分。

クライアントから FTP サーバにログインする時や
クライアントで mget, mput, ls などのコマンドを入力した際の通信は
どちらのモードも共通して以下の通り。

クライアント:[ 1025-65535 ] --> FTP サーバ:21

クライアントは 1025 〜 65535 の任意のポートを使用し、
FTP サーバのポート 21 にアクセスする。

mget, mput, ls などのコマンドを入力した場合に、
実際にファイルなどのデータを FTP サーバからクライアントに転送する通信は、
データ専用の接続して別のセッションとなる。

コマンドを入力したセッションの返りではなく、別のセッションである点に注意が必要。

問題なのは、モードによってこのデータセッションの通信の方向が逆になる点である。


1. ポートモード ( port mode )

サーバ:20 --> クライアント:[ 1025-65535 ]


2. パッシブモード ( passive mode )

クライアント:[ 1025-65535 ] --> FTP サーバ:[ 1025-65535 ]


つまり、ポートモードで通信するためには、サーバ:20 から クライアント:[ 1025-65535 ] への
アクセスが許可されていなければならないということである。

パッシブモードの場合は、クライアント:[ 1025-65535 ] から FTP サーバ:[ 1025-65535 ] への
アクセスが許可されていなければならない。

これは、FTP サーバとクライアントの間にファイアウォールが設置されていたり、
サーバ側あるいはクライアント側でホストベースのパケットフィルタリングなどを
実施している場合には、アクセスを許可するための設定を考慮しておく必要がある。

Linux の iptables でパッシブ FTP を許可する ( passive )