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

daqianmen發表於2021-09-11
摘要:在使用華為彈性雲伺服器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的實踐。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1727/viewspace-2796601/,如需轉載,請註明出處,否則將追究法律責任。

相關文章