FileZilla Server 端設置passive模式注意事項


1,需求和問題的產生

實踐中需要分布在各地的各個客戶端向雲端服務器上傳文件,因此在阿里雲服務器上安裝了FileZilla Server軟件作為文件FTP服務端。

 

客戶端程序采用FTP方式向服務端傳輸文件。由於客戶端為局域網地址,服務端無法主動訪問客戶端,因此需要設置服務端為被動模式。

 

 

 

但實踐發現,客戶端程序可以連接上服務端,但無法向服務端正常傳輸文件,服務端生成的文件大小為0。而服務端則出現“425 Can't open data connection for transfer”錯誤。

 

 

2,問題分析

首先懷疑是客戶端程序寫得有問題。於是,在客戶端電腦上安裝FlashFXP和WinSCP軟件,用這兩種軟件作為FTP客戶端連接FileZilla Server,測試結果表明文件傳輸正常。

 

因此懷疑客戶端程序有問題。但客戶端程序先后更換了INDY、ICS、CIS等多種FTP客戶端組件,其結果均不正常。

 

由於客戶端采用FlashFXP和WinSCP能正常傳輸文件,因此顯然與防火牆設置無關了,況且為簡化情況已將服務端和客戶端的防火牆全部禁用,360殺毒和安全衛士也關閉。

 

因此又懷疑是FileZilla Server設置問題,但網上查了很多資料,均不得要領。

某次打開“Passive mode settings”發現,最下方有個網址可以幫助檢查問題。

 

 

 

於是在客戶端電腦上點擊進去,訪問https://ftptest.net/

結果如下:

 

 

顯然是網絡配置有問題的,而且解決方案也很明確,就是第2條,必須讓“the server knows its external IP address”。這就很明確了,服務端應該配置明確的外網地址!

3,問題解決

於是在“Passive mode settings”選項中,設置明確的外網地址如下:

 

 

 

再次訪問https://ftptest.net/測試,hula!測試通過!

 

 

客戶端軟件上傳文件試試,也OK了!

 

 

至此,內網向阿里雲服務器FTP上傳文件的問題得到解決。

4,總結

至此還有一個疑惑未解,就是為什么服務端“Passive mode settings”選項中,未設置明確的外網地址時,FlashFXP和WinSCP軟件也能正常使用呢?

 

其實分析FlashFXP的日志不難發現,在FileZilla Server的被動模式下未設置明確的外網地址時,其得到的服務器地址確實是阿里雲服務器的內網地址(172,18,134,181),但軟件足夠聰明,下一步打開數據連接時將IP地址自動轉換為了外網地址(120.25.204.13),因此能連接成功。如下圖:

 

 

 

但普通的FTP客戶端軟件缺少這一轉換,直接使用服務器返回的內網地址去建立數據連接,顯然只能失敗。如下圖:

 

 

當FileZilla Server的被動模式下設置了明確的外網地址時,客戶端得到的是服務器的外網地址,因此數據連接能夠成功。如下圖:

 

 

 

總之,為了確保被動模式下FTP連接不出現“425 Can't open data connection for transfer”錯誤,應在服務端“Passive mode settings”選項中,設置明確的外網地址。


免責聲明!

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



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