FTP原理以及在VPC中使用FTP的注意事项

概述

本文主要介绍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

  1. Server监听21端口,Client用大于1024的端口访问Server21端口,进行用户登录认证并且发送FTP控制指令。客户端发送指令PORT,告诉Server使用主动模式。PORT指令中带有Client的IP和端口,如下所示。

    PORT A1,A2,A3,A4,a1,a2
  2. 使用Wireshark进行抓包,抓包示例如下图所示,PORT后面数字的前4位是IP地址,后两位表示端口。

    说明

    端口的计算方式是193*256+84。

  3. Server主动用20端口去连接客户端的数据端口(客户端发送的PORT指令中给出的数据端口),进行数据传输。

  4. 在使用主动模式时,要求客户端入方向允许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响应。

  1. Server监听21端口,Client用大于1024的端口访问Server21端口,进行登录验证,发送FTP控制指令。Client发送指令PASV,告诉Server使用被动模式。

  2. Server接受到PASV指令后,返回类似如下。

    227 Entering Passive Mode A1,A2,A3,A4,a1,a2
  3. 使用Wireshark进行抓包,抓包示例如下图所示,Entering Passive Mode后面数字的 前4位是IP地址,后两位表示端口,端口的计算方式和主动模式类似。

  4. Client用大于1024的随机端口,去访问Server指定的端口,进行数据传输。

  5. 使用被动模式时,要求服务端入方向允许随机端口访问或者单独指定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