サイトアイコン puti se blog

FTPがアクティブモードかパッシブモードか確認する方法

FTPプロトコルの通信には、アクティブモードとパッシブモードがあります。
実際、FTP通信行われているFTPのデータコネクション(データ転送用のコネクション)が

確認する方法は、どうしたら良いでしょうか?

環境・前提条件

を使って確認しました。

結論、PORTコマンドを使っているかPASVコマンドを使っているか確認すればわかる

FTP通信には、

があり、データコネクションを使う時には毎回、

か指定する必要があります。

なので、PORTコマンドかPASVコマンドかどちらのコマンドがFTP内で実行されているか確認できれば
そのFTP通信がアクティブモードなのか、パッシブモードなのか、確認することが出来ます!

FTPサーバー側ではFTPログを確認すればアクティブモードかパッシブモードかわかる

WindowsのFTPサーバーの場合、以下にFTPログがあります。(デフォルト設定の場合)

C:\inetpub\logs\LogFiles

こちらのFTPログファイルを開きますと、FTPクライアントとFTPサーバーのコマンドのやり取りが記録されています。
このFTPログの中に、PORTコマンドがあればそれはアクティブモードです。

一方、PASVコマンドが確認できれば、パッシブモードです。
上記、画像のpasvの隣の「227」は「Passiveモードに切り替わった」というサーバー側の応答コードです。

参考: 器用な二刀流、FTPでファイル転送!:TCP/IPアレルギー撲滅ドリル(5) - @IT

クライアント側ではFTPコマンド「ls」を実施すればわかる

一方、クライアント側でもアクティブモードかパッシブモードか確認することが出来ます。
それは、データコネクションのFTPコマンド(例えば、「ls」コマンド)を実行すれば、わかります。

上記、画像のように「200 PORT」と帰ってくれば、FTPサーバーがPORTコマンド(アクティブモード)を許可したということです。

一方、上の画像では「quote pasv」コマンドで、FTPサーバーが「227」(Passiveモードに切り替わった)の応答コードを返していますが、その後「ls」コマンドがアクティブモードでFTPサーバーに接続しようとしているため、

425-Cannot open data connection.

 Win32 error:   The network connection was aborted by the local system.
 Error details: Client IP on the control channel didn't match the client IP on the data channel.

というエラーが帰ってきて、データコネクションがうまく通信出来なかったことがわかります。
実は、Windowsの標準FTPコマンドでは、アクティブモードしか実施できないので、このエ425ラーとなってしまっています。

アクティブモードとパッシブモードはどっちがどっち?(覚え方)

FTPサーバー → FTPクライアント

FTPサーバーから、能動的に(アクティブ)にTCPコネクションを張りに行くのがアクティブモードです。

FTPサーバー ← FTPクライアント

一方、FTPサーバーが、受動的に(パッシブ)にTCPコネクションを張られるのがパッシブモードです。
インターネット上の、FTPサーバーに適しているのがパッシブモードです。

モバイルバージョンを終了