FTPS(FTP over SSL)接続で大量のファイルをアップロード・ダウンロードしていると、途中で接続が切れるという現象に長年悩まされていた。FTPだと問題ないんだけど、セキュリティ上FTPは使いたくない。
ずっと相手側のサーバがトラフィックに制限をかけてるんじゃないかと疑っていたが、Windowsのファイアウォールを切ってみたら問題が発生しなかったので、どうもWindowsのファイアウォール周りが原因らしい。
で、その線でググってみたら、あっさり回答が見つかった。
- FTP ファイアウォール設定の構成 (Microsoft TechNet)
ページ下の方、「セキュリティで保護された FTP over SSL (FTPS) トラフィックでの Windows ファイアウォールの使用」の部分
つまり、WindowsのファイアウォールはFTP通信を監視してるんだけど、そのFTPの中身をSSLで暗号化してしまうと中身の監視ができなくなって通信を切ってしまう、ということか。……セキュリティを高めた結果、かえって怪しまれることになるとは……。
ということで、このファイアウォールによるFTP通信の監視をやめさせればいいわけだ。
FFFTPを使ってる場合はメニューの「ツール」に「WindowsファイアウォールのステートフルFTPフィルタの設定」があるので、ここから無効にすればOK。
他のアプリを使ってる場合は、コマンドプロンプトを管理者権限で起動した後、以下のコマンドを打ち込むと無効にできる。
netsh advfirewall set global StatefulFTP disable
有効に戻したい場合は以下を。
netsh advfirewall set global StatefulFTP enable
有効か無効か確認したい場合は次のコマンドを打ち込んで、StatefulFTP という項目の部分をチェック。
netsh advfirewall show global
さらにロリポップサーバの場合は、ホストの設定で以下の2つをしておくと良いようです。
- 「PASVモードを使う」をオン
- 「可能であればMLSDコマンドで一覧を取得」をオフ
コメント
お陰で積年の「ftp切られる問題」が解決しました。
この記事に心から感謝です。