常見的錯誤:FTP連接時出現“227 Entering Passive Mode”


FTP的主動模式(PORT Mode)及被動模式(Passive Mode)

FTP的特殊性:

大多數的TCP服務是使用單個的連接,一般是客戶向服務器的一個周知端口發起連接,然后使用這個連接進行通訊。但是,FTP協議卻有所不同,它使用雙向的多個連接,而且使用的端口很難預計。一般,FTP連接包括:

  • 1)一個控制連接(Control Connection)
    這個連接用於傳遞客戶端的命令和服務器端對命令的響應。它使用服務器的21端口,生存期是整個FTP回話時間。

  • 2)幾個數據連接(Data Connection)
    這些連接用於傳輸文件和其他數據,例如:目錄列表等。這種連接在需要數據傳輸時建立,而一旦數據傳輸完畢就關閉。每次使用的端口也不一定相同。而且,數據連接即可能是客戶端發起的,也可能是服務器端發起的。

     在FTP協議中,控制連接使用周知端口21。相反,數據傳輸連接的目的端口通常實現無法知道。FTP協議使用一個標准的端口21作為ftp-data端口,但是這個端口只用於連接的源地址是服務器端的情況在這個端口上根本就沒有監聽進程。FTP的數據連接和控制連接的方向一般是相反的,也就是說,是服務器向客戶端發起一個用於數據傳輸的連接。連接的端口是由服務器端和客戶端協商確定的。FTP協議的這個特征對ISA轉發以及防火牆和NAT的配置增加了很多困難。
      除此之外,還有另外一種FTP模式,叫做被動模式(passive mod)。在這種模式下,數據連接是由客戶程序發起的,和剛才討論過的模式(我們可以叫做主動模式)相反。是否采取被動模式取決於客戶程序,在ftp命令行中使用passive命令就可以關閉/打開被動模式。

      主動 FTP :
        命令連接:客戶端 >1024 端口 → 服務器 21 端口
        數據連接:客戶端 >1024 端口 ← 服務器 20 端口
      被動 FTP :
        命令連接:客戶端 >1024 端口 → 服務器 21 端口
        數據連接:客戶端 >1024 端口 ← 服務器 >1024 端口
        
      PORT(主動)方式的連接過程是:客戶端向服務器的FTP端口(默認是21)發送連接請求,服務器接受連接,建立一條命令鏈路。當需要傳送數據時,客戶端在命令鏈路上用PORT命令告訴服務器:“我打開了***X端口,你過來連接我”。於是服務器從20端口向客戶端的***X端口發送連接請求,建立一條數據鏈路來傳送數據。
      PASV(被動)方式的連接過程是:客戶端向服務器的FTP端口(默認是21)發送連接請求,服務器接受連接,建立一條命令鏈路。當需要傳送數據時,服務器在命令鏈路上用PASV命令告訴客戶端:“我打開了***X端口,你過來連接我”。於是客戶端向服務器的***X端口發送連接請求,建立一條數據鏈路來傳送數據。
      從上面可以看出,兩種方式的命令鏈路連接方法是一樣的,而數據鏈路的建立方法就完全不同。而FTP的復雜性就在於此。

解決此問題的辦法也很簡單,關閉客戶端的PASV方式,強制其用PORT方式訪問服務器. 登錄FTP服務器后用passive命令關閉客戶端的PASV方式,

如下:

ctrl+R-->cmd-->輸入ftp回車  

ftp> passive   

Passive mode off.   

ftp> passive (再次運行命令可打開)   

Passive mode on.

!!!鑒於使用雲主機作為控制FTP服務器的,由於雲主機本身對服務器端口就有限制,我們需要在雲主機上創建安全組規則,開放端口(21+數據通道端口號)

1、創建安全組規則,設置數據通道范圍如10000到10809端口和21端口

2、設置FTP的pasv端口范圍(數據通道)

如果不設置端口范圍,在防火牆開啟的情況下,連接FTP時可能出現列表錯誤的現象,下面介紹下如何設置FTP的pasv端口范圍。
一、首先打開IIS選擇服務器會進入全局設置,再雙擊FTP防火牆支持

 


二、設置指定的,數據通道端口范圍,建議10000到10809端口,如果有雲主機則必須和雲主機配置一致。

 

設置完畢后重新啟動 FTP 服務


免責聲明!

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



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