搭建FTP后公网无法访问,绝大多数情况是防火墙未正确放行FTP端口(21)及被动模式数据端口,其次是路由器端口映射缺失、运营商封锁端口或云安全组规则遗漏。 按照“本地测试→防火墙→安全组→路由映射→FTP模式”的顺序排查,通常可在10分钟内定位问题。

先确认问题层级:防火墙还是网络?
盲目修改配置只会浪费大量时间,建议先通过以下两步快速判断故障范围:
- 服务器本机测试:在FTP服务器上执行
ftp 127.0.0.1,若本机能登录,说明FTP服务本身正常,问题在防火墙或网络链路。 - 公网telnet测试:从外网电脑执行
telnet 公网IP 21,若超时,说明端口被防火墙、安全组或运营商阻断;若连接后显示220欢迎信息,说明端口已通,问题出在FTP被动模式配置或账号权限。
需要特别留意的是,2026年大量云服务器默认启用安全组,安全组独立于操作系统防火墙,常被忽略,阿里云、腾讯云、华为云均要求同时在安全组入方向和系统防火墙放行FTP端口。
防火墙逐项排查:系统、安全组一个都不能少
Windows系统防火墙放行FTP
Windows自带的防火墙默认拦截入站FTP流量,仅开放21端口不够,还需放行被动模式的数据端口。
- 创建入站规则:打开“高级安全Windows Defender防火墙”,新建入站规则,选择“端口”。
- 放行21端口:协议选“TCP”,特定本地端口填
21,操作为“允许连接”。 - 放行被动数据端口:若FTP服务器设置为被动模式(如FileZilla Server),需同时添加一个端口范围,例如
50000-51000,很多管理员只放行21端口,导致登录成功但目录列表超时。
Linux防火墙与FTP内核模块
vsftpd是Linux最常用的FTP服务,但防火墙配置时普遍遗漏nf_conntrack_ftp模块。
- firewalld(CentOS/RHEL系):
firewall-cmd --permanent --add-port=21/tcp --add-port=50000-51000/tcp firewall-cmd --permanent --add-service=ftp firewall-cmd --reload - iptables(多数发行版):
modprobe nf_conntrack_ftp iptables -A INPUT -p tcp --dport 21 -j ACCEPT iptables -A INPUT -p tcp --dport 50000:51000 -j ACCEPT加载
nf_conntrack_ftp模块后,iptables才能识别FTP主动模式的数据连接(20端口),否则即使放行被动范围,主动模式仍会失败,建议/etc/sysconfig/iptables-config中设置模块随系统启动。
云安全组:2026年最易忽略的坑
云服务器供应商的安全组相当于“外部物理防火墙”,与系统防火墙独立,仅改系统防火墙无法解决公网访问问题。
- 登录云控制台,找到安全组规则。
- 入方向添加两条规则:TCP 21(FTP控制端口),TCP 50000-51000(被动数据端口)。
- 源地址建议设为
0.0.0/0(全天候IP),企业内网可限定IP范围以提升安全性。
若使用云安全组,不再需要在系统防火墙重复配置,但为保持兼容,建议关闭系统防火墙或同时放行,常见做法是:系统防火墙只保留SSH和FTP端口,安全组作为第一道防线。
理解FTP主动/被动模式,数据端口才是重中之重
FTP协议存在两种数据连接方式,直接影响防火墙配置:

