启用 Windows 防火墙后 FTP 传输非常慢

启用 Windows 防火墙后 FTP 传输非常慢

我们有一个计划任务,使用 Windows 命令行 FTP 程序在两个 Windows 服务器之间传输一个大文件(约 130 MB)。它非常慢(大约需要 30 分钟),有时在传输完成之前终止。服务器是 2003(发送)和 2008(接收)。

如果我使用 FileZilla 的 GUI 手动传输文件,则运行速度会快得多,只需几分钟即可完成。但我不能使用这种方法,因为我们希望它自动运行,而 FileZilla 无法编写脚本。

我还注意到,当我禁用 Windows 2003 防火墙时,命令行 FTP 突然变得更快,达到与 FileZilla 相同的速度。

因此,我似乎有一个解决方法,即在传输之前和之后禁用/启用防火墙。但在谷歌上广泛搜索后,我发现这似乎不是一个常见问题,而且我感觉某个地方的配置有误。

有人能解释一下为什么禁用防火墙会如此显著地提高速度吗?为什么 FileZilla 比命令行 FTP 更快(启用防火墙时)?

答案1

ICMP 是 Internet 主机的必备条件。有时管理员会阻止所有 ICMP,因为他们“听说它存在安全风险”。但 ICMP 不是可选的,TCP 依赖于它。(至少,“需要分裂”必須被允許。

答案2

  1. 您首先需要知道什么是阻塞。从 Sysinternals (Microsoft) 下载进程监视器。

  2. 在该程序中,仅选择“显示网络活动”(左上角栏上的按钮)

  3. 检查数据包并找到 FTP 数据包。

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

  4. 右键单击进程名称并选择包含以添加正在运行 ftp 的进程。

  5. 测试有防火墙和无防火墙的 ftp 传输。

  6. 比较两个数据。这应该是防火墙阻止的端口。您应该在两台电脑之间打开该端口。

答案3

问题是命令行 FTP 使用主动模式 FTP。

Filezilla 自动切换到被动模式 ftp,这对防火墙更加友好。

命令行 FTP 仅支持主动,因此您只能停留在那里。

使用支持从命令行进行被动模式的 ftp 备用实用程序(filezilla 的 cmd 行选项可能可以满足您的需要)。

相关内容