我有一台 Windows Server 2012 R2 作为 FTP 客户端,需要通过 FTP 从其他设备检索一些文件。如果我完全关闭防火墙,传输就会成功。如果防火墙开启,传输过程会顺利进行,但文件无法保存在 Windows 服务器上。
我已按照 Microsoft 的说明进行操作如何为被动模式 FTP 服务器配置 Windows 防火墙,但这仍然导致失败。
我删除了以前的防火墙规则并将其替换为这个:
New-NetFirewallRule -DisplayName "FTP Service In" -Direction Inbound -Protocol TCP –Enabled True –Action Allow -Profile Any -Service ftpsvc -LocalPort Any -EdgeTraversalPolicy Allow
我也尝试仅影响端口 20 和 21。结果都相同。
关于如何正确设置防火墙以允许 FTP 流量下载文件,有什么建议吗?
答案1
在 Windows Server(2012 和 2012R2)上,为了使用ftp get
该程序检索文件ftp.exe
,需要访问端口 20、21 和 1024-65535,因此必须创建新的防火墙规则。在这种情况下,Windows 服务器是 FTP 客户端,防火墙规则只能应用于 FTP 程序,而不适用于服务(ftpsvc
)。
New-NetFirewallRule -DisplayName "FTP In" -Direction Inbound -Protocol TCP –Enabled True –Action Allow -Profile Any -Program "%SystemRoot%\System32\ftp.exe" -Service Any -LocalPort 20,21,1024-65535 -EdgeTraversalPolicy Allow
Microsoft 提供的说明如何为被动模式 FTP 服务器配置 Windows 防火墙对你的情况没有用。它们适用于你正在运行 FTP 服务器,但你正在使用 FTP客户在您的 Windows Server 上。
答案2
如果 Windows Server 2012 在这种情况下充当主动模式的客户端,则它需要的只是端口 20 和 21 以及 1024-65535。
您所关注的 Microsoft 链接涉及其充当服务器的情况,因此可能不适用。
有关端口的更多信息,请参阅此文章:
配置客户端防火墙以确保 FTP 事务成功(检索日期 2017-01-11)。
答案3
如果您需要解决此类问题,建议您:
我遇到了类似的问题,强烈推荐这些关于 FTP 设置的精彩视频: https://www.youtube.com/watch?v=pSmlooPiHm4(以及之前的两个视频)。
有人还建议,如果可以的话,实际上重新启动整个 Windows 2012 R2 服务器。
最后,对我有帮助的是更换防火墙的外部IP地址使用本地服务器的IP。
如果您看不到图像:在 ISS 管理器中 > 转到您的站点 > 选择 FTP 站点 > FTP 防火墙支持 > 防火墙的外部 IP 地址 - 您很可能已使用防火墙 IP 自动填充。将其更改为本地服务器的 IP 并从服务器本身本地测试 FTP(例如使用 FileZilla 客户端)。如果它有效,那么您就知道是防火墙导致了问题。然后将 IP 改回来并查看防火墙。