FFFTPを利用して、とあるレンタルサーバにアクセスしたら、「425 Unable to build data connection: Operation not permitted ファイル一覧の取得を中止しました. ファイル一覧の取得に失敗しました.」と表示されてファイル一覧が表示されない。
早速調査して対策します。
ログの調査と原因特定
FFFTPのログ調査
FFFTPではFTP接続の際の通信ログが最下部のウィンドウに表示されるので、それを見てみます。※ちなみにFFFTPのバージョンは最新バージョンの「FFFTP Ver 4.9」です。
■ログ(※一部伏字にしてあります。)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
---------------------------- FTP over Explicit SSL/TLS (FTPES)を使用します. ホスト ●●●.●●●.jp (xxx.xxx.xxx.xxx:21) に接続しています. 接続しました. 220 ProFTPD 1.3.3e Server (ProFTPD Default Installation) [xxx.xxx.xxx.xxx] >AUTH TLS 234 AUTH TLS successful >PBSZ 0 200 PBSZ 0 successful >PROT P 200 Protection set to Private >USER XXXXXXXXXXXX 331 Password required for XXXXXXXXXXXX >PASS [xxxxxx] 230 User XXXXXXXXXXXX logged in >FEAT 211-Features: MDTM MFMT TVFS AUTH TLS MFF modify;UNIX.group;UNIX.mode; MLST modify*;perm*;size*;type*;unique*;UNIX.group*;UNIX.mode*;UNIX.owner*; PBSZ PROT REST STREAM SIZE 211 End >>CD D:\XXXX\XXXX\XXXX >CWD / 250 CWD command successful >XPWD 257 "/" is the current directory >TYPE A 200 Type set to A >PASV 227 Entering Passive Mode (xxx,xxx,xxx,xxx,175,48). ダウンロードのためにホスト xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx:44848) に接続しています. 接続しました. >MLSD 150 Opening ASCII mode data connection for MLSD 425 Unable to build data connection: Operation not permitted ファイル一覧の取得を中止しました. ファイル一覧の取得に失敗しました. |
ログを見た限りでは、正常に明示的なFTPSでログインしているし、パッシブモードも問題無い。
しかし、ログの「>MLSD」の部分でサーバーにMLSDコマンドを送信し、アスキーモードでコネクションが開かれた直後に425エラーが発生している。
「引数に指定したディレクトリのファイル一覧を、詳細なファイルの最終更新時間を付けて返す」というコマンドです。
※参考URL
【FTPコマンドの一覧】
URL: https://ja.wikipedia.org/wiki/FTPコマンドの一覧
原因特定
FTPは、「制御」と「データ転送」で別々のポートを利用します。その際に「制御接続時に利用したSSLセッションを再利用したデータ転送接続以外は拒否する」というセキュリティ設定を無効にするオプションです。利用するFTPクライアントソフトによってはこのオプションを追加しないとデータ転送時にエラーが出ることがあります。
※参考URL
【ProFTPD公式サイト(TLSOptions)】
URL: http://www.proftpd.org/docs/contrib/mod_tls.html#TLSOptions
対策
対策としては3つの方法があります。
- FFFTP以外のFTPクライアントソフトを利用する。※FileZilla(Ver 3.52.2)であれば何の問題もなく明示的なFTPS接続によるファイル一覧の取得が可能でした。
- FTPサーバー(ProFTPD)の設定ファイルを変更する。※「proftpd.conf」にて<IfModule mod_tls.c> ~</IfModule> の間に TLSOptions NoSessionReuseRequired を追加する。
- FFTPのホストの設定を変更する。[非推奨] ※ホストの設定の「暗号化」タブにて、「暗号化なしで接続を許可(A)」のみにチェックを入れる。
上記[1]がおススメですが、FileZillaを利用するだけなので特に記載することはありません。
上記[2]は、今回はFTPでの接続先が共有レンタルサーバのため、自分でFTPサーバー(ProFTPD)の設定ファイルは弄れないという理由で除外します。
というわけで、通信が暗号化されないという根本的な大問題があり非推奨ですが、上記[3]のFFFTPの対策方法だけ解説します。
FFFTPの「接続(F)」⇒「ホストの設定(H)」をクリックします。
ホスト一覧からホストを選択し「設定変更(M)」をクリック
ホストの設定から「暗号化」タブを開いて「暗号化なしで接続を許可(A)」のみにチェックを入れて「OK」をクリック
暗号化の設定を変更したのでもう一度接続してみましょう。
ファイル一覧が正常に取得できました。
■ログ(※一部伏字にしてあります。)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
---------------------------- 通信は暗号化されていません. 第三者にパスワードおよび内容を傍受される可能性があります. ホスト ●●●.●●●.jp (xxx.xxx.xxx.xxx:21) に接続しています. 接続しました. 220 ProFTPD 1.3.3e Server (ProFTPD Default Installation) [xxx.xxx.xxx.xxx] >USER XXXXXXXXXXXX 331 Password required for XXXXXXXXXXXX >PASS [xxxxxx] 230 User XXXXXXXXXXXX logged in >FEAT 211-Features: MDTM MFMT TVFS AUTH TLS MFF modify;UNIX.group;UNIX.mode; MLST modify*;perm*;size*;type*;unique*;UNIX.group*;UNIX.mode*;UNIX.owner*; PBSZ PROT REST STREAM SIZE 211 End >>CD D:\XXXX\XXXX\XXXX >CWD / 250 CWD command successful >XPWD 257 "/" is the current directory >TYPE A 200 Type set to A >PASV 227 Entering Passive Mode (xxx,xxx,xxx,xxx,102,240). ダウンロードのためにホスト xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx:26352) に接続しています. 接続しました. >MLSD 150 Opening ASCII mode data connection for MLSD 226 Transfer complete ファイル一覧の取得は正常終了しました. (1879 Bytes) |
まとめ
FFFTPを利用中に、425エラーが出てファイル一覧の取得に失敗した場合は、以下の3つ対策方法がある。
- FFFTP以外のFTPクライアントソフトを利用する。※FileZilla等
- FTPサーバー(ProFTPD)の設定ファイルを変更する。
- FFFTPのホストの設定を変更し、「暗号化なし」で接続する。※非推奨
セキュリティの視点から言えば、どう見ても[1]が一番手軽&安心で、次点は[2]ですが、「どうしてもFFFTPを使わなければならない」というやむを得ない事情がある場合には[3]のFFFTPのホストの設定を変更して接続しましょう。
以上で解決です。