web-dev-qa-db-ja.com

Windowsファイアウォールを有効にすると、FTP転送が非常に遅くなります

WindowsコマンドラインFTPプログラムを使用して、2つのWindowsサーバー間で大きなファイル(〜130 MB)を転送するスケジュールされたタスクがあります。非常に遅く(約30分かかります)、転送が完了する前に終了することがあります。サーバーは2003(送信)と2008(受信)です。

FileZillaのGUIを使用してファイルを手動で転送すると、実行速度が大幅に向上し、数分で完了します。ただし、これを自動的に実行する必要があり、FileZillaをスクリプト化できないため、このアプローチを使用することはできません。

また、Windows 2003ファイアウォールを無効にすると、コマンドラインFTPが突然はるかに高速になり、FileZillaと同じ速度に達することにも気づきました。

そのため、転送の前後にファイアウォールを無効/有効にする回避策があるようです。しかし、広範囲にグーグルした後、これは一般的な問題ではないようで、どこかで何かが間違って構成されているように感じます。

ファイアウォールを無効にすると速度が劇的に向上する理由を誰かが明らかにすることはできますか?そして、なぜFileZillaはコマンドラインFTPよりも速いのですか(ファイアウォールが有効になっている場合)?

1
Troy
  1. 最初に何がブロックしているのかを知る必要があります。 Sysinternals(Microsoft)からProcessMonitorをダウンロードします。
  2. そのプログラムでは、「ネットワークアクティビティの表示」(左上のバーのボタン)のみを選択します。
  3. パケットを確認し、FTPのものを見つけます。

    server1.domain.com:12345 -> server2.domain.com:21

  4. プロセスの名前を右クリックし、[含める]を選択して、ftpを実行しているプロセスを追加します。
  5. ファイアウォールがある場合とない場合のftp転送をテストします。
  6. 両方のデータを比較します。ファイアウォールによってブロックされたポートである必要があります。両方のPC間でそのポートを開く必要があります。
1
Edward

ICMPはインターネットホストの要件です。管理者は、「セキュリティ上のリスクがあると聞いた」ために、すべてのICMPをブロックすることがあります。ただし、ICMPはオプションではなく、TCPはICMPに依存しています。(少なくとも、 'フラグメンテーションが必要です' 許可する必要があります。)

1
David Schwartz

問題は、コマンドラインFTPがアクティブモードFTPを使用することです。

Filezillaは自動的にパッシブモードのftpに切り替わります。これは、ファイアウォールにはるかに適しています。

コマンドラインFTPはアクティブのみをサポートしているため、そこで立ち往生しています。

コマンドラインからパッシブモードをサポートするftpの代替ユーティリティを使用します(ニーズを満たす可能性のあるfilezillaのコマンドラインオプションがあります)。