Azure上部署FTP服務


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.

可以成功顯示內容。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM