bT006
ルータを導入したらFTPサイトが表示できなくなった。
PASVモードに設定する。

FTPとは「Fi1e Transfer Protocol」の略で、クライアントとサーバ間でファイルの転送を行う際に利用されるプロトコルです。 インターネット利用の中では、ファイルのダウンロードやWebぺージの更新などで、いまでもよく利用されています。 FTPは、HTTPなどとは異なり、「コントロール用のコネクション」と「データ転送用のコネクション」の2つのTCPコネクションを利用します。 ファイル転送に特化したプロトコルであることから、HTTPよりもスビードの面で優れています。 しかし、セキュリティの面では不安な点もあります。

このFTPの仕組みやセキュリティについて解説します。
先述したように、FTPは2つのコネクションを利用しています。
一つは、コントロール用のコネクションで、FTPクライアントからのコマンドの送信と、FTPサーバからコマンドに対する返答を受け取るために使用される。
そしてもう一つは、データ転送用のコネクションで、データ転送を行います。
なお、データ転送用のコネクションは、転送ごとに新たに確立されます。 具体的にはFTPサーバとのユーザー認証やファイルのダウンロード要求などでコントロール用のコネクションが利用され、 実際にデータを送受信するのはデータ転送用コネクションが使われてます。
通常、コントロール用コネクションはFTPサーバのポート21番、データ転送用コネクションはポート20番を使用します。 FTPによるデータ転送は、コントロール用コネクションの確立から始ます。 まず、FTPクライアントがFTPサーバに対し接続要求を行う。 それにポート21番が利用される。 コネクションが確立したら、同じポートを利用してユーザー認証を行う。 FTPサーバ側からクライアントに対し、ユーザー名とパスワードを要求し、クライアント側よりユーザー名とパスワードが送信され認証が行われる。 ファイルのリスト表示やファイルの送受信を行うためには、FTPサーバとFTPクライアントの間に新たにデータ転送用のコネクションを確立する必要がある。
データ転送のコネクション確立には、2つのモードがある。
標準的なモードは「アクティブモード」と呼ばれるもので、クライアント側でデータ転送用のポートを開き、FTPサーバ側からクライアントヘのデータ転送用コネクションを確立する。 つまり「サーバ」→「クライアント」という接続になる。 2つ目のモードは、「パッシブモード」と呼ばれるモードで、クライアント側からFTPサーバのポートヘデータ転送用のコネクションを確立する。 「クライアント」→「サーバ」という接続になる。 パッシブモードは、クライアント側がファイアウォールを導入しているなど、外部からのTCP/IPの接続を遮断している場合に利用する。 そうした環境ではFTPサーバ側からのコネクションが確立できないため、パッシブモードを利用してクライアント側からデータ転送用のコネクションを確立する。 データ転送用のコネクションは動的に開かれ、データの転送が終了するたびに閉じられる。 すべてのデータ転送が終了したら、クライアントから終了の指示をFTPサーバ側へ送り、コネクションを切断する。 コマンドは、表2006 を参照して下さい。ちなみに、これらのコマンドは、FTPクライアントとFTPサーバがやり取りするために用いられるものであり、ユーザーが利用する「ls」や「get」などとは異なる。 ユーザー用のコマンドは別に用意されており、ユーザーが入力したコマンドが、これらのコマンドに置き換えられて送信されるのである。 コマンドプロンプトで、これらのコマンドを入力したい場合には「quoteport」といったように「quote」のあとに入力すれば送信できる。   また、FTPサーバによってはいくつかサポートされていないコマンドもあるため、使用できるコマンドを知りたい場合にはログインしたあとに「quotehe1p」と入力するとそのFTPサーバで使用できるコマンドが表示される。
表2006 主なFTPコマンドの一覧
コマンド説明
USER<ユーザー名の指定/td>
PASSパスワードの指定
CWDディレクトリの移動
CDUP一つ上位のディレクトリの移動
PWD現在のディレクトリの表示
REINコントロール用コネクションの切断
MKDディレクトリの作成
QUITログアウト(FTPの終了)
PORTデータ転送用コネクションで使用するIPアドレス、ポート番号を指定
PASVパッシブモードの指定
TYPE転送データの形式の指定
MODE転送モードの指定(デフォルトはストリーム)
RETR指定したファイルのダウンロード
STOR指定したファイルのアップロード
APPE送信するデータを指定したファイルへ追加
RESTファイルの途中から転送
ABORデータ転送の中止
DELE指定したファイルを削除
RMD指定したディレクトリを削除
NLSTファイルの一覧表示
LISTファイルの一覧表示(属性を含む詳細情報)
SYSTシステム情報の表示
STAT現在の状態の表示
HELPコマンド一覧の表示
NOOP何もしない

ユーザー認証の流れ
FTPクライアントからFTPサーバにログインが完了するまでを見てみよう。 下図のFTPコマンドの例を見れば分かるように、FTPクライアントとFTPサーバのTCPコネクションが確立してから、ユーザー認証が行われている。 「User(192.168.1.20:(none)):」の部分でユーザー名を要求し、「Password:」部分でパスワードが要求されている。 この例では、FTPクライアントはUSERコマンドで「USER tts」を、パスワードも同様に、PASSコマンドで「PASS heroin」を送信している。 これに対し、FTPサーバからの応答は「230 User tts logged in.」となっており、FTPサーバヘのログインが正常に完了したというステータスを返している。 FTPサーバからのステータスは、「230 User tts logged in.」のように数値と応答の文字列からなる。 「230」や「200」などの数値はプロトコルで決められたものであり、この数値からFTPクライアントはその処理が成功したのか、失敗したのかを知るわけだ。 文字列は人聞が分かりやすいように付け加えられている。

ユーザー認証時のFTPコマンドの例
  C:\Documents and Settings\tts>ftp -d 192.168.1.20.  ←FTPサーバへの接続要求
Connected to 192.168.1.20.  ←FTPサーバに接続成功
220 ProFTPD 1.2.6 Server (Sample FTP Server)
User (192.168.1.20:(none)): tts  ←ユーザー名を入力
---> USER tts  ←FTPプロトコルのコマンドで送信
331 Password required for tts.
Password:  ←パスワードを入力
---> PASS heroin  ←FTPプロトコルのコマンドで送信
230 User tts logged in.  ←ログインに成功

標準モードのFTPでは、接続に20番ポートと21番ポートを使用するが、20番ポートヘの接続がサーバ側から開始されるため、 ルータやファイアウォールの設定によってはFTPサイトに接続できない可能性がある。 このような場合、ルータの設定を変更するのではなく、パッシブモード(PASV モード)を利用する設定にするとよい。 Internet Explorer の場合、インターネットオプションの「詳細設定」で「パッシブFTP(ファイアウォールおよびDSLモデム互換用)を使用する」にチェックを入れる。 そのほか、ダウンロードツールなどでも、パッシブモードの設定が可能なものがある。 これらのツールを使っていてルータ導入後にダウンロードができなくなった場合は、オプション設定などを確認してみるとよいだろう。

参考:PC Japan 2003/09 Page60、PC Japan 2003/10 Page174-175
△ Return