vsftpd 被动模式

默认 flashfxp 连接 ftp 服务器使用的是被动模式,那么什么是 ftp 的主动模式和被动模式呢?这两种模式又有什么区别?以及如何开启 vsftpd 的被动模式?

主动模式和被动模式

主动模式(port)
客户端向服务器的 ftp 端口(默认是 21)发送连接请求,服务器接受连接,建立一条命令链路;
当需要传送数据时,客户端在命令链路上用 port 命令告诉服务器:”我打开了 xxxx 端口,你过来连接我”;
于是服务器从 20 端口向客户端的 xxxx 端口发送连接请求,建立一条数据链路来传送数据。

被动模式(pasv)
客户端向服务器的 ftp 端口(默认是 21)发送连接请求,服务器接受连接,建立一条命令链路;
当需要传送数据时,服务器在命令链路上用 pasv 命令告诉客户端:”我打开了 xxxx 端口,你过来连接我”;
于是客户端向服务器的 xxxx 端口发送连接请求,建立一条数据链路来传送数据。

优缺点
主动模式很容易受到防火墙的限制,因为大多数客户端都是在 NAT 环境中上网的,因此服务器无法向客户端的 xxx 端口发起连接;
被动模式则不会受到防火墙的限制,因为这就是一个普通的 NAT 操作,这是完全允许的,并且被动模式的安全性相对来说更高一些。

开启vsftpd被动模式

编辑/etc/vsftpd/vsftpd.conf配置文件:

pasv_enable=YES         # 启用 pasv 模式
pasv_min_port=12000     # pasv 端口起始号
pasv_max_port=12199     # pasv 端口结束号

重启 ftp 服务:service vsftpd restart
如果服务器开启了防火墙,请放行 12000-12199 端口