ftp服务器主动模式与被动模式

来源:互联网 发布:淘宝网的账号不能登录 编辑:程序博客网 时间:2024/04/28 01:17

     首先,介绍一下ftp关于主动模式与被动模式的原理:这一部分有什么作用? 如果你是在内网搭建一个ftp服务器进行测试,那么不必关注,那是很容易的,内网的机子之间一般没有防火墙所以无关于主动模式和被动模式,但是在生产环境中,ftp服务器与客户端之间一般不止一个防火墙,所以有必要弄清楚这个原理。

     FTP是File Transfer Protocol(文件传输协议)的缩写,用来在两台计算机之间互相传送文件。相比于HTTP,FTP协议要复杂得多。复杂的原因,是因为FTP协议要用到两个TCP连接,一个是命令链路,用来在FTP客户端与服务器之间传递命令;另一个是数据链路,用来上传或下载数据。

    FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式。

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

     PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用PASV命令告诉客户端:“我打开了XXXX端口,你过来连接我”。于是客户端向服务器的XXXX端口发送连接请求,建立一条数据链路来传送数据。 概括一下就是:主动模式:服务器向客户端敲门,然后客户端开门被动模式:客户端向服务器敲门,然后服务器开门所以,如果你是如果通过代理上网的话,就不能用主动模式,因为服务器敲的是上网代理服务器的门,而不是敲客户端的门而且有时候,客户端也不是轻易就开门的,因为有防火墙阻挡,除非客户端开放大于1024的高端端口

     说一下生产环境中ftp的搭建:基于上面的主动模式与被动模式的介绍,来说一下生产环境中ftp的搭建:首先生产环境中的ftp应该采用被动模式,因为被动模式是始终是客户端向服务端去请求连接,而主动模式需要服务器去去连接客户端的端口,连接客户端的端口,如果客户端是公网ip且没有防火墙的话就没问题,但是现在的问题是客户端一般都是经过nat地址转换的,服务器要连到客户端的时候连到的根本不是客户端,而是提供nat服务的那个设备,所以不能使用主动模式。 使用被动模式,如果使用被动模式的话,那么客户端在连接到服务端的21号端口后,需要传输数据时,服务器在命令链路上用PASV命令告诉客户端:“我打开了XXXX端口,你过来连接我”。于是客户端向服务器的XXXX端口发送连接请求,建立一条数据链路来传送数据。但是在生产环境中,不要忘记在服务器前面一般都要有防火墙设备的,而且默认策略都是disable,一般都是开启仅有的几个端口,其他端口就都关掉了,客户端连接服务器提供出来的那个端口时,会被防火墙就在中间拒绝掉了,为了避免这种情况,需要在ftp服务器配置文件里把被动模式时开放的端口做一下限制,这样就可以限制危险 比如 vsftp的设置编辑vsftpd的配置文件 /etc/vsftpd/vsftpd.conf 添加 pasv_max_port=3000 pasv_min_port=3020 # 此两行意思规定服务器在被动模式下开放端口时并不是在大于1024的端口中随机开放,而是开放这个范围内规定的端口针对防火墙的改动: 除了记得开放21端口外还要记得在防火墙上开放3000--3020 这些端口 如果是iptables: iptables -I INPUT -p tcp --dport 3000:3020 -j ACCEPT 如果是用防火墙设备,那么请在防火期设备上开启对提供ftp服务的主机的ip的3000-3020这些端口的访问,这样应该就没问题了

原创粉丝点击