關於FTP服務器出現227 Entering Passive Mode錯誤的解決思路

網上大多數解決辦法說的非常不明白,下邊說一下我自己的解決思路。
懶得看廢話的小夥伴可以直接拉到最下邊看解決辦法。

首先搭建好ftp服務,具體過程就不多說了,我用的是xampp自帶的filezilla,可以一鍵啓動,十分方便。(服務器環境爲阿里雲,winserver2012)。 配置好後,服務器本地防火牆開放21端口,阿里雲控制檯也開放一下21端口。

隨後使用windows資源管理器,在地址欄輸入ftp://域名後,發現無法連接,錯誤提示爲227 Entering Passive Mode (172,17,19,48,39,25)。

原因:

這個問題是由於連接方式使用被動方式造成的,網上關於被動方式與主動方式的介紹太複雜,我簡單概括如下就是,被動方式需要服務端額外開放10個端口才能保證服務正常運行,至於爲啥需要額外的十個端口我也沒大看懂。

解決方法(filezilla):

在這裏插入圖片描述

  1. 打開filezilla控制檯–>edit–>setting,彈出如上窗口,給Use custom port
    range
    打上勾,然後填寫一個端口範圍,保證數量大於10.
  2. 服務端本地開放這些端口
  3. 阿里雲控制檯開放這些端口
  4. 重要!! 選中Retrieve external IP address from,鏈接使用默認鏈接

絕大多數有問題的小夥伴應該是第四步沒有設置。阿里雲服務器一般有兩個ip,一個是私有ip一個是彈性公網ip,如果使用默認的default,則filezilla會默認獲取私有ip,導致只有服務端本地能訪問ftp服務,外網無法訪問ftp服務。

補充一個小知識點

關於這條錯誤信息227 Entering Passive Mode (172,17,19,48,39,25),括號裏的前四個逗號的內容大家應該能猜出來,就是服務端的ip:172,17,19,48,那麼後兩位數是什麼意思呢?
根據RFC文檔定義(http://www.faqs.org/rfcs/rfc959.html),後兩位分別爲p1和p2, 且 p1*256 + p2就等於當前客戶端正在訪問的端口號(被動模式需要額外開放十個以上的接口,每次客戶端連接的時候,服務端會從這些端口裏邊隨機指定一個讓客戶端訪問)。 39✖256+25=10009,可以看出這個端口號是在我剛纔指定端口範圍內的一個端口。

本文參考:
https://www.cnblogs.com/qtong/p/5807149.html
https://stackoverflow.com/questions/9966993/how-to-get-port-in-ftp-protocol-from-passive-mode

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章