很抱歉不断寻求建议。
我正在尝试使用 cmd 命令从 FileZilla 服务器下载文件ftp
这确实有效,当端口设置为 21 时,我可以访问服务器并下载文件。
然而,当我将端口更改为 80 时,我不能再这样做了,它确实建立了连接,但在发送命令后除了错误 425 之外不执行任何操作get。
端口 80 和 21 在路由器和 FileZilla 中均打开
没有防火墙
FTP 使用单独的“控制”和“数据”连接。端口 21 仅用于控制 \xe2\x80\x93 每个数据传输(包括目录列表)都是新的临时端口对上的新连接。这些端口必须在防火墙中打开,并且如果位于 NAT 之后,则必须进行适当的“端口转发”。
\n大多数家庭路由器和防火墙对端口 21 \xe2\x80\x93 进行特殊处理,路由器监听用于打开 FTP 数据通道的控制命令(即PORT/EPRT和PASV/EPSV命令),并自动为数据创建临时防火墙规则其中提到的转运端口。
这对于“主动模式”(ftp.exe 的默认模式)尤其重要,因为数据连接是向后的,即从 FTP 服务器到客户端,因此当客户端处于 NAT 下时,必须有针对它们的端口转发规则。
\n此外,这些命令指示要连接的(客户端或服务器)IP 地址,因此您的路由器也可能会尝试重写运行中的命令,以便它们引用您的外部 IP 而不是内部 IP。
\n然而,当通过其他端口发送相同的命令时,重写不会完成 \xe2\x80\x93 防火墙保持关闭状态,并且不会设置端口转发规则。(路由器不能识别 FTP,只是因为它“看起来像 FTP”;有相当多的协议看起来很像FTP。)
\n如果您的路由器有“ALG”(“应用层网关”)部分或“L7 协议”部分,则可以更改将哪些端口处理为“FTP 端口”。
\n对于被动模式,可以在服务器端静态定义端口。一般来说,如果您在家中设置 FTP 服务器,则应将其配置为使用特定的“被动端口”范围(例如 50000-50999),并在路由器上为整个范围手动创建端口转发规则。这将使 FTP 服务器可以在任何控制端口上工作,只要客户端使用被动模式。
\n但是,主动模式需要在客户端完成此类配置和端口转发。同样,许多 FTP 客户端允许您选择用于主动模式的端口;但我认为 ftp.exe 也没有这样的选项。
\n总之,您可能应该使用不同的 FTP 客户端,例如,winscp.com如果您需要 Windows CLI,则使用 WinSCP(我也建议使用 lftp,但它似乎缺少 Windows 版本),确保将其设置为被动模式,然后配置FTP 服务器具有用于被动传输的静态端口范围。
(好吧,一般来说,您不应该在当今时代设置 FTP 服务器;您应该使用 SFTP 或其他 \xe2\x80\x93 或至少设置一个简单的 VPN 来使用 FTP 服务器,而不是只是为了安全,也是为了避免整个 PORT/PASV 问题。)
\n| 归档时间: |
|
| 查看次数: |
1007 次 |
| 最近记录: |