摘要:在使用华为弹性云服务器ECS搭建FTP服务的时候,经常会遇到搭建完成后无法访问的问题。本篇通过演示windows IIS搭建FTP方法,讲解ftp主动模式、被动模式原理来说明无法访问的原因及解决方案。
 
我们在使用华为弹性云服务器ECS搭建FTP服务的时候,经常会遇到搭建完成后无法访问的问题。本篇案例通过讲解ftp主动模式、被动模式原理来说明无法访问的原因及解决方案。
 
华为云上的弹性公网IP地址EIP和弹性云服务器ECS的私网IP地址是动态绑定的,通过NAT的方式进行映射。FTP协议应用层中携带了IP地址或端口等信息,因此一般需要ALG的帮助才能正常穿越NAT。我们在华为云主机上搭建ftp服务器后,一般默认无法从公网去访问,要理解这个原因,首先要了解下ftp的主动模式和被动模式的概念。

一、FTP主动模式与被动模式

 

1、主动模式

客户端从一个任意的非特权端口N(N>1024,如下图的1026端口)连接到FTP服务器的21端口。然后客户端开始监听N+1(如下图的1027端口),并发送FTP命令“port N+1”到FTP服务器。接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1)。
用更通俗的语言来理解这个交互过程:
  1. 客户端用一个大于1024的端口N与FTP服务器的21端口建立一个控制通道,发送一条命令告诉FTP服务端(即通常说的PORT命令),我的数据通道的通信地址是IP1(本机网卡IP),数据通道的端口N+1,服务端收到请求后回复ACK确认。
  2. 服务端确认后,用源端口20主动与客户端IP1:N+1建立连接,进行数据通信。
 

2、被动模式

当开启一个FTP连接时,客户端打开两个任意的非特权本地端口N>1024和N+1(分别如下图的1026端口和1027端口)。第一个端口连接服务器的21端口,客户端提交PASV命令给服务端,这样做的结果是服务器会开启一个任意的非特权端口(P>1024),并发送PORT P(如下图2024)命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。
用更通俗的语言来理解这个交互过程:
  1. 客户端使用源端口N与FTP服务端建立一个控制通道,发送一条命令告诉服务端(即通常说的PASV命令),我将使用被动模式与你通信。服务端收请求后,会告知客户端我的IP是IP2(默认为主机网卡IP)和监听端口P,你可以和我的这个IP和端口通信。
  2. 客户端收到1)中的信息后,使用源端口N+1,与服务端IP2:P建立连接,进行数据通信。

二、windows IIS搭建FTP方法演示

server 版本:Windows Server 2012 R2 标准版 64位简体中文
IIS版本: IIS 8

1、安装FTP服务

“控制面板”—“管理工具”—“服务器管理器”—“仪表盘”
 

2、ftp服务部署

 
 
客户端IE浏览器一般默认配置采用被动模式访问FTP服务器,如果通过EIP去访问云上ECS部署的FTP服务,会报如下错误:
 
理解了FTP被动模式的原理后,我们就很容易理解访问失败的原因:
第一步控制通道通信过程中,服务端回复给客户端的数据面IP是服务端网卡的私网IP(此处为172.16.0.170)而不是服务端的公网IP地址,导致客户端第二步数据通道建连失败。

三、解决方案

1.客户端IE修改为主动模式

如下图所示所示,在“工具->Internet选项->高级”将“使用被动FTP…“勾选去掉。前面说过,FTP主动模式下,FTP服务器会
 
但有一点需要注意,如果客户端本地网络是通过NAT方式访问外网的,也可能会有问题,所以不建议采用该方案。
 

2、服务端配置“FTP防火墙支持”

如下图所示,在“防火墙的外部IP地址”中填写主机的弹性公网IP即可,此时仍然采用FTP被动模式。建议使用该种方式,该种方法可以支持被动模式访问FTP,且对客户端本地网络无特殊要求。
注意:被动模式下,FTP服务器的安全组入方向需要放通FTP数据通道的端口号(默认为1024~65535的端口号),否则,FTP服务器也无法访问。如上图所示,此处FTP服务器数据通道端口设置为1025~10018,所以FTP服务器网卡对应安全组主要添加如下入方向规则,如下图所示。
 
以上,是在华为云上如何使用华为云弹性云服务器ECS搭建FTP的实践。

