「Windows ftp.exe の怪」の版間の差分
提供: tknotebook
(→現象) |
|||
1行: | 1行: | ||
[[Category:コンピュータ]][[Category:ネットワークトラブル]] | [[Category:コンピュータ]][[Category:ネットワークトラブル]] | ||
− | [[メインページ]]>[[コンピュータの部屋]] | + | [[メインページ]]>[[コンピュータの部屋#ネットワークトラブル]] |
==現象== | ==現象== |
2015年8月5日 (水) 05:22時点における最新版
現象
Windows付属の ftp.exe でファイル転送ができない。
トラブル発生条件は以下の通り。
- サーバ IIS
- Windows付属のクライアント FTP.exe
- モード Passive
手順
- クライアントをサーバに接続しログイン。
- quote PASV でサーバをPassiveモードにする。
- PUT や DIR を実行すると 425(データ転送用接続確率失敗) エラーになる。
サーバが IIS でなければ起きないし、クライアントを ftp.exe 以外にしても起きない。
原因
実は Windows の ftp.exe は Passive モードをサポートしていません。Protocol Analyzer で電文を追ってみると、 quote PASV で、サーバに PASV コマンドを送り、レスポンスを受けた後、サーバに PORT コマンドを送ってしまいます。 そもそも quote PASV の quote コマンドはサーバに任意の文字列を送るためのコマンドなので、ftp.exe は Passive モードなんて 知ったこっちゃありません。
IIS は PORT コマンドに従って、データ転送用接続を確立しますが、すぐに接続を切ってしまいます。これが結局エラー425を引き起こします。 おそらく IIS は自分がPassive なのに サーバ側からデータ接続を確立するように指示が来たことに、不審の念があるのでしょう。
CENT OS の vftpd では、PORT コマンドが通知された時点で速やかに接続をサーバより行い、その接続がデータ転送が終わるまで維持されるので、Active モードとして処理が進行し問題は起きません。ただし、当然 Passiveモードを前提に組んだファイアウォールなどが挟まっている場合はトラブルが起きるでしょう。
対処
Passive を使いたいなら ftp.exe を使うことは諦めるしかありません。