「Windows ftp.exe の怪」の版間の差分
提供: tknotebook
(ページの作成:「Category:コンピュータCategory:ネットワークトラブル メインページ>コンピュータの部屋 ==現象== Windows付属の ftp.exe ...」) |
(→現象) |
||
8行: | 8行: | ||
#サーバ IIS | #サーバ IIS | ||
− | # | + | #Windows付属のクライアント FTP.exe |
#モード Passive | #モード Passive | ||
2015年2月18日 (水) 14:52時点における版
現象
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 を使うことは諦めるしかありません。