很多服务器上都搭建的有FTP服务,FTP服务有两种连接模式:主动模式和被动模式。关于这两种模式的介绍,请参考这篇文章:重温FTP的主动模式和被动模式
关于这两种模式的比较,原文有这样的描述:
主动模式和被动模式的不同简单概述为: 主动模式传送数据时是“服务器”连接到“客户端”的端口;被动模式传送数据是“客户端”连接到“服务器”的端口。
主动模式需要客户端必须开放端口给服务器,很多客户端都是在防火墙内,开放端口给FTP服务器访问比较困难。
被动模式只需要服务器端开放端口给客户端连接就行了。
在网上很多文章都提到,要用被动模式连接,服务器要开放随机端口,但很多时候,为了安全,服务器并不允许开放随机端口,那我们能否只开放有限的端口呢?
再来看看被动模式的原理图:
我们可以看到,服务器开放哪个端口是在第4和第5步产生的,所以这里只要使服务器开放固定(或有限)的端口就可以了。
我是用vsftpd搭建的服务器,在vsftpd的配置中开放被动连接的配置是这样的:
打开xxx/vsftpd/vsftpd.conf,在末尾添加:
pasv_enable=YES //开启PASV模式 pasv_min_port=40000 //最小端口号 pasv_max_port=40000 //最大端口号 pasv_promiscuous=YES
这里只要把最小端口号和最大端口号配置成一样的,就成了开放固定端口了(还要开放iptables)。