zoukankan      html  css  js  c++  java
  • Azure上部署FTP服务

    FTP是个比较复杂的协议,其协议分为控制层和数据层,工作模式分为主动和被动两种模式。

    在默认的Active模式下其工作原理如下:

    可以看到,客户端发起FTP的请求道服务器端,FTP的端口是21。用户在控制层面通过认证后,会通知服务器其开放的随机端口号。随后服务器端将主动发起源端口为TCP 20目标端口为TCP 随机端口号的连接请求,进行数据连接。

    在一般情况下,FTP的服务器和客户端都是在防火墙之后的,服务器端的防火墙要明确配置此服务器要对外提供哪些服务的端口,客户端的防火墙要求必须是客户端主动发起连接的TCP 连接才会通过。

    因为数据连接是服务器端首先发起,如果FTP客户端在防火墙之后,防火墙会中断此数据连接,导致FTP可以登录,但不能传输数据。

    被动模式的工作原理如下:

    为解决客户端在防火墙后,FTP不能正常工作的情况,可以选择FTP的被动模式。其在控制层面的过程和主动模式相似,但在用户认证通过,客户端进入PASV模式后,服务器端会根据事先的配置,随机选择特定范围的TCP端口作为数据传输的端口,并开放这个端口等待用户数据的传输,同时并把这个信息发送给客户端,客户端会通过这个端口发起数据传输的请求。当FTP服务器的数据返回给客户端时,客户端前面的防火墙发现此TCP连接是客户端发起的TCP连接,所以服务器的数据会顺利的穿过防火墙,实现数据传输。

    所以为能让所有的客户端能够访问FTP服务器,一般情况下,FTP服务器会同时支持主动模式和被动模式。

    在Azure环境下,VM的endpoint相当于FTP 服务器前端的防火墙,需要在endpoint上打开所有可能的控制层面和数据层面的端口。所以:TCP 21(控制层面端口)、TCP 20(主动模式数据端口)、多个TCP端口(被动模式的数据端口)都要在endpoint上打开。

    另外VM本身的防火墙也要做相应的设置,开放上述端口。

    下面将通过安装vsftp为案例,在Azure上部署FTP服务。

    共有三个部分:1. 安装vsftp, 2. 设置VM的endpoint ,3. 设置VM的防火墙,之后就可以测试了。

    1.安装vsftp

    yum install –y vsftpd

    更改vsftpd的配置文件:

    Vim /etc/vsftpd/vsftpd.conf

    添加以下内容:

    pasv_enable=YES

    pasv_min_port=1120

    pasv_max_port=1121

    这三行表示:开启被动模式,其数据传输随机端口为1120-1121。

    保存后启动vsftpd服务。

    2.配置VM的endpoint

    可以看到开放了FTP的控制层面端口:21,开放了FTP主动模式的数据端口:20,开放了FTP被动模式的数据端口(此端口是配置文件里配置的):1120、1121。

    3.配置VM的防火墙

    简化配置,关闭iptables:

    iptables –F

    service iptables save

    至此配置都结束了。测试:

    C:Usershengz>ftp hwcentos65.chinacloudapp.cn

    Connected to hwcentos65.chinacloudapp.cn.

    220 (vsFTPd 2.2.2)

    200 Always in UTF8 mode.

    User (hwcentos65.chinacloudapp.cn:(none)): anonymous

    331 Please specify the password.

    Password:

    230 Login successful.

    ftp> ls

    200 PORT command successful. Consider using PASV.

    150 Here comes the directory listing.

    pub

    226 Directory send OK.

    ftp: 8 bytes received in 0.01Seconds 0.67Kbytes/sec.

    可以成功显示内容。

  • 相关阅读:
    gridview自增序号
    web.config文件详解
    [Spring-AOP-XML] 看完了解Spirng中的AOP和XML进行事务管理
    [Spring] 快速介绍Spirng中AOP事务的传播属性和事务隔离级别
    [ log4j ]-日志文件的使用
    [AOP] 最简单的AOP概念理解
    [Spring] 一个例子了解Spring如何实例化Bean
    [Spring] 一篇文章了解Spring是什么
    JavaServlet的文件上传和下载
    解决:npm install ERR! Unexpected end of JSON input
  • 原文地址:https://www.cnblogs.com/hengwei/p/5257581.html
Copyright © 2011-2022 走看看