FTP服务器被动模式(PASV)是一种专门应对客户端防火墙和NAT场景的连接方式,核心逻辑是让服务器主动开放一个随机端口等待客户端连接,而非像主动模式那样由服务器反向连接客户端。如果你经常在公司内网、家用路由器后使用FTP,被动模式通常是唯一能稳定连通的选择。
FTP被动模式和主动模式有什么区别
要弄懂被动模式,最好的办法是拿它跟主动模式做个对比,FTP协议诞生于上世纪70年代,当时网络环境简单,主动模式的设计符合那个年代的安全模型,但不适合今天的网络拓扑。
主动模式的工作逻辑
主动模式(PORT Mode)的连接流程如下:
- 客户端从自己的随机高位端口(通常是1024以上)发起控制连接,连向服务器的21端口。
- 客户端通过控制连接告诉服务器:“你来连我的某个数据端口。”
- 服务器主动从自己的20端口发起数据连接,反向连回客户端指定的那个端口。
问题出在哪? 如果客户端在防火墙后面,防火墙会拦截所有外部发起的入站连接,服务器反向连接客户端的行为,会被客户端的防火墙当成可疑流量直接丢弃。
被动模式的工作逻辑
被动模式(PASV Mode)把逻辑完全倒过来:
- 客户端依然先连服务器的21端口建立控制连接。
- 客户端发送PASV命令,告诉服务器:“我这边防火墙严格,无法接收你的入站连接,请你主动开个端口,我来连你。”
- 服务器随机开放一个高位端口(比如1024-65535之间),通过控制连接把这个端口号告诉客户端。
- 客户端主动发起数据连接,连向服务器的这个随机端口。
整个过程中,所有连接都是由客户端发起的,服务器的防火墙只需要放行21端口和相关数据端口范围即可,这就是被动模式的核心优势。
FTP服务器被动模式的工作原理与端口分配
从技术细节看,被动模式的关键在于数据连接的建立方向和端口分配策略。
控制连接与数据连接
FTP协议始终使用两条连接:
- 控制连接:固定使用21端口,用于传输FTP命令和应答,整个会话期间保持开启。
- 数据连接:每次传输文件或列出目录时临时建立,传输完成后关闭。
主动模式和被动模式的区别,就在于数据连接的发起方向不同,被动模式下数据连接的发起方向与客户端到服务器的方向一致,所以能穿透绝大多数网络环境。

服务器端被动端口范围
服务器开启被动模式后,需要指定一个端口范围供数据连接使用,行业共识认为,不限制端口的被动模式配置存在明显安全隐患,因为这意味着服务器要在全部65535个端口上随机开放监听,常见做法是限制在一个范围内,
| 配置项 | 推荐值 | 说明 |
|---|---|---|
| 最小被动端口 | 1024 | 低于1024的端口通常需要系统权限 |
| 最大被动端口 | 65535 | 具体上限取决于服务器连接量 |
| 范围宽度 | 100-1000个端口 | 每个连接占用一个端口,范围太小会并发不足 |
业内专家指出,一个典型的FTP客户端每次传输最多使用一个数据端口,同时在线用户数和传输频率决定了你需要多大范围的端口池,如果一次文件传输报“无法建立数据连接”的错误,优先检查端口范围是否用完。
FTP服务器被动模式怎么设置
不同FTP服务器软件的配置方式不同,但核心逻辑一致:启用PASV模式、指定端口范围、配置公网IP。
以FileZilla Server为例
FileZilla Server是Windows平台使用最广泛的开源FTP服务器,设置被动模式路径如下:
- 打开FileZilla Server管理界面,找到 菜单栏 > 编辑 > 设置 > FTP被动模式设置。
- 勾选“使用自定义端口范围”,填入起始端口和结束端口(例如
50000-50100)。 - 填写外部IP地址,如果服务器在NAT后面,填路由器的公网IP;如果有固定公网IP,直接填服务器自身的IP。
- 保存配置,重启FTP服务使配置生效。
路由器层面还需要操作一步:在NAT里添加端口转发规则,把FTP服务器的21端口和50000-50100端口范围全部映射到内网服务器IP上。
以vsftpd(Linux)为例
Linux服务器上最主流的FTP软件是vsftpd,配置文件在/etc/vsftpd/vsftpd.conf,需要修改或确认以下参数:
pasv_enable=YES:启用被动模式。pasv_min_port=50000:指定被动模式最小端口。pasv_max_port=50100:指定被动模式最大端口。pasv_address=你的公网IP或域名:告诉客户端该连接哪个IP。
修改之后执行systemctl restart vsftpd重启服务,如果用云服务器,还需要在安全组

