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

我有一个应用程序作为服务运行,并包含一个FTP客户端。 需要连接到只支持Active FTP的FTP服务器。 当我尝试获取文件列表或下载文件时,Windows防火墙将丢弃来自FTP服务器的传入连接。 (我不相信我们在Windows XP或Windows Vista中有这个问题。)

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

我知道我可以在Windows防火墙中打开一个大的端口范围,并强制我的FTP客户端只使用这些端口,但是我会猜想Windows防火墙本来会支持Active FTP。

是否需要进行一些设置才能使Windows防火墙自动检测活动FTP并根据需要打开必要的端口? 我可以以编程方式更改该设置吗?

谢谢。

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

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

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

我不得不承认,我从来没有与Windows防火墙猴,但它看起来像它可能适合你。

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

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

最后,我只是从本地IP端口20开始连接,主动FTP工作,与任何程序。

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

而不是remoteip = localsubnet,你也可以指定一个particluar IP。

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

要开始它:

  1. 点击Windows开始button
  2. 在search栏中input“services.msc”,然后回车(Windows Services面板将popup)
  3. 向下滚动,直到find“应用层网关服务”
  4. 看“状态”栏,应该说“开始”。
  5. 如果未启动,请双击服务名称以进入其选项面板。
  6. 将“Statup Type”下拉为“Automatic”
  7. 点击“开始”button
  8. 点击“应用”
  9. 点击“确定”

你有没有尝试确保你的防火墙正在进行有状态的FTP过滤?

您可以通过使用pipe理员权限打开命令提示符并input以下命令来实现:

netsh advfirewall设置全局StatefulFtp启用

我会好奇的,如果这影响了你的问题。

我在入站规则的顶部更准确地解决了这个问题。 注意到有两个规则称为文件传输程序(一个用于TCP,另一个用于UDP),它阻止了 “c:\ windows \ system32 \ http://ftp.exe”程序。 禁用,一切工作就像一个魅力! 只是我2美分;-)

很多人不关心%SystemRoot%\ system32 \ inetsrv \ inetinfo.exe在Windows机器上创buildFTP服务器。

从您的子网或互联网访问连接之前,应用程序必须是白名单。

首先你允许这些端口:80,20,21用于HTTP和FTP。 然后添加“inetinfo.exe”的exception

我会推荐隧道。 例如,在远程服务器上运行WinSSHD服务器。 它有UPnP,并会自动打开你的端口22。 如果您来自客户端,它会附带一个名为Tunnelier的客户端程序。 这里的要点是,当你在端口22上有一个隧道时,那么主动或被动FTP将从这个点通过隧道向前工作。 实际上,如果在远程FTP服务器上运行WinSSHD(或SSHD),则它具有与FTP服务器执行相同操作的FTP子系统。 所以,如果远程FTP服务器是Linux,很可能他们已经有了SSHD服务,所以FTP服务器本身就是一个静音点。