服务器FTP链接不上,八成是防火墙没放行20/21端口或被动端口范围,按下面步骤设置就能解决。
FTP链接不上防火墙怎么设置,这是很多站长和运维都会撞上的问题,明明服务端程序跑得好好的,客户端就是连不上,或者连上了传不了文件,先说结论:FTP协议天生爱被防火墙拦,因为它在传输数据时会动态打开新端口,你只放行21端口根本不够,下面我把Windows、Linux和云服务器安全组三种场景的防火墙配置方法拆开讲清楚。
FTP链接不上,先搞懂防火墙拦了什么东西
要搞清楚ftp链接不上防火墙怎么设置,得先明白FTP的工作模式,FTP有两个通道:控制通道走21端口,数据通道在主动模式下走20端口,被动模式下则是随机端口。
你的服务器防火墙如果只放行了21端口,那控制通道没问题,能连上,但一列目录或者传文件就卡死,这就是数据通道被防火墙堵了。
主动模式与被动模式的端口差异
| 模式 | 控制端口 | 数据端口 | 防火墙配置难度 |
|---|---|---|---|
| 主动模式 | 21 | 20及高位端口 | 需要放行21、20,且有出站限制时复杂 |
| 被动模式 | 21 | 3000-4000等指定范围 | 放行21和指定被动范围即可 |
行业内对这个问题有个共识:被动模式是当下最主流的选择,因为客户端大多在NAT后面,主动模式会让客户端连不回来。
Windows服务器ftp链接不上防火墙端口怎么设置
Windows Server 系统的FTP服务多是用IIS自带的FTP组件或FileZilla Server,你如果装了FTP软件但没动防火墙,基本连不上,因为Windows防火墙默认入站全拦,FTP端口不在放行名单里。
打开Windows防火墙对应端口
按Win + R输入wf.msc,打开高级安全防火墙面板,左侧选“入站规则”,右侧点“新建规则”:
- 选“端口”,下一步
- 协议选TCP,特定本地端口填21
- 选“允许连接”
- 配置文件全勾上,域名和专用除外
- 命名“FTP-21”,完成
这一步放行控制端口,但你想传文件,还得处理数据通道。
设置FTP被动端口范围并放行
大多数Windows版FTP服务器软件都允许你指定被动端口范围,FileZilla Server在“被动设置”里可以填一个范围,比如3000-3100,然后在防火墙里新建入站规则,把这段端口一并放行。步骤跟上面一样,只是端口填3000-3100。
如果你懒得手动指定,可以给svchost.exe或者FTP进程加一条程序规则,允许它所有入站连接,但这种方式安全性差一些,不建议。
Windows防火墙关闭后能连但开了就连不上
这种症状基本可以锁定是防火墙拦截了FTP组件的动态端口,有些IIS FTP版本需要单独在防火墙里启用“FTP Server”规则,在Windows防火墙入站规则里找找有没有“FTP Server (FTP Over)”相关规则,默认是禁用状态,右键启用就行。
云服务器ftp连接不上防火墙安全组排查
租的云服务器,很多情况下你改完系统防火墙还是连不上,因为云厂商在你机器前面还架了一道安全组,据行业共识,大多数云服务器的连接故障,安全组和防火墙拦路比例大概是六四分。
登录云控制台操作安全组路径
简米云用户,去ECS控制台点“安全组”→“配置规则”→“入方向”,添加:
- 协议:TCP
- 端口范围:21/21,以及后面填你FTP软件设置的被动端口范围
- 授权对象:0.0.0.0/0(如果只给自己用就填你的IP)
酷番云路径是“轻量应用服务器”或“云服务器CVM”→“防火墙”→“添加规则”,操作逻辑一样。新规则名字写FTP,协议TCP,端口21和3000-3100。
安全组和系统防火墙双重拦路
你得先确认系统防火墙和安全组都放行了,FTP才能通,比如Ubuntu上装了vsftpd,安全组放行21后,系统ufw没开21照样连不上。
家用宽带和云服务器FTP配置差异
家用宽带连接云服务器,本地路由器NAT通常会自动做回流,问题不大,但如果你在公司内网连FTP,公司出口防火墙不仅可能拦TCP 21,还会拦被动端口段,这时候可以试试改用
SFTP(走22端口)或者FTPS,绕开FTP被动端口被拦的问题。
Linux服务器ftp链接不上防火墙规则怎么设置
Linux各发行版防火墙工具不同,CentOS和Rocky Linux用firewalld,Ubuntu Server用ufw,如果你用的宝塔面板或LNMP一键包,还要看面板自带的防火墙。
firewalld放行vsftpd服务
CentOS 7以上版本,firewalld是默认的防火墙服务,用命令添加FTP服务:
firewall-cmd --permanent --add-port=21/tcp firewall-cmd --permanent --add-port=3000-3100/tcp firewall-cmd --reload
注意,如果你配置了FTP被动端口范围,这里要跟着填你vsftpd.conf里的pasv_min_port和pasv_max_port。
ufw放行FTP端口
Ubuntu系统用ufw:
ufw allow 21/tcp ufw allow 3000:3100/tcp ufw reload
检查状态用ufw status numbered,可以确认规则是否生效。
vsftpd.conf中被动端口的配套设置
你在/etc/vsftpd/vsftpd.conf里写入:
pasv_enable=YES
pasv_min_port=3000
pasv_max_port=3100
然后重启vsftpd服务。防火墙规则和FTP服务端配置必须对齐,否则你防火墙放行了3000-3100,FTP软件却随机生成了其他端口,还是连不上。
Linux端口不通的排查命令
常用排查顺序建议按这个来:
telnet 服务器IP 21,测控制端口通不通ss -lntp | grep vsftpd,看服务是否监听21端口firewall-cmd --list-all,确认当前firewalld放行规则curl -v ftp://服务器IP,直接命令行测试FTP握手
FTP连接不上后的完整排查顺序
如果你按上面操作还是不行,别急着拆防火墙,按这个顺序过一遍:
- 本地先ping一下服务器IP,不通就先看云控制台云监控,可能是实例挂了或安全组拦了ICMP
- telnet服务器IP 21,通的话说明防火墙没问题,不通就是端口没开或服务没启
-
看FTP服务日志,Windows IIS FTP日志在
C:inetpublogsFTPSVC,Linux在/var/log/vsftpd.log - 确认被动模式开关,FileZilla客户端会显示“PASV命令”相关日志,能看到分配的端口号
- 换客户端测试,有时候是客户端主动/被动模式设置问题,比如FileZilla里“被动模式”选项
各类防火墙设置FAQ
FTP链接不上防火墙怎么设置?
如果你是Windows用IIS FTP,先开启系统防火墙的“FTP Server”预置规则,再放行21端口和被动端口范围,如果是云服务器,重点检查安全组而非系统防火墙,安全组放着器前面,先拦了一部分流量。
云服务器ftp连接不上防火墙安全组到底怎么调?
两条路一起走:入方向放行TCP 21和TCP被动端口范围,再检查系统防火墙是否也放行相同端口,云控制台里安全组规则在“入方向”添加端口,同时操作系统防火墙也要加同样规则,缺一不可。
防火墙开着,FTP端口也放了,为什么还是连不上?
多数情况是FTP软件本身的被动端口范围没有固定下来,或者你把范围写错了,还有少数情况是宽带运营商封了21端口,可以试下改FTP控制端口为2121,看是否通,通了就是运营商拦截。
高防服务器FTP防护策略
有高防盾或防火墙的服务器,需要额外添加IP白名单或网站防护策略,否则可能触发CC验证拦截FTP连接,这类环境里把FTP服务器IP和端口加入高防白名单。
FTP连不上防火墙设置的最终确认清单
经过排查后,最后确认这些要点:
- 防火墙入站规则里有TCP 21端口的放行记录
- FTP软件被动端口范围已固定,并且防火墙也放行
- 云服务器安全组有对应端口入站规则
- Windows系统防火墙“FTP Server”预置规则已启用
- 服务端进程正常监听21端口
行业普遍认同的是,FTP链接不上防火墙怎么设置的答案,核心就是放行控制端口加数据端口,控制端口固定好,数据端口指定范围并同步到防火墙规则里,端口对了,FTP自然就通。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/719267.html