里额外放行TCP端口范围。
路径差异:Windows Server的IIS FTP
Windows Server自带的IIS FTP管理器里,配置位置在“FTP防火墙支持”选项卡中,同样需要设置数据通道端口范围,并填写外部IP地址,注意IIS的FTP组件默认可能未安装,需要先通过“添加角色和功能”安装。
内网FTP被动模式连接不上怎么办
这是实操中最常见的问题,你在公司内网能连FTP,回家就不行,或者外网用户连你家里的FTP服务器联不通,多半是被动模式的网络链路出了问题。
连接超时或卡死在“正在连接数据端口”
原因:客户端发送PASV命令后,服务器返回的IP地址是内网IP(如192.168.1.100),客户端无法访问这个私有地址。
解决方案:
- 在FTP服务器配置中将
pasv_address设置为公网IP。 - 如果公网IP是动态的,使用DDNS域名替代IP填写。
- 确保路由器端口转发完整,21端口和数据端口范围必须全部转发。
能列目录,但目录里没有任何文件
原因:控制连接正常,但数据连接失败,列出目录操作同样需要建立数据连接,如果数据通道不通,客户端会显示空目录或直接报错。
排查步骤:
- 确认服务器防火墙放行了数据端口范围。
- 用
telnet 服务器IP 数据端口测试端口连通性,连接成功说明防火墙放行了。 - 检查服务器被动端口范围是否设置过窄,内部同时有多个连接时,端口池容易耗尽。
客户端提示“服务器返回了FTP服务器无法访问的地址”
原因:PASV响应中的IP地址是服务器内网地址,转发链路没有做源NAT,也就是路由器的端口转发没有正确改写IP信息。
解决方案:部分路由器支持配置端口转发的“回环”或“NAT回环”功能,开启后内网用户就能通过公网IP访问FTP服务器,如果路由器不支持,内网用户只能通过内网IP访问。
FTP客户端被动模式相关使用建议
服务器配置完成后,客户端这边通常不需要额外设置,因为当前主流FTP客户端默认使用被动模式。
| 客户端软件 | 被动模式默认状态 | 手动设置路径 |
|---|---|---|
| FileZilla客户端 | 默认启用 | 站点管理器 > 传输设置 |
| FlashFXP | 默认启用 | 站点管理器 > 连接选项 |
| Windows资源管理器 | 自动协商 | 无手动设置项 |
| WinSCP | 默认启用 | 高级站点设置 > 连接 |
使用Windows资源管理器直接访问ftp://地址时,系统会先尝试被动模式,失败后自动切换主动模式,这种自动协商机制在部分网络环境下会拖慢响应速度,如果你用FTP工具连接速度极慢,可以手动指定为“仅被动模式”。
对于需要在内网穿透场景下使用FTP的用户,被动模式配置加上Frp内网穿透是常见组合方案,Frp的frpc.ini配置中需要把FTP的数据端口范围一并穿透,只穿透21端口会在传输文件时报错。
FTP服务器被动模式常见问题解答
FTP服务器被动模式算安全吗?
被动模式本身不涉及安全性高低的问题,它只是一个连接建立机制,安全性取决于你是否正确限制了被动端口范围、是否使用FTP over TLS加密传输,FTP协议本身是明文传输,包括用户名和密码,公网环境下强烈建议配置FTPS或SFTP,被动模式下,服务端开放了一段端口区间,相当于暴露面比仅开启21端口更大,因此务必用防火墙严格限制这个端口范围。
FTP工具连不上被动模式怎么办?
先区分是控制连接失败还是数据连接失败,控制连接失败说明21端口不通,检查服务器防火墙和安全组,数据连接失败体现在登录成功但无法获取目录列表,此时检查被动端口范围是否在防火墙中放行,以及服务器返回的IP是否能被客户端访问,使用FileZilla客户端时,打开“目录 > 显示详细日志”,查看PASV命令的响应内容,响应中括号里的地址就是数据连接的IP和端口,这是排查问题最直接的线索。
家庭宽带没有公网IP能用被动模式吗?
不能直接使用,被动模式要求客户端能够访问到服务器数据端口,如果没有公网IP,外网用户的连接请求无法到达服务器,可行的替代方案包括:使用内网穿透工具映射FTP端口、租用带公网IP的云服务器作为中转、或改用支持反向代理方式的WebDAV协议,近年来自建存储的用户越来越多倾向于使用SFTP,因为它只需要一个端口(默认22),对NAT和防火墙极为友好,省去了被动模式端口映射的繁琐配置。
被动模式的本质是顺应现代网络防火墙的通信规则,把主动发起的权力交给客户端,你的服务器配置核心就三件事:指定端口范围、正确填写服务器公网IP、在防火墙和路由器上放行相应端口,把这三点做对,别管客户端在外面还是内网,文件传输都能稳定跑起来。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/746905.html

