在公司日常办公中,用FTP传文件再常见不过。但有时候,明明账号密码都对,客户端也能连上服务器,就是传着传着卡住,或者根本列不出目录。这种情况,大概率是防火墙在“背后出手”了。
为什么FTP会被防火墙拦下?
很多人以为FTP只是开个端口传数据,其实它有两种模式:主动模式(Active)和被动模式(Passive)。主动模式下,客户端开一个端口等服务器来连,但企业防火墙通常会阻止外部主动连接内网设备,这就导致连接失败。而被动模式是客户端去连服务器的数据端口,更适应现代网络环境,但也需要防火墙放行相应的端口范围。
常见问题场景
小李在财务部,每天要从供应商的FTP服务器下载发票清单。某天突然连不上,提示“无法建立数据连接”。他检查了网络没问题,杀毒软件也没报警。后来发现,公司最近升级了防火墙策略,默认阻止了FTP的高编号端口段,而他的客户端恰好用了被动模式,数据通道被堵死了。
客户端怎么设置才不被拦?
以常见的FileZilla为例,在“站点管理器”里编辑连接时,进入“传输设置”选项卡,把“传输模式”改为“被动模式”。大多数现代FTP服务器都支持这种模式,能绕过内网客户端被反向连接的问题。
如果还是不稳定,可以进一步在防火墙设置里指定允许的端口范围。比如在路由器或Windows防火墙中,添加一条出站规则,允许FileZilla程序访问TCP端口20、21以及用于被动模式的高端口段,比如50000-51000。
服务器端也要配合
如果你自己搭了FTP服务器,比如用vsftpd,除了在客户端设好模式,还得在服务器配置里定义被动模式的端口区间。修改配置文件加入:
pasv_enable=YES
pasv_min_port=50000
pasv_max_port=51000
然后在系统防火墙(如iptables或firewalld)中开放这个范围的端口,否则客户端即使发起连接,也会因端口未响应而超时。
别忘了应用层防火墙
有些公司用了深信服、华为USG这类带有应用识别功能的防火墙,它们能直接识别FTP流量并做策略控制。这时候光开端口没用,得在防火墙策略里明确允许“FTP协议”通过,或者把相关IP加入白名单。
临时测试可以用浏览器试试ftp://地址,如果浏览器能打开但客户端不行,基本就能锁定是客户端或防火墙对程序行为做了限制。
移动办公也得注意
在家用笔记本连公司FTP,Wi-Fi路由器自带的防火墙有时也会干扰。建议关闭“SPI防火墙”或开启DMZ主机测试(仅调试用,别长期开)。公共网络比如咖啡馆Wi-Fi,多数会封掉非常用端口,这时候用SFTP(基于SSH)反而更靠谱,走的是标准的22端口,不容易被拦。