FTPソフトにあるPASVモードって何ですか?
PASV(パッシブ)モードというのは,FTPでデータ転送を行うときの転送モードの一つです。デフォルトではもう一つの転送モードであるACTIVE(ノーマル)モードを使うようになっています。
FTPを使う場合,FTPクライアントとサーバーの間では,最初にコマンドの送信やその結果を受信するためにコントロールコネクションという接続を行います。そして,getコマンドやputコマンドによるデータ転送が行われるときには,コントロールコネクションとは別のデータコネクションという接続を行います。このデータコネクションの作り方が2種類ある転送モードによって違ってきます。
ACTIVEモードでは,データ転送用のサーバー処理をFTPクライアント側で動かしておいてFTPサーバーがそこに接続するのですが,PASVモードではデータ転送用のサーバー処理をFTPサーバー側で動かしておいて,FTPクライアントからそこに接続するようになります。つまりサーバー処理をクライアント側で行うかサーバー側で行うかの違いがあるわけです。
この違いが問題になるのは,プロキシサーバーを経由した接続やIPマスカレードやNATなどのIPアドレス変換を行っている接続など,クライアントからはサーバーを特定できるがその逆はできない可能性がある場合です。
このような状態ではFTPサーバーからFTPクライアントが用意したデータ転送用サーバーに接続することはできないため,データ転送用サーバーをFTPサーバーに用意してもらうPASVモードでないとデータコネクションを確立できません。ですので,一般にプロキシサーバーなどを使う場合は,FTPはPASVモードを使うように設定することになっています。
ちなみに,たいていのFTPサーバーはPASVモードに対応していますが(画面1),FTPクライアントの中にはWindows 98/Me/NT/2000などに標準で付いているコマンドライン版FTPのように,PASVモードに対応していないものもあるので注意が必要です(画面2)。
(渋谷 隆)
画面1 FTPサーバーがPASVモードに対応しているかどうかはTelnetクライアントでポート21番を指定してアクセスしてみると分かりやすい(ターミナル設定でローカルエコーをチェックすること)。helpコマンドで「PASV」コマンドが使えるようになっていれば,PASVモードに対応していることになる
画面2 Windows 98/Me/NT/2000などに標準で付いているコマンドライン版のFTPクライアントはPASVコマンドを持っていない。常にACTIVEモードでデータコネクションを行おうとするので,プロキシサーバー経由では使いものにならない