Windows 7 上的 Windows 防火墙阻止了主动 FTP 客户端

Windows 7 上的 Windows 防火墙阻止了主动 FTP 客户端

我有一个作为服务运行的应用程序,其中包含一个 FTP 客户端。它需要连接到仅支持主动 FTP 的 FTP 服务器。当我尝试获取文件列表或下载文件时,Windows 防火墙会断开来自 FTP 服务器的传入连接。(我不认为我们在 Windows XP 或 Windows Vista 中遇到过这个问题。)

主动 FTP 是一种要求服务器在客户端指定的端口上打开与客户端的连接的协议。(http://slacksite.com/other/ftp.html

我知道我可以在 Windows 防火墙中打开一个大的端口范围并强制我的 FTP 客户端仅使用这些端口,但我猜测 Windows 防火墙本身会支持主动 FTP。

为了让 Windows 防火墙自动检测活动 FTP 并根据需要打开必要的端口,是否需要进行某些设置?我可以通过编程更改该设置吗?

谢谢。

答案1

事情是这样的:无论是在主动模式还是被动模式,服务器总是使用其端口 20 进行数据连接,并通过客户端在发出 FTP PORT 命令时指定的端口连接到客户端。

查看 Windows 7 防火墙后,似乎您可以创建一个自定义入站规则,允许从特定远程端口 (20) 连接到给定协议类型 (TCP) 的任何本地端口。您还可以指定此规则适用的本地和远程 IP 地址。

我必须承认,我从来没有摆弄过 Windows 防火墙,但在我看来它可能对你有用。

答案2

不要将端口添加到 Windows 防火墙例外列表中,而是添加您需要访问的应用程序。然后,Windows 防火墙将允许该应用程序绑定和使用它想要的任何端口。

答案3

Windows XP/Vista/7 都使用“应用层网关服务”作为 Active FTP 的连接助手。您需要确保此服务已启动,Active FTP 才能正常工作。

启动方法:

  1. 单击 Windows 开始按钮
  2. 在搜索栏中输入“services.msc”并按 Enter(将弹出 Windows 服务面板)
  3. 向下滚动,直到找到“应用层网关服务”
  4. 查看“状态”列,它应该显示“已开始”。
  5. 如果尚未启动,双击服务名称即可进入其选项面板。
  6. 将“启动类型”下拉菜单更改为“自动”
  7. 点击“开始”按钮
  8. 点击“应用”
  9. 点击“确定”

答案4

我遇到了 Intranet 上的 FTP 客户端问题,并且不想为该特定程序设置防火墙例外。我希望 Active FTP 能够与任何客户端程序“正常工作”。

我尝试启用“应用层网关服务”( sc start ALG),并确保已启用“statefulftp”( netsh advfirewall set global statefulftp enable)。我想在某些情况下这些是需要的,但它们对我来说没什么区别。

最后,我只是打开了连接从本地 IP 使用端口 20,并且 Active FTP 可与任何程序配合使用。

netsh advfirewall firewall add rule name="FTP (active)" action=allow protocol=TCP dir=in remoteport=20 remoteip=localsubnet

您也可以指定特定的 IP,而不是 remoteip=localsubnet。

相关内容