425 无法使用 Windows 11 FTP 命令建立数据连接 FileZilla

425 无法使用 Windows 11 FTP 命令建立数据连接 FileZilla

抱歉我不断询问建议。

我正在尝试使用 cmd 命令从我的 FileZilla 服务器下载文件ftp

这确实有效,当端口设置为 21 时,我可以访问服务器并下载文件。

但是当我将端口更改为 80 时,就无法再这样做了,它确实建立了连接,但除了发送命令后出现错误 425 之外什么也不做get

路由器和 FileZilla 中的端口 80 和 21 均已打开

没有防火墙

答案1

FTP 使用单独的“控制”和“数据”连接。端口 21 仅用于控制 - 每次数据传输(包括目录列表)都是一个新连接新的,临时端口对。这些端口必须在防火墙中打开,并且如果位于 NAT 后面,则必须进行适当的“端口转发”。

大多数家用路由器和防火墙都具有21 号港口特殊处理– 路由器监听用于打开 FTP 数据通道的控制命令(即PORT/EPRTPASV/EPSV命令),并且自动地为其中提到的数据传输端口创建临时防火墙规则。

这对于“主动模式”(ftp.exe 的默认模式)尤其重要,因为数据连接是向后的,即从 FTP 服务器到客户端,因此客户端处于 NAT 之下必须为它们制定端口转发规则。

此外,这些命令指示要连接的(客户端或服务器的)IP 地址,因此您的路由器也可能会尝试重写正在运行的命令,以便它们引用您的外部 IP 而不是内部 IP。

然而,当通过其他端口发送相同的命令时,重写不是完成 – 防火墙保持关闭状态,并且未设置任何端口转发规则。(路由器不会仅仅因为 FTP“看起来像 FTP”而识别它;有相当多的协议看起来很像FTP。


如果您的路由器有“ALG”(“应用层网关”)部分或“L7 协议”部分,则可能可以更改哪些端口被视为“FTP 端口”。

对于被动模式,可以在服务器端静态定义端口。通常,如果您在家中设置 FTP 服务器,则应将其配置为使用特定的“被动端口”范围(例如 50000-50999),并且手动在路由器上为整个范围创建端口转发规则。只要客户端使用被动模式,这将使 FTP 服务器在任何控制端口上工作。

然而,主动模式需要在客户类似地,许多 FTP 客户端都允许您选择要用于主动模式的端口;但我不认为 ftp.exe 有这样的选项。

总之,winscp.com如果你需要 Windows CLI,你可能应该使用不同的 FTP 客户端,例如 WinSCP(我建议使用 lftp,但它似乎缺少 Windows 版本),确保它设置为被动的模式,并配置 FTP 服务器以具有用于被动传输的静态端口范围。

(嗯,一般来说,现在你不应该设置 FTP 服务器;你应该使用 SFTP 或其他东西 - 或者至少设置一个简单的 VPN 来使用 FTP 服务器,不仅是为了安全,也是为了避免整个 PORT/PASV 问题。)

答案2

在某些路由器中,“虚拟服务器”是 转发端口

在端口转发中,涉及两个端口:

  • 您希望在路由器上向公众开放的端口
  • 您希望将外部连接转发到的计算机端口,由本地网络中的 IP 指示。

在您的情况下,第一个应该是 80,但内部的应该保持 21。

这可以将其隐藏在外部世界中,但保留其功能。否则,您还需要配置 Filezilla 以使用其他端口。

相关内容