Ubuntu
Azure VM 上的 vsftp - filezilla 報告伺服器以被動模式發送的私有 ip
我在 Azure 上的 Ubuntu 16.04 機器上設置了一個安全的 FTP 伺服器。它是基於 TLS 的 FTP,已禁用匿名訪問。
嘗試使用 Filezilla 使用伺服器工作正常 - 身份驗證、傳輸、目錄列表 - 一切……除了我從 Filezilla 收到以下警告:
伺服器發送了帶有不可路由地址的被動回复。改用伺服器地址。
當然,這是有道理的——VM 有一個私有 IP 地址,在被動模式下,它會將該私有 IP 地址發送給客戶端。解決方案 - 將以下內容添加到 vsftp.conf(這是一個範例,不是實際配置):
pasv_enable=YES port_enable=YES #The VM allows connections to ports 12345 & 12346 - remember, this is an example pasv_min_port=12345 pasv_max_port=12346 #The VM's domain name pasv_address=myftpservervm.cloudapp.net #Make vsftp resolve myftpservervm.cloudapp.net and send that IP address to clients pasv_addr_resolve=YES
然後我重新啟動 vsftp,然後……什麼也沒有發生。我仍然得到這些:
伺服器發送了帶有不可路由地址的被動回复。改用伺服器地址。
我什至嘗試設置
pasv_address
伺服器的確切(外部)IP 地址(有和沒有pasv_addr_resolve=YES
),結果是一樣的。我錯過了什麼嗎?
我在 Ubuntu 16.04 x64 上使用 vsftpd 3.0.3(來自 Ubuntu 儲存庫)和 Filezilla 3.24.0
編輯:
0.0.0.0
顯然 vsftp在進入被動模式時會發送一個 IP 地址。這個問題似乎是相關的。
我在我的實驗室測試,一開始我遇到了和你一樣的問題。我檢查了以下步驟:
1.
netstat -ant
我得到以下結果tcp6 0 0 172.17.1.4:21 167.220.255.56:10979 TIME_WAIT
根據我的經驗,ftp 應該
tcp
不在tcp6
Azure VM 上監聽2.我嘗試更改配置文件
/etc/vsftpd.conf
。listen=yes listen_ipv6=no
然後我重新啟動 ftp 服務並使用
netstat -ant
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN
- 使用 Filezilla 進行測試。
注意:您應該在 Azure NSG(入站規則)上打開埠 20、21、12345-12346