天天看點

華為雲彈性雲伺服器ECS搭建FTP服務實踐

摘要:在使用華為彈性雲伺服器ECS搭建FTP服務的時候,經常會遇到搭建完成後無法通路的問題。本篇通過示範windows IIS搭建FTP方法,講解ftp主動模式、被動模式原理來說明無法通路的原因及解決方案。

我們在使用華為彈性雲伺服器ECS搭建FTP服務的時候,經常會遇到搭建完成後無法通路的問題。本篇案例通過講解ftp主動模式、被動模式原理來說明無法通路的原因及解決方案。

華為雲上的彈性公網IP位址EIP和彈性雲伺服器ECS的私網IP位址是動态綁定的,通過NAT的方式進行映射。FTP協定應用層中攜帶了IP位址或端口等資訊,是以一般需要ALG的幫助才能正常穿越NAT。我們在華為雲主機上搭建ftp伺服器後,一般預設無法從公網去通路,要了解這個原因,首先要了解下ftp的主動模式和被動模式的概念。

華為雲彈性雲伺服器ECS搭建FTP服務實踐

用戶端從一個任意的非特權端口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建立連接配接,進行資料通信。

華為雲彈性雲伺服器ECS搭建FTP服務實踐

當開啟一個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建立連接配接,進行資料通信。

華為雲彈性雲伺服器ECS搭建FTP服務實踐

server 版本:Windows Server 2012 R2 标準版 64位簡體中文

IIS版本: IIS 8

“控制台”—“管理工具”—“伺服器管理器”—“儀表盤”

華為雲彈性雲伺服器ECS搭建FTP服務實踐
華為雲彈性雲伺服器ECS搭建FTP服務實踐
華為雲彈性雲伺服器ECS搭建FTP服務實踐
華為雲彈性雲伺服器ECS搭建FTP服務實踐

用戶端IE浏覽器一般預設配置采用被動模式通路FTP伺服器,如果通過EIP去通路雲上ECS部署的FTP服務,會報如下錯誤:

華為雲彈性雲伺服器ECS搭建FTP服務實踐

了解了FTP被動模式的原理後,我們就很容易了解通路失敗的原因:

第一步控制通道通信過程中,服務端回複給用戶端的資料面IP是服務端網卡的私網IP(此處為172.16.0.170)而不是服務端的公網IP位址,導緻用戶端第二步資料通道建連失敗。

如下圖所示所示,在“工具->Internet選項->進階”将“使用被動FTP…“勾選去掉。前面說過,FTP主動模式下,FTP伺服器會

華為雲彈性雲伺服器ECS搭建FTP服務實踐

但有一點需要注意,如果用戶端本地網絡是通過NAT方式通路外網的,也可能會有問題,是以不建議采用該方案。

如下圖所示,在“防火牆的外部IP位址”中填寫主機的彈性公網IP即可,此時仍然采用FTP被動模式。建議使用該種方式,該種方法可以支援被動模式通路FTP,且對用戶端本地網絡無特殊要求。

華為雲彈性雲伺服器ECS搭建FTP服務實踐

注意:被動模式下,FTP伺服器的安全組入方向需要放通FTP資料通道的端口号(預設為1024~65535的端口号),否則,FTP伺服器也無法通路。如上圖所示,此處FTP伺服器資料通道端口設定為1025~10018,是以FTP伺服器網卡對應安全組主要添加如下入方向規則,如下圖所示。

華為雲彈性雲伺服器ECS搭建FTP服務實踐

以上,是在華為雲上如何使用華為雲彈性雲伺服器ECS搭建FTP的實踐。

繼續閱讀