配置FTP服务器——passive mode

来源:互联网 发布:win10玩dnf卡顿优化 编辑:程序博客网 时间:2024/05/11 19:31

配置FTP服务器的一个问题

1. 环境

服务器:debian6.0 vsftpd,客户端:Ubuntu10.04,系统自带的ftp客户端

2. 问题

在客户端登录时,输入ls,提示“500 Illegal port command ftp: bind: Address already in use”报错

3. 解决方法

  1. 修改服务器配置 vim /etc/vsftpd.conf
    pasv_enable=YES    pasv_max_port=10010    pasv_min_port=10090
还需要给防火墙设置一个INPUT fileter,让它允许接收从pasv_min_port到pasv_max_port的包:
    sudo iptables -t filter -A INPUT -p tcp --dport 10090:10100 -j ACCEPT

2.客户端使用ftp的passive模式,ftp -p server_ip

4. 原因分析

a. ftp的基本原理
ftp是完全基于TCP的,使用两个端口,数据端口和控制端口,一般21是控制端口,20是数据端口。如果是被动模式,数据端口就不是20了。

b. ftp的主动模式
连接建立过程:client从端口N(N>1023)向server的21端口发起连接请求,并发送命令PORT N+1给server, 同时开始监听 N + 1 端口。server收到PORT命令后,从端口20向client端口N + 1 发起连接请求。
active ftp
step1: client发送PORT 1027;step2:server回复ACK;step3:server主动发起连接; step4: client回复ACK。
上述过程会在客户端这边出现问题,当server主动连接client的1027端口时,在client的防火墙看来,这是外界主动向自己发起连接,这通常会被拦截。
c. ftp的被动模式
为了解决server主动向client发起连接的问题,提出了被动模式。在被动模式中,控制连接和数据连接都是由ftp客户端发起的,因此客户端的防火墙就不会把数据连接拦截。
连接建立过程:
建立连接时,client从端口N连接server的端口21,把PASV命令发送给server,server收到PASV命令后,打开一个端口X,然后给client发送命令PORT X。然后client从端口N+1向sever的端口X发起连接请求。
passive ftp
在step1, client发PASV命令,在step2,server回复PORT 2024, step3, client主动发起连接, step4, server回复ACK。

5. 参考文献

Active FTP vs. Passive FTP, a Definitive Explanation

0 0
原创粉丝点击