FTP服务器用PASV,核心原因是把数据连接的发起方向反过来:让客户端主动连服务器,绕开客户端在NAT、防火墙后面时服务器“够不着”的尴尬。 这不是偏爱,而是现实网络环境里更稳的妥协。
FTP服务器为什么用被动模式:NAT和防火墙下的现实选择
FTP和普通HTTP不一样,它把连接拆成两条:一条控制连接走21端口,负责发命令;另一条数据连接负责传目录列表和文件,问题就出在数据连接上,主动模式PORT下,服务器要从20端口主动连客户端的数据端口;可客户端往往藏在路由器、公司防火墙、云主机安全组后面,服务器根本连不进去,用户看到的现象很典型:能登录、能输密码,一到列目录就卡住。
客户端在私网里,主动模式容易“够不着”
家里宽带、办公网、4G/5G热点,客户端拿到的多数是私网地址,服务器拿着私网地址去连,公网路由不认,就算做了NAT,临时端口也未必有映射,结果就是控制连接正常,数据连接超时,PASV的做法像服务器递给你一张门牌号:我在这段端口范围里等你,你来敲门,客户端从自己的网络主动发起连接,NAT和防火墙通常更愿意放行出站流量。
PASV把连接方向反过来
在PASV协商里,客户端发PASV命令,服务器返回一个IP和端口,客户端再连过去,RFC 959里,PORT和PASV就是两种数据连接协商方式,现代FTP客户端在无法确定网络环境时,往往优先尝试PASV或EPSV,行业共识认为,被动模式对客户端侧NAT更友好,这也是它成为默认选项的原因。
| 维度 | 主动模式PORT | 被动模式PASV |
|---|---|---|
| 数据连接发起方 | 服务器从20端口主动连客户端 | 客户端连服务器指定端口 |
| 客户端防火墙 | 容易被拦 | 通常更友好 |
| 服务器防火墙 | 需允许出站 | 需开放一段入站端口 |
| NAT场景 | 经常失败 | 配合端口映射更稳 |
| 主要风险 | 服务器扫客户端 | 端口暴露面变大 |
FTP主动模式和被动模式区别:一条数据连接的方向决定了成败
把两种模式放在一起看,区别不在“谁更高级”,而在“谁发起数据连接”,主动模式适合客户端有公网地址、防火墙可控的老式环境;被动模式适合今天的私网客户端、云服务器和混合办公,选错模式,登录成功但传不了文件,是最常见的误判。
控制连接和数据连接分开看
- 控制连接:客户端连服务器21端口,传用户名、密码、命令。
- 主动模式数据连接:服务器从20端口连客户端指定端口。
- 被动模式数据连接:服务器开放一段端口,客户端连过去。
- 加密与否:FTPS是在FTP上加TLS,不改变PASV/PORT的方向逻辑。
什么场景优先PASV
- 客户端在家庭路由器、公司NAT后面。
- 服务器在云上,安全组只放行有限入站端口。
- 需要让外部合作伙伴上传下载,但对方网络不可控。
- 使用宝塔、IIS、vsftpd等常见服务端,客户端默认被动。
什么场景不必迷信PASV
如果客户端和服务器都在同一个可控内网,主动模式也能跑;如果服务器在NAT后面,PASV反而要额外配置公网地址和端口映射,企业在比较企业FTP服务器租用价格时,别只盯月费;PASV端口范围和公网带宽往往决定实际体验,尤其是大文件交换频繁的团队,价格低的方案如果被动端口只给一小段,并发一高就排队。
内网FTP服务器被动模式怎么设置:从端口范围到防火墙放行
PASV配置的核心就三件事:告诉服务器用哪段端口、告诉客户端公网地址、让防火墙和NAT放行这段端口,少一件,客户端就可能卡在“列目录”。
vsftpd配置示例
在/etc/vsftpd.conf里加或改:
pasv_enable=YES pasv_min_port=50000 pasv_max_port=50100 pasv_address=你的公网IP pasv_addr_resolve=NO
改完重启:
systemctl restart vsftpd
防火墙放行TCP 50000到50100,例如firewalld:
firewall-cmd --permanent --add-port=50000-50100/tcp firewall-cmd --reload
云服务器还要在安全组放行同一段TCP端口;如果服务器在路由器后面,要做TCP 50000-50100到内网服务器的端口映射,端口范围不要贪大,够并发即可,缩小暴露面。
Windows IIS和宝塔面板路径
IIS需要先装“FTP服务器”角色服务,再到IIS管理器里选中站点,打开“FTP防火墙支持”,填公网IP和被动端口范围,然后在Windows防火墙放行,宝塔面板一般在软件商店安装Pure-FTPd后,在FTP设置里填被动端口范围,再到安全页面放行对应TCP端口,操作路径不复杂,关键是面板放行、系统防火墙、云安全组三层要一致。
云服务器安全组和NAT端口映射
- 安全组入站:放行21控制端口和PASV端口范围。
- NAT映射:把公网TCP端口段映射到内网服务器同端口段。
- 公网地址:服务器返回给客户端的IP必须是客户端可达的公网IP。
- 验证:用客户端被动模式连接,执行列目录和小文件上传,观察是否超时。
北京FTP服务器被动模式配置:机房网络策略和公网IP要核对
在北京机房或云区域部署FTP,常见坑不是命令写错,而是公网IP和机房网络策略没对齐,有的机房给的是NAT后的地址,服务器网卡上看到的是内网IP;PASV返回这个内网IP,外部客户端当然连不上,这时要在服务端显式配置pasv_address为公网IP,并确认机房没有拦截大段高端口。
公网IP与pasv_address
先确认客户端实际能访问的公网IP,再填进服务端配置,不要直接用ip addr看到的地址,除非服务器确实绑定了公网IP,做端口映射时,映射前后的端口段保持一致,排查更简单。
端口范围规划与安全
据工信部发布的网络安全相关提示,暴露在公网的FTP服务长期是弱口令扫描的重点对象,PASV端口段不要无限放大,配合强密码、FTPS加密、登录失败限制使用,业内专家指出,FTP明文传输的身份和文件内容在公网环境里风险较高,能上FTPS或SFTP就优先上,PASV解决连通性,不解决明文安全问题。
把话收回来:PASV不是玄学,而是客户端普遍在NAT后面的现实选择;服务器端把公网地址、端口范围、防火墙映射三件事对齐,FTP列目录和传输才会稳,选主动还是被动,看数据连接谁发起、谁的网络更不可控,答案通常就清楚了。
FTP服务器为什么用PASV:三个常见问题快答
为什么能登录,一到列目录就卡住?
多数情况是数据连接没打通,客户端在NAT后,主动模式服务器连不进来;或者被动模式端口没放行、pasv_address填了内网IP,先看客户端是否处于PASV,再核对服务器防火墙、安全组和NAT映射。
被动模式端口开多少合适?
按并发连接数估算,给一段连续TCP端口即可,比如几十到一百个,范围越大,暴露面越大;范围太小,高并发时会排队,关键是安全组、系统防火墙、NAT映射三处保持一致。
PASV和FTPS冲突吗?
不冲突,PASV只决定数据连接由谁发起,FTPS是在FTP上叠加TLS加密,配置FTPS时仍然要处理被动端口放行和证书信任,PASV只改变数据连接发起方,不改变FTP明文传输的事实;需要加密时仍要上FTPS或改用SFTP。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/923928.html


评论列表(2条)
读了这篇文章,我深有感触。作者对端口的理解非常深刻,论述也很有逻辑性。内容既有理论深度,又有实践指导意义,确实是一篇值得细细品味的好文章。希望作者能继续创作更多优秀的作品!
@星星6845:这篇文章的内容非常有价值,我从中学习到了很多新的知识和观点。作者的写作风格简洁明了,却又不失深度,让人读起来很舒服。特别是端口部分,给了我很多新的思路。感谢分享这么好的内容!