FTP原理以及在VPC中使用FTP的注意事项
概述
本文主要介绍FTP原理以及在VPC中使用FTP的注意事项。
详细信息
FTP介绍
FTP是文件传输协议(FILE TRANSFER PROTOCOL)简称FTP,是在TCP/IP网络和INTERNET上最早使用的协议之一。
FTP工作模式
FTP的工作模式分为2种。
- 主动模式(Active)
- 被动模式(Passive)
FTP使用的模型如下所示。
-------------
|/---------\|
|| User || --------
||Interface|<--->| User |
|\----^----/| --------
---------- | | |
|/------\| FTP Commands |/----V----\|
||Server|<---------------->| User ||
|| PI || FTP Replies || PI ||
|\--^---/| |\----^----/|
| | | | | |
-------- |/--V---\| Data |/----V----\| --------
| File |<--->|Server|<---------------->| User |<--->| File |
|System| || DTP || Connection || DTP || |System|
-------- |\------/| |\---------/| --------
---------- -------------
Server-FTP USER-FTP
注:
数据连接可以在任意方向发起。 数据连接不需要一直存在。
端口说明
- 21端口:FTP Server端监听的端口,也是FTP控制命令使用的端口。
- 20端口:在主动模式(Active)中,FTP Server端使用20端口进行数据传输。
主动模式(Active )
FTP的主动模式如下图所示,在第1步中,Client的命令端口与Server的命令端口建立连接,并发送命令“PORT 1027”。然后在第2步中,Server给Client的命令端口返回一个“ACK”。在第3步中,Server发起一个从20端口到1027端口的连接,最后Client在第4步中给Server端返回一个“ACK”。

- Server监听21端口,Client用大于1024的端口访问Server21端口,进行用户登录认证并且发送FTP控制指令。客户端发送指令PORT,告诉Server使用主动模式。PORT指令中带有Client的IP和端口,如下所示。
PORT A1,A2,A3,A4,a1,a2
- 使用Wireshark进行抓包,抓包示例如下图所示,PORT后面数字的前4位是IP地址,后两位表示端口。注:端口的计算方式是193*256+84。
- Server主动用20端口去连接客户端的数据端口(客户端发送的PORT指令中给出的数据端口),进行数据传输。
- 在使用主动模式时,要求客户端入方向允许20端口访问。服务端出方向允许20端口访问,规则如下所示。FTP21端口20端口服务端入方向放开出方向放开客户端出方向允许访问21端口入方向允许20端口进
被动模式(Passive)
FTP的被动模式如下图所示,在第1步中,Client的端口与Server的端口建立连接,并发送命令“PASV”。然后在第2步中,Server返回命令“Passive Mode A1,A2,A3,A4,a1,a2”,告诉Client用的哪个端口侦听数据连接。在第3步中,Client初始化一个从自己的数据端口到Server指定数据端口的数据连接。最后Server在第4步中给Client的数据端口返回一个“ACK”响应。

- Server监听21端口,Client用大于1024的端口访问Server21端口,进行登录验证,发送FTP控制指令。Client发送指令PASV,告诉Server使用被动模式。
- Server接受到PASV指令后,返回类似如下。
227 Entering Passive Mode A1,A2,A3,A4,a1,a2
- 使用Wireshark进行抓包,抓包示例如下图所示,“Entering Passive Mode”后面数字的前4位是IP地址,后两位表示端口,端口的计算方式和主动模式类似。
- Client用大于1024的随机端口,去访问Server指定的端口,进行数据传输。
- 使用被动模式时,要求服务端入方向允许随机端口访问或者单独指定PASV端口进行开放,VPC中要指定PASV使用的IP是服务器公网IP,规则如下所示。FTP21端口20端口PASV端口服务端入方向放开/入方向放开客户端出方向允许访问21端口/出方向放开
Vsftpd被动模式配置
Vsftpd被动模式的配置内容如下所示。
#使用被动模式
pasv_enable=YES
#指定被动端口设置
pasv_min_port=4000
pasv_max_port=4002
#指定被动模式使用的公网IP
pasv_address=x.x.x.x
适用于
- 专有网络VPC