Q在 Linux 上配置 FTP 时,主动模式和被动模式有什么区别?我在 Linux 服务器上搭建 FTP 服务时,常听到“主动模式”和“被动模式”,它们在连接过程中的差异是什么?我应该根据什么场景来选择?
A主动模式与被动模式的核心区别
主动模式中,客户端发起控制连接后,服务器再主动回连客户端的数据端口;被动模式中,客户端会向服务器申请一个可用的数据端口,并由客户端主动连接该端口。由于被动模式对防火墙和 NAT 环境更友好,通常更适合公网访问或复杂网络环境。主动模式更依赖客户端侧放行入站连接,适合网络限制较少的场景。
QLinux FTP 服务设置成被动模式后,还需要开放哪些端口?我已经把 Linux 上的 FTP 服务改成被动模式了,但客户端还是连不上。除了 21 端口之外,还要额外放行哪些端口才能正常传输文件?
A被动模式需要开放控制端口和数据端口段
FTP 被动模式不仅需要开放控制端口 21,还需要在服务端配置一个被动端口范围,例如 30000-31000,并在防火墙和云安全组中放行这段端口。客户端访问时会先连到 21 端口,再从被动端口范围内建立数据连接。如果只开放 21 端口,登录可能成功,但文件列表和传输会失败。
Q使用 vsftpd 在 Linux 中启用被动模式时,配置项应该怎么写?我在 Linux 上用 vsftpd 部署 FTP,希望开启被动模式并指定固定端口范围。对应的配置文件里应该重点关注哪些参数?
Avsftpd 被动模式常用配置项
在 vsftpd 中,可在配置文件里设置 pasv_enable=YES 来启用被动模式,并通过 pasv_min_port 和 pasv_max_port 指定数据端口范围,例如 30000 到 31000。若服务器位于 NAT 后面,还应配置 pasv_address 为对外可访问的 IP 地址。修改配置后重启 vsftpd 服务,并确保防火墙同步放行相关端口。
QLinux 上 FTP 连接正常,但目录列表一直打不开,可能和模式设置有关吗?我能登录 Linux 的 FTP 服务,但进入目录时卡住或报错,这种情况会不会是主动模式和被动模式配置不一致导致的?应该怎么排查?
A目录列表失败常见于数据通道未正确建立
有可能与模式配置有关。FTP 登录使用控制通道,目录列表和文件传输依赖数据通道。如果服务器端和客户端对主动模式、被动模式的支持不一致,或防火墙没有放行对应端口,就会出现登录成功但无法列目录的情况。可以检查 FTP 服务端的模式设置、端口放行情况,以及客户端是否被固定为某一种传输模式。