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:\Users\hengz>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.

可以成功显示内容。

Azure上部署FTP服务的更多相关文章

  1. Azure上部署Barracuda WAF集群 --- 2

    前面一篇文章讲了如何在Azure上部署Barracuda.这篇文章聊一聊如何配置Barracuda. License 向Barracuda的销售人员申请WAF的License.得到License后打开 ...

  2. 在 CentOS7 上部署 zookeeper 服务

    在 CentOS7 上部署 zookeeper 服务 1 用 SecureCRT 或 XShell 等 Linux 客户端工具连接至 CentOS7 服务器: 2 进入到 /usr/local/too ...

  3. 在Win7的IIS上搭建FTP服务及用户授权

    FTP服务 FTP是文件传输协议(File Transfer Protocol)的简称,该协议属于应用层协议(端口号通常为21),用于Internet上的双向文件传输(即文件的上传和下载).在网络上有 ...

  4. 在Win7的IIS上搭建FTP服务及用户授权——转载!!

    原文地址:http://blog.sina.com.cn/s/blog_6cccb1630100q0qg.html FTP服务 FTP是文件传输协议(File Transfer Protocol)的简 ...

  5. 在 Windows Azure 上部署预配置 Oracle VM

    Microsoft 和 Oracle 近期宣布建立战略合作伙伴关系,基于此,我们将通过 Windows Azure 镜像库推出多种常用的 Oracle 软件配置.即日起,客户可以在 Windows S ...

  6. 在Azure上部署IPv6的App通过IOS App Store审核

    随着中国企业出海Go Global,越来越多的用户开始在Global Azure部署自己的应用.由于对Global Azure功能和文档的不熟悉,使用过程中或多或少遇到了一些坑.事实上呢,这些并不是坑 ...

  7. OpenStack-Ocata版+CentOS7.6 云平台环境搭建 — 5.在控制节点上部署计算服务Nova

    计算服务Nova使用OpenStack Compute来托管和管理云计算系统. OpenStack Compute是基础架构即服务(IaaS)系统的主要部分. 主要模块用Python实现.OpenSt ...

  8. 【转】在Win7的IIS上搭建FTP服务及用户授权

    [转]在Win7的IIS上搭建FTP服务及用户授权 [转]在Win7的IIS上搭建FTP服务及用户授权 FTP服务 FTP是文件传输协议(File Transfer Protocol)的简称,该协议属 ...

  9. 在IIS上搭建FTP服务

    FTP服务 FTP是文件传输协议(File Transfer Protocol)的简称,该协议属于应用层协议(端口号通常为21),用于Internet上的双向文件传输(即文件的上传和下载).在网络上有 ...

随机推荐

  1. iptables的用例

    iptables书写思路顺序 1.协议 icmp 2.哪个功能和目标:过滤,拒绝 3.数据包流向:外到内 4.哪个链适合:越早越好,INPUT 5.源地址和目标地址 练习1.禁止某些主机或网络访问本机 ...

  2. 【python】-- json & pickle、xml、requests、hashlib、shelve、shutil、configparser、subprocess

    json & pickle Python中用于序列化的两个模块 json     用于[字符串]和 [python基本数据类型] 间进行转换 pickle   用于[python特有的类型] ...

  3. 我的设计模式学习笔记------>Java设计模式总概况

    设计模式(Design Pattern)的概念最早起源于建筑设计大师Alexander的<建筑的永恒方法>一书,尽管Alexander的著作是针对建筑领域的,但是他的观点实际上用用于所有的 ...

  4. Android TextView文字过多时通过滚动条显示多余内容

    方法一: TextView文字过多,显示不全,怎么办?我们可以为Textview添加滚动条. <TextView android:id="@+id/bus_detail_content ...

  5. (3)mac下"-bash: mysql: command not found"解决方案

    针对 mysql: command not found 输入命令 $ ln -s /usr/local/mysql/bin/mysql /usr/bin 假如你人品不好,被打脸了,提示你权限不够: l ...

  6. TS视频一

    ts文件 ts文件为传输流文件,视频编码主要格式h264/mpeg4,音频为acc/MP3. ts文件分为三层:ts层Transport Stream.pes层 Packet Elemental St ...

  7. log4j中怎样将信息写入到不同的日志文件

    log4j中怎样将信息写入到不同的日志文件 有没有想过为什么我们用:Logger logger = Logger.getLogger(ABC.class) ;来得到 logger? 不想只看人家的 d ...

  8. 20145210姚思羽《网络对抗》——shellcode注入& Return-to-libc攻击深入

    20145210姚思羽<网络对抗>shellcode注入&Return-to-libc攻击深入 shellcode基础知识 Shellcode是一段代码,作为数据发送给受攻击服务器 ...

  9. 基于js的网页换肤(不需要刷新整个页面,只需替换css文件)

    1. [代码][JS]代码    <HTML><HEAD><link ID="skin" rel="stylesheet" typ ...

  10. 英语发音规则---ea字母组合发音规律

    英语发音规则---ea字母组合发音规律 一.总结 一句话总结:字母组合ea的发音规律,在学习字母组合在单词中的发音规律以前,一定要熟练撑握什么是开音节,什么是闭音节,否则你就不撑握这些发音规律. ea ...