阿里雲服務安裝FTP服務器報200 227 entering passive mode(被動模式)錯誤

ftp切換被動模式,走內網Ip

Linux的FTP服務器搭建
先描述下場景,用ftp搭建服務器,作爲公司內部的一個下載站使用 
看下下方報錯截圖linux上搭建的FTP服務器,用windows訪問出現報錯 
先分析200,227的的意思
200訪問成功(可能是沒有權限,所有還是報錯)
227進入被動模式(ip地址(內網IP)。id端口)
報錯原因
1.ftp分爲主動與被動模式倆種(passive command令進行切換)
2.如果是阿里雲服務器,切記配置安全組端口(ftp默認20/21);

原理:

虛擬主機在傳輸數據的過程中,採用被動模式,可能由於端口無法打開導致傳輸失敗,嘗試切換工作模式,可解決這個問題。
 

因爲FTP有兩種工作模式,主動式和被動式 :
 

· 主動方式的連接過程是:客戶端向服務器的FTP端口(默認是21)發送連接請求,服務器接受連接,建立一條命令鏈路。當需要傳送數據時, 客戶端在命令鏈路上用PORT命令告訴服務器:我打開了***X端口,你過來連接我。於是服務器從20端口向客戶端的***X端口發送連接請求,建立一條數據鏈路來傳送數據。  
 

· 被動方式的連接過程是:客戶端向服務器的FTP端口(默認是21)發送連接請求,服務器接受連接,建立一條命令鏈路。當需要傳送數據時, 服務器在命令鏈路上用PASV命令告訴客戶端:我打開了***X端口,你過來連接我。於是客戶端向服務器的***X端口發送連接請求,建立一條數據鏈路來傳送數據。

圖片所述:客戶端向服務器的8888 端口發送鏈接請求,服務器在命令鏈路上用PASV命令告訴客戶端:

我打開了6010端口 :計算端口 倒數第二個數字 23 * 256 + 最後一個數字122 = 6010 你過來連接我。於是客戶端向服務器的***X端口發送連接請求,建立一條數據鏈路來傳送數據。注意 前面的IP的內網ip 172.31.54.133,內網IP根本不可能外網連通的,所以這個問題的根本原因在於,被動模式ftp鏈接用的內網IP,這個只有在阿里雲上會遇到這種情況(據說騰訊雲等其他這個問題)。所有重點是需要在ftp的配置文件主動將 被動模式鏈接的服務器外網IP配置上去,問題即可解決。

 

如果不是默認端口,像本人 修改了etc/services文件的data-ftp 8887(替換原20) ftp 8888(替換原21)和文件vsftp.config(ftp的配置文件) listen_port=8888;由於切換被動模式需要開啓如下 :

,

關閉listen_ipv6(註釋掉或者NO); allow_writeable_chroot=YES ;pasv_enable=YES pasv_min_port=1024 pasv_max_port=65535

pam_service_name=vsftpd  userlist_enable=YES  ;listen_port=8888;pasv_address= 服務器的外網IP(這個是最重要的解決227問題)
linux防火牆規則,沒有添加ftp的規則(不想配置規則,防火牆關掉也可以,不建議這麼做);將 以上涉及的端口防火牆 開放

(8888,8887,1024,65535);

 

重啓ftp:systemctl restart vsftpd

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