FTP連接時出現“227 Entering Passive Mode” 的解決方法


今天從公網的服務器連接本地內網的FTP server copy文件時,系統老是提示227 Entering Passive Mode (xxx,xxx,,xxx,xxx,x),很是奇怪,於是上網找資料仔細研究了一下,原來FTP有兩種工作模式,PORT模式和PASV模式.

    在主動模式下,FTP客戶端隨機開啟一個大於1024的本地端口(比如N號端口)向服務器的21號端口發起連接,然后開放N+1號端口進行監聽,並向服務器發出PORT N+1命令。
    服務器接收到命令后,會用其本地的FTP數據端口(通常是20)來連接客戶端的N+1號端口進行數據傳輸。


    在被動模式下,FTP庫戶端隨機開啟一個大於1024的本地端口(比如N號端口)向服務器的21號端口發起連接,同時會開啟N+1號端口,
    然后向服務器發送PASV命令通知服務器自己處於被動模式。服務器收到該命令后,會開放一個大於1024的端口(比如P號端口)進行監聽,
    然后用PORT P命令通知客戶端,而自己的數據端口是P。客戶端收到命令后,會通過N+1號端口連接服務器的P號端口,
    最后在客戶端N+1號端口和服務器的P號端口之間進行數據傳輸。


    用下面的圖例會更清晰說明兩者之間的區別:


    *主動模式


    命令連接:客戶端 大於1024 端口 → 服務器 21 端口
    數據連接:客戶端 大於1024 端口 ← 服務器 20 端口

    *被動模式

    命令連接:客戶端 大於1024 端口 → 服務器 21 端口
    數據連接:客戶端 大於1024 端口 →  服務器 大於1024 端口

    總的來說,主動模式是服務器主動連接客戶端的數據端口,被動模式是服務器被動地等待客戶端連接自己的數據端口。

    被動模式通常用在處於防火牆之后的FTP客戶端需要訪問外界FTP服務器的場景,因為在這種場景下,防火牆通常被配置為不允許外界訪問防火牆之后主機,而只允許防火牆之后的計算機發起的連接請求。因此在這種場景下不能使用主動模式,而被動模式可以良好的工作。

    由於我的本地FTP服務器在內網,只是從外網映射了兩個端口(20,21),即FTP服務器處於防火牆之后,所以應該使用主動模式。 

ftp> passive
Passive mode off.

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

Passive mode on. 


免責聲明!

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



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