您好,登錄后才能下訂單哦!
問題描述:
在阿里云使用WINDOWS IIS搭建了FTP服務器,使用被動模式,指定了被動端口并且已經放行FTP的命令和數據端口。在實際使用時發現使用專用的FTP客戶端(如WinSCP、lftp、瀏覽器等)一切正常,當使用FTP命令時可以登陸FTP服務器,但不能建立FTP數據連接,也就不能列出和傳輸數據文件。提示:ftp: connect: Resource temporarily unavailable。
分析:
通過抓包和返回的信息發現FTP服務器返回了數據端口號和服務器IP地址,但服務器IP地址是內網IP,而非實際使用的公網IP,此時FTP客戶端會向該內網IP發起數據會話建立請求,因為路由不可達所以超時后提示ftp: connect: Resource temporarily unavailable。
經過測試,是由于該FTP服務器運行在阿里云的VPC內,而VPC默認不進行公網IP和內網IP的NAT轉換。但是專用的FTP客戶端和瀏覽器則可以根據返回的數據包,提取出FTP數據端口號向源公網IP發起數據會話請求,由此可見,傳統的FTP命令還是不夠“聰明”。
解決方法:
IIS:
在FTP服務器上手工指定公網IP即可,此時FTP服務器在返回被動模式數據端口時將返回帶有指定公網IP的套接字信息。如下:
vsftpd:
對于Linux下的vsftpd,需添加:pasv_address=公網IP。
或者關閉PASV模式的安全檢查,即:pasv_promiscuous=YES,該檢查確保數據連接和控制連接是來自同一個IP地址。小心打開此選項。此選項唯一合理的用法是存在于由安全隧道方案構成的組織中。默認值為NO。
注意:當使用pasv_address指定公網IP時,必須將監聽的IP地址改為IPv4,即:listen=YES,否則vsftpd將返回錯誤的被動套接字,如:227 Entering Passive Mode (0,0,0,0,34,198). 。而啟用IPv4地址時則需要禁用IPv6地址的監聽,因為兩者互斥。
listen=YES #指定被動模式時的公網IP地址時只能監聽在IPv4地址 listen_ipv6=NO #與listen沖突,默認監聽IPv6地址,當監聽在IPv4時IPv6必須禁用,否則vsftpd.service將無法啟動 pasv_enable=YES pasv_min_port=8900 pasv_max_port=8909 pasv_address=47.95.120.253 #指定被動模式時的公網IP地址 #pasv_addr_resolve=YES #pasv_promiscuous=YES
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。