概述
本文主要介绍FTP原理以及在VPC中使用FTP的注意事项。
详细信息
1. FTP介绍
FTP是文件传输协议(FILE TRANSFER PROTOCOL),简称FTP。是在TCP/IP网络和Internet上最早使用的协议之一。
2. 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
数据连接可以在任意方向发起。
数据连接不需要一直存在。
3. 端口说明
21端口:FTP Server端监听的端口,也是FTP控制命令使用的端口。
20端口:在主动模式(Active)中,FTP Server端使用20端口进行数据传输。
4. 主动模式(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端口访问,规则如下所示。
配置
端口说明
FTP
21端口
20端口
服务端
入方向放开
出方向放开
客户端
出方向允许访问21端口
入方向允许20端口进
5. 被动模式(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,规则如下所示。
配置
端口说明
FTP
21端口
20端口
PASV端口
服务端
入方向放开
/
入方向放开
客户端
出方向允许访问21端口
/
出方向放开
6. Vsftpd被动模式配置
Vsftpd被动模式的配置内容如下所示。
#使用被动模式
pasv_enable=YES
#指定被动端口设置
pasv_min_port=4000
pasv_max_port=4002
#指定被动模式使用的公网IP
pasv_address=x.x.x.x
适用于
专有网络VPC