FTP 连接:提示“无法打开”或“列表错误”的解决方案
现象描述:
在使用 FTP 工具(如 FileZilla、FlashFXP 等)连接云服务器、云虚拟主机或服务器系统时,出现以下异常情况:
可以成功登录,但在获取目录列表时卡住,最终提示“连接超时”“列表错误”或“无法打开数据连接”。
系统提示:“425 Unable to open data connection”。
问题原因:
FTP 协议存在两种工作模式:主动模式和被动模式。当前主流客户端默认使用被动模式。
在被动模式下,FTP 服务端会随机开启一个高端口(通常是 5000-60000 范围内的随机端口)用于数据传输。
如果服务器系统防火墙(如 iptables、firewalld 或 Windows 防火墙)未开放这些随机端口,或者 FTP 服务软件配置的被动端口范围与防火墙开放范围不一致,就会导致客户端在登录后无法进行数据传输,从而引发上述报错。
解决方案:
请按照以下步骤,将 FTP 软件的被动端口范围与防火墙开放端口范围调整为一致:
修改 FTP 服务端配置(指定端口范围)
为了便于管理,建议修改 FTP 服务配置,将被动模式使用的端口限制在一个较小的范围内(例如 50000 - 52000)。
Linux 系统(以 vsftpd 为例):
编辑 /etc/vsftpd/vsftpd.conf 文件,添加或修改以下参数:
bash
pasv_enable=YES
pasv_min_port=50000
pasv_max_port=52000
Windows 系统(以 FileZilla Server 为例):
在管理界面中,进入“被动模式设置”,勾选“使用自定义端口范围”,设置为 50000 - 52000。
修改完成后,请务必重启 FTP 服务以使配置生效。
配置系统防火墙(放行指定端口)
修改完 FTP 配置后,需要在系统防火墙中放行您刚刚设置的端口范围(本例为 50000 - 52000),同时确保 FTP 控制端口 21 也是放行状态。
Linux 系统(以 firewalld 为例):
bash
firewall-cmd --permanent --add-port=21/tcp
firewall-cmd --permanent --add-port=50000-52000/tcp
firewall-cmd --reload
Windows 系统:
打开“高级安全 Windows 防火墙”,新建入站规则,选择“端口”,输入 21, 50000-52000,允许连接。
验证连接
完成上述设置后,重新使用 FTP 客户端连接。如果客户端设置了“限制本地端口”或特定的被动模式设置,建议先恢复为默认值。此时应能正常获取目录列表并进行文件传输。
注意事项:
本文档适用于拥有服务器管理员权限(root/Administrator) 的场景。如果您使用的是虚拟主机产品,由于没有服务器管理权限,无法自行修改服务端防火墙及软件配置,请联系主机提供商处理。
端口范围可以根据实际安全需求进行调整,但必须保证 FTP 配置范围与防火墙开放范围完全一致。
已经是第一篇啦!