アクティブモード
FTPで、データ転送用のコネクションをサーバからクライアントへ張る方式。クライアントがPORTコマンドで待ち受けるIPアドレスとポート番号を伝え、サーバがそこへ接続する。
イマシルちゃんの解説
FTPというファイル転送のプロトコルでは、操作を伝える制御用と、ファイルを運ぶデータ転送用に接続を分けるんだ。
アクティブモードは、このデータ転送用の接続をサーバから利用者側のクライアントへ張る方式だよ。
クライアントは接続の窓口となるポートを用意して、自分のIPアドレスとポート番号をPORTコマンドで知らせるの。
サーバは教わった接続先につなぎ、ファイルを送ったり受け取ったりするよ。
外からの接続を遮るファイアウォールがあると、この接続が止まることがあるんだ。
ログインできても転送だけ失敗する場合は、データ転送用の接続も通るか確認する必要があるよ。
この解説はわかりやすかったですか?
より深い解説
定義
アクティブモードは、FTPのデータ転送用コネクションを、サーバからクライアントへ張る方式である。サーバが自分から「能動的に(active)」接続することから、この名前がある。FTPの元々の方式で、標準モードともいう。
手順
- クライアントが、データ転送用に待ち受けるポートを開く
- クライアントが、制御用コネクションでPORTコマンドを送り、自分のIPアドレスとポート番号を伝える(例:
PORT 192,0,2,20,195,80) - サーバが、自分のポート20番から、伝えられたIPアドレスとポートに接続する
- 接続できたら、データを転送する
問題点
| 問題 | 内容 |
|---|---|
| ファイアウォール | クライアント側のファイアウォールは、外部から内側への接続を遮断することが多い |
| NAT | PORTコマンドに書かれるのはクライアントのプライベートアドレスなので、外のサーバからは接続できない |
これを解決するため、NAT機器の中には、FTPの制御用コネクションの中身を見てPORTコマンドのアドレスを書き換えたり、一時的に接続を許可したりする機能(ALG:Application Level Gateway)を持つものもある。ただし、FTPSのように制御用コネクションが暗号化されていると、中身を見られないのでこの機能は働かない。
現在は、こうした問題の起きにくいパッシブモードが一般的である。
試験での見分け方
- データ転送用コネクションをサーバから張る → アクティブモード、PORT
- データ転送用コネクションをクライアントから張る → パッシブモード、PASV
「クライアント側から接続するために、サーバ側のポートを要求する」と書かれていれば、パッシブモードのPASVである。