- 主动模式(Active):客户端连服务器21端口后,服务器主动连接客户端的20端口,因客户端通常在内网NAT后,此模式在公网场景下基本不可用。
- 被动模式(Passive):客户端连服务器21端口后,服务器开放一个随机或指定的高端口等待客户端连接,公网环境必须使用被动模式。
配置被动模式时,务必固定端口范围(例如50000-51000),而不是让FTP软件随机分配,以vsftpd为例,在/etc/vsftpd.conf中设置:
pasv_enable=YES
pasv_min_port=50000
pasv_max_port=51000
FileZilla Server则在“被动模式设置”中固定端口。防火墙和安全组必须允许该范围,否则登录后卡在“读取目录列表”错误。
行业权威观点指出:明文FTP在2026年已不满足等保2.0的加密要求,国家网络安全等级保护相关标准明确规定,远程文件传输应采用加密协议,若企业涉及等保评测,建议直接采用FTPS(基于TLS)或SFTP(基于SSH),SFTP仅需放行22端口,配置更简单,安全性高一个量级。
公网环境实战:端口映射与运营商封锁
自建机房场景
公司自建FTP服务器通过企业路由器连接公网时,需在路由器做端口映射:
- 登录路由器管理页,找到“虚拟服务器”或“端口转发”。
- 外部端口设为
21和50000-51000,内部IP指向FTP服务器的内网地址。 - 确保FTP服务器固定IP(静态IP或DHCP保留)。
- 测试:从外网访问
公网IP:21,若不通,检查路由器防火墙和日志。
运营商封端口的应对
2026年,国内多数运营商的家用宽带封禁21、80等常用端口,目的是防范攻击,企业专线一般不封端口,但因收费较高(例:上海某运营商百兆企业专线月租约3000元),中小企业更倾向使用云服务器。
- 若仅有家用宽带,可改用非标准端口(如
22100),并在FTP客户端指定连接端口。 - 有公网IP但无端口映射权限的(如光猫拨号),需更换为桥接模式或联系运营商获取超级管理员权限。
没有公网IP怎么办
办公场所无公网IP时,可采用内网穿透方案,例如FRP(Fast Reverse Proxy)或花生壳,FRP部署简单,将FTP的21和被动端口映射到公网中转服务器,但该方案对被动模式支持不稳定,需谨慎配置,若追求高可用,直接在阿里云或腾讯云购买轻量应用服务器,安装FTP服务并放行安全组,成本约为每年200-500元不等(地域不同有差价),支持按量计费,价格透明。
照着这个顺序做,一次就能通
回到核心问题“搭建了FTP,通过公网无法访问”,只需记住四个关键字:防火墙、安全组、端口映射、FTP模式。
- 第一步,将FTP服务器设为被动模式,固定数据端口范围。
- 第二步,放行系统防火墙21端口和数据端口。
- 第三步,云服务器额外放行安全组;物理机则配置路由器端口映射。
- 第四步,测试主动模式是否因网段问题,直接改用被动模式。
若逐一排查后仍失败,可使用Wireshark抓包或查阅FTP日志,定位报错码(例如425无法建立数据连接)。

常见问题解答
Q1: FTP被动模式数据连接超时,如何快速解决?
检查被动端口范围(如50000-51000)是否被防火墙和安全组放行,同时确认FTP软件中配置的“公网IP”正确,且被动端口与防火墙规则完全一致,可用netstat -an查看服务器监听状态。
Q2: 云服务器上的FTP和物理机自建有什么区别?
云服务器多一道安全组规则,需要在控制台额外配置;物理机则需处理路由器和运营商封端口问题,云服务器无需担忧公网IP和带宽局域性,基础型1M带宽实例月费约60元起,适合小型团队,物理机适合已有固定公网IP且对传输速度要求极高的场景。
Q3: 直接禁用FTP改用SFTP,值不值?
值得,SFTP基于SSH协议,只需开放22端口,防火墙配置简化70%,且无需处理主动/被动模式问题,数据加密传输,满足等保2.0要求,迁移成本低,FileZilla等客户端均原生支持。FTP唯一优势是支持断点续传与权限管理,但SFTP已完整覆盖这些功能。
如果你正在操作但卡在某一环节,欢迎在评论区描述具体现象,我会回复定位建议。
参考文献
- 李中清. RFC 959文件传输协议规范. 互联网工程任务组, 1985.
- 国家市场监督管理总局. 网络安全等级保护基本要求(GB/T 22239-2019). 北京: 中国标准出版社, 2019.
- 阿里云官方文档. 安全组配置与FTP应用指南. 阿里云, 2026年更新版.
- 国家互联网应急中心. 2025年中国互联网网络安全报告. 北京: CNCERT, 2026.
到此,以上就是小编对于ftp服务器 防火墙_搭建了FTP,通过公网无法访问怎么办?的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位朋友在评论区讨论,给我留言。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/179285.html