华为云弹性云服务器ECS搭建FTP服务实践的更多相关文章

  1. 关于linux服务器上搭建ftp服务的流程

    小龙最近折腾了一个阿里云的服务器,买完了就要开始做那么多那么多的功课,小龙对ssh也是一知半解的状态,做个小笔记,发布下整个ftp服务的搭建过程,大神勿喷:) 一.aliyun Linux(Redha ...

  2. Linux(Centos7) 实例搭建 FTP 服务

    本文以 CentOS 7.2 64位系统为例,使用 vsftpd 作为 FTP 服务端,FileZilla 作为客户端.指导您如何在 Linux 云服务器上搭建 FTP 服务. 操作步骤 安装 vsf ...

  3. 【阿里云】在 Windows Server 2016 下使用 FileZilla Server 安装搭建 FTP 服务

     Windows Server 2016 下使用 FileZilla Server 安装搭建 FTP 服务 一.安装 Filezilla Server 下载最新版本的 Filezilla Server ...

  4. 小程序2(JSSDK,ECS搭建ftp服务器)

    JSSDK 开发步骤 绑定安全域名(域名绑定给任意一个公众号) 引入js 权限验证 wx.config({}) ready 所有的开发写在ready中 error 分享接口 onMenuShareTi ...

  5. Linux:服务器(CentOS)搭建FTP服务

    Vsftpd(very secure FTP deamon)是众多Linux发行版中默认的FTP服务器.本文以CentOS 8(腾讯云)服务器为例,使用vsftpd搭建Linux云服务器的FTP服务器 ...

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

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

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

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

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

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

  9. FTP相关、用vsftpd搭建ftp、xshell使用xftp传输文件、使用pure-ftpd搭建ftp服务

    1.FTP相关(file transfer protocol,文件传输协议)   2.用vsftpd搭建ftp安装:yum install vsftpd -y创建一个虚拟用户:useradd  vft ...

  10. 如何在Windows Server 2008 R2下搭建FTP服务

    在Windows Server 2008 R2下搭建FTP服务,供客户端读取和上传文件 百度经验:jingyan.baidu.com 工具/原料 Windows Server 2008 R2 百度经验 ...

随机推荐

  1. Rust WebAssembly 绑定输入类型(基于 Serde)

    前言 单位有个项目要共享前后端检查策略后端用的正好也是 Rust,但是 Rust 默认的 wasm-bindgen 包中提供的转换操作非常少,像 Vec<T> <=> Arra ...

  2. Python - 读取CSV文件发现有重复数据,如何清洗以及保存为CSV文件,这里有完整的过程!!!! 片尾有彩蛋

    语言:Python 功能: 1.清洗CSV文件中重复数据. 2.保存为CSV文件 大体流程: 1.首先观察CSV文件中的数据布局格式如何? 2.通过csv包读取数据.并根据规则使用continue,来 ...

  3. 【信创】 JED on 鲲鹏(ARM) 调优步骤与成果

    项目背景 基于国家对信创项目的大力推进,为了自主可控的技术发展,基础组件将逐步由国产组件替代,因此从数据库入手,将弹性库JED部署在 国产华为鲲鹏机器上(基于ARM架构)进行调优,与Intel (X8 ...

  4. 【BUU刷题日记】--第二周

    [BUU刷题日记]--第二周 一.[WUSTCTF2020]朴实无华 1 目录爆破 使用dirsearch扫描发现没有结果,因为如果dirsearch请求过快则会导致超出服务器最大请求,扫描不出本来可 ...

  5. Rust学习 | Rustlings通关记录与题解

    2023年6月19日决定对rust做一个重新的梳理,整理今年4月份做完的rustlings,根据自己的理解来写一份题解,记录在此. 周折很久,因为中途经历了推免的各种麻烦事,以及选择数据库作为未来研究 ...

  6. #866 div1A

    A. Constructive Problem 题意:给定一个长度为n的非负数组a,我们可以进行一次操作,操作是将l~r这个区间内的所有数变为k(k >= 0),得到b,能不能使mex(a)+ ...

  7. DP优化方法杂记

    一些奇妙trick 观察决策集合 此类问题与单调队列优化dp有部分相似,都是利用决策集合的特殊性质对dp进行优化. CF229D Towers 题意:给出一个序列,每次可以花费一体力合并相邻两个数,问 ...

  8. Qt 迭代器

    目录 (一) java风格迭代器 1. QListIterator类 1. 初始化 2. findNext() 3. findPrevious() 4. hasNext() 5. hasPreviou ...

  9. 昇腾迁移丨4个TensorFlow模型训练案例解读

    本文分享自华为云社区<TensorFlow模型训练常见案例>,作者: 昇腾CANN. 基于TensorFlow的Python API开发的训练脚本默认运行在CPU/GPU/TPU上,为了使 ...

  10. git 忽略已提交(commit)的文件/文件夹

    git 忽略已提交的文件或文件夹 最好是在工程一开始就编辑好 .gitignore 文件, 在第一次提交的时候仔细检查避免添加那些无用的文件 因为 .gitignore 只能对未提交过的文件起效, 也 ...