华为云弹性云服务器ECS搭建FTP服务实践
2023-02-18 16:31:58 时间
摘要:在使用华为弹性云服务器ECS搭建FTP服务的时候,经常会遇到搭建完成后无法访问的问题。本篇通过演示windows IIS搭建FTP方法,讲解ftp主动模式、被动模式原理来说明无法访问的原因及解决方案。
我们在使用华为弹性云服务器ECS搭建FTP服务的时候,经常会遇到搭建完成后无法访问的问题。本篇案例通过讲解ftp主动模式、被动模式原理来说明无法访问的原因及解决方案。
华为云上的弹性公网IP地址EIP和弹性云服务器ECS的私网IP地址是动态绑定的,通过NAT的方式进行映射。FTP协议应用层中携带了IP地址或端口等信息,因此一般需要ALG的帮助才能正常穿越NAT。我们在华为云主机上搭建ftp服务器后,一般默认无法从公网去访问,要理解这个原因,首先要了解下ftp的主动模式和被动模式的概念。
![](https://pic4.zhimg.com/v2-bd0024fedea91adb09c11b0d73ef497b_b.jpg)
一、FTP主动模式与被动模式
1、主动模式
客户端从一个任意的非特权端口N(N>1024,如下图的1026端口)连接到FTP服务器的21端口。然后客户端开始监听N+1(如下图的1027端口),并发送FTP命令“port N+1”到FTP服务器。接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1)。
用更通俗的语言来理解这个交互过程:
-
客户端用一个大于1024的端口N与FTP服务器的21端口建立一个控制通道,发送一条命令告诉FTP服务端(即通常说的PORT命令),我的数据通道的通信地址是IP1(本机网卡IP),数据通道的端口N+1,服务端收到请求后回复ACK确认。
-
服务端确认后,用源端口20主动与客户端IP1:N+1建立连接,进行数据通信。
![](https://pic3.zhimg.com/v2-d370347b42a94bb146b1322001237e62_b.jpg)
2、被动模式
当开启一个FTP连接时,客户端打开两个任意的非特权本地端口N>1024和N+1(分别如下图的1026端口和1027端口)。第一个端口连接服务器的21端口,客户端提交PASV命令给服务端,这样做的结果是服务器会开启一个任意的非特权端口(P>1024),并发送PORT P(如下图2024)命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。
用更通俗的语言来理解这个交互过程:
-
客户端使用源端口N与FTP服务端建立一个控制通道,发送一条命令告诉服务端(即通常说的PASV命令),我将使用被动模式与你通信。服务端收请求后,会告知客户端我的IP是IP2(默认为主机网卡IP)和监听端口P,你可以和我的这个IP和端口通信。
-
客户端收到1)中的信息后,使用源端口N+1,与服务端IP2:P建立连接,进行数据通信。
![](https://pic3.zhimg.com/v2-8f4c3977f2d998dc4084027f125a7b16_b.jpg)
二、windows IIS搭建FTP方法演示
server 版本:Windows Server 2012 R2 标准版 64位简体中文
IIS版本: IIS 8
1、安装FTP服务
“控制面板”—“管理工具”—“服务器管理器”—“仪表盘”
![](https://pic4.zhimg.com/v2-eff89851237b3188c9988fab70ab367f_b.jpg)
![](https://pic1.zhimg.com/v2-0eb787826b2601e8343b51c083825130_b.jpg)
2、ftp服务部署
![](https://pic1.zhimg.com/v2-ff95321995d4686aa043f9a4ed44a1b0_b.jpg)
![](https://pic2.zhimg.com/v2-eb2e4af8d9530758f6d09a270bd848d1_b.jpg)
客户端IE浏览器一般默认配置采用被动模式访问FTP服务器,如果通过EIP去访问云上ECS部署的FTP服务,会报如下错误:
![](https://pic4.zhimg.com/v2-5b144cf23c84098df00e19cdd179699f_b.jpg)
理解了FTP被动模式的原理后,我们就很容易理解访问失败的原因:
第一步控制通道通信过程中,服务端回复给客户端的数据面IP是服务端网卡的私网IP(此处为172.16.0.170)而不是服务端的公网IP地址,导致客户端第二步数据通道建连失败。
三、解决方案
1.客户端IE修改为主动模式
如下图所示所示,在“工具->Internet选项->高级”将“使用被动FTP…“勾选去掉。前面说过,FTP主动模式下,FTP服务器会
![](https://pic4.zhimg.com/v2-f2a513607760358d4ed221f16e172c07_b.jpg)
但有一点需要注意,如果客户端本地网络是通过NAT方式访问外网的,也可能会有问题,所以不建议采用该方案。
2、服务端配置“FTP防火墙支持”
如下图所示,在“防火墙的外部IP地址”中填写主机的弹性公网IP即可,此时仍然采用FTP被动模式。建议使用该种方式,该种方法可以支持被动模式访问FTP,且对客户端本地网络无特殊要求。
![](https://pic4.zhimg.com/v2-3cdbba4e7dbcec44992d0667be986a5b_b.jpg)
注意:被动模式下,FTP服务器的安全组入方向需要放通FTP数据通道的端口号(默认为1024~65535的端口号),否则,FTP服务器也无法访问。如上图所示,此处FTP服务器数据通道端口设置为1025~10018,所以FTP服务器网卡对应安全组主要添加如下入方向规则,如下图所示。
![](https://pic1.zhimg.com/v2-18622359aead7b38949ed0cb4f591764_b.jpg)
以上,是在华为云上如何使用华为云弹性云服务器ECS搭建FTP的实践。
相关文章
- 技术生态两手抓,打造面向未来的企业级领先数据库
- 开发者必看,面试官心中的最佳数据库人才模型是什么样?
- 从相识到相惜:Redis与计算存储分离四部曲
- 面对key数量多和区间查询低效问题:Hash索引趴窝,LSM树申请出场
- 大数据处理黑科技:揭秘PB级数仓GaussDB(DWS) 并行计算技术
- 1秒启动Web Server
- 中心化交易所如何用Merkle Tree实现资产储备证明
- 揭秘GaussDB(for Redis):全面对比Codis
- 梦幻联动!金蝶&华为云面向大企业发布数据库联合解决方案
- 面对锁等待难题,数仓如何实现问题的秒级定位和分析
- 技术生态两手抓,打造面向未来的企业级领先数据库
- 看我如何连夜自建网站背刺我的求职对手们
- GaussDB拿下的安全认证CC EAL4+究竟有多难?
- 华为云开发者官网首页焕新升级,赋能开发者云上成长
- 从元宇宙、地产数字化到呼叫中心,华为云携手伙伴共创新价值
- 云享·人物丨造梦、探梦、筑梦,三位开发者在华为云上的寻梦之旅
- 华为云区块链三大核心技术国际标准立项通过
- 云小课|帮您高效快速上传组件至私有依赖库
- 一文详解GaussDB(DWS) 的并发管控和内存管控
- MemArts :高效解决存算分离架构中数据访问的组件