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殺毒和安全衛士也關閉。.net

 

所以又懷疑是FileZilla Server設置問題,但網上查了不少資料,均不得要領。日誌

某次打開「Passive mode settings」發現,最下方有個網址能夠幫助檢查問題。server

 

 

 

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

結果以下:get

 

 

顯然是網絡配置有問題的,並且解決方案也很明確,就是第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」選項中,設置明確的外網地址。

相關文章
相關標籤/搜索