端口 21 已打开,但我无法连接到 FTP 服务器

端口 21 已打开,但我无法连接到 FTP 服务器

我在 Windows 10 上运行了一个非常基本的 FTP 服务器。目前,我可以从我的 WLAN 访问此服务器,没有任何问题。但是,当我尝试从我的网络外部进行连接时(使用端口 21 上的公共 IP),我会收到来自 Chrome、Windows 资源管理器、Mozzila、Filezilla 等的错误消息。

我检查了好几次,发现 21 端口是开放的CanYouSeeme.org。此外,当我在FTP 测试在端口 21 上使用我的公共 IP 一切似乎都很好,我甚至得到了我当前在工作目录中拥有的文件的目录列表。

可能是什么问题?

附加信息:我在防火墙上添加了 FTP 规则,但现在私有网络和公共网络的防火墙都已关闭。

答案1

我怀疑您正在使用 Active FTP。Active FTP 要求客户端能够侦听传入端口。像 CanYouSeeMe 这样的服务可能配置为支持此功能,在需要时自动打开传入端口。但是,如果您的客户端位于 NAT 后面(与服务器的 NAT 不同),则客户端将无法使用 Active FTP,因为客户端需要侦听的端口不会从 NAT 路由器转发。

为了避免这个问题,你需要使用被动 FTP。被动 FTP 让客户端发起两个连接。这意味着客户端不需要处理传入防火墙规则或 NAT 端口转发。但是,这也意味着你需要在服务器端打开至少两个端口:FTP 命令端口 (21) 和一个或多个 FTP 数据端口(可以是 1024 以上的任何端口),然后告诉服务器使用这些端口传输数据。这些端口需要在防火墙中被允许(当你启用它时)并通过 NAT 转发(除非你的服务器在 NAT DMZ 中运行,在这种情况下所有意外流量都会转发给它,但你真的应该重新打开防火墙)。

此页面并不是对主动和被动 FTP 的最佳解释,但它确实讨论了为被动 FTP 配置 IIS,所以也许它会对您有所帮助:http://www.velikan.net/iis-passive-ftp/

答案2

如果您的客户端位于 NAT 网关(或防火墙)后面,则被动 FTP 会有所帮助。如果您的服务器位于 NAT 网关(或防火墙)后面,则主动 FTP 会有所帮助。您不能在同一操作中同时使用主动和被动。

如果两个 NAT 网关之一包含 FTP ALG(应用层网关)代码,允许主动和被动 FTP 工作,则可以实现此目的。很少找到带有 FTP ALG 代码的 NAT 网关,以允许通过被动 FTP 访问 NAT 后面的服务器,但找到带有 ALG 代码的 NAT 网关,以允许内部客户端通过主动 FTP 访问外部服务器的情况并不罕见。

大多数现代 FTP 客户端默认使用被动 FTP。如果我是你,我会告诉我的客户端尝试主动 FTP,希望我的客户端后面的 NAT 网关在其 NAT 网关代码中有一个客户端样式的 FTP ALG。

相关内容