需放行FTP命令端口21及被动端口39000–40000,并同步配置云安全组、宝塔防火墙、Pure-Ftpd配置文件、虚拟化层端口映射,且通过ForcePassiveIP指定公网IP。

如果您在宝塔面板中配置FTP后,客户端连接成功但提示“无法检索目录列表”,则大概率是由于FTP被动模式所需的数据端口未被放行。以下是解决此问题的步骤:
一、放行FTP命令端口与被动端口范围
FTP被动模式依赖两个端口段:21端口用于命令交互,39000–40000端口段用于数据传输。若仅开放21端口,客户端可登录但无法建立数据连接,从而导致目录列表无法加载。
1、登录云服务器厂商控制台,进入安全组管理页面。
2、为当前服务器实例对应的安全组添加两条入站规则:
3、第一条规则:协议类型TCP,端口范围21/21,源IP设为0.0.0.0/0(或按需限制)。
4、第二条规则:协议类型TCP,端口范围39000/40000,源IP设为0.0.0.0/0(或按需限制)。
5、保存规则后,返回宝塔面板首页,确认Pure-Ftpd服务状态为运行中。
二、检查并修正宝塔防火墙端口放行
宝塔面板内置防火墙独立于云厂商安全组,若未同步放行对应端口,仍将阻断连接。该防火墙对21端口及被动端口范围均需显式放行。
1、登录宝塔面板,在左侧菜单点击安全模块。
2、在防火墙列表中查找是否已存在21端口规则;如无,点击放行端口按钮。
3、输入端口:21,点击提交。
4、再次点击放行端口,输入端口范围:39000-40000,点击提交。
5、确认两项规则均已显示在防火墙列表中,且状态为启用。
三、验证并调整Pure-Ftpd被动端口范围配置
Pure-Ftpd默认使用39000–40000作为被动端口池,但若该范围被手动修改或与安全组不一致,将导致数据通道不可达。必须确保配置文件中的端口范围与安全组、宝塔防火墙完全匹配。
1、在宝塔面板左侧菜单进入软件管理 → 找到Pure-Ftpd → 点击设置 → 点击配置修改。
2、使用Ctrl+F搜索关键词:PassivePortRange(通常位于第180行附近)。
3、确认其值为:39000 40000;若被注释(行首含#)或数值不同,需取消注释并修正为该范围。
4、点击保存,随后在Pure-Ftpd设置页点击重启服务。
四、同步放行端口至虚拟化层(如使用轻量应用服务器或本地虚拟机)
部分轻量应用服务器或VMware/VirtualBox等虚拟环境存在额外网络层,需单独配置端口映射或主机防火墙规则,否则即使云安全组与宝塔防火墙均放行,数据包仍无法抵达Pure-Ftpd进程。
1、若使用腾讯云轻量应用服务器,进入实例详情页,点击防火墙标签。
2、点击添加规则,协议选择TCP,端口填写21,来源IP设为0.0.0.0/0。
3、再次添加规则,端口填写39000-40000,其余参数同上。
4、若使用本地VirtualBox,打开虚拟机设置 → 网络 → 网卡1 → 高级 → 端口转发 → 新增两条规则:主机端口21→子系统端口21;主机端口39000–40000→子系统端口39000–40000。
五、强制指定被动模式外网IP地址
Pure-Ftpd在NAT环境下可能返回内网IP(如192.168.x.x)给FTP客户端,导致客户端尝试连接不可路由地址而超时。需通过ForcePassiveIP强制返回公网IP,否则即使端口全开也无法建立数据连接。
1、在Pure-Ftpd配置修改页面,使用Ctrl+F搜索ForcePassiveIP(通常位于第188行附近)。
2、删除该行开头的#符号以取消注释。
3、将等号后原IP(如127.0.0.1或192.168.0.1)替换为您的服务器公网IP地址。
4、点击保存,返回Pure-Ftpd设置页,点击重启服务。










