開啟LINUX防火牆後,FTP PASV不能正常登入問題
阿新 • • 發佈:2019-02-07
linux伺服器開啟防火牆,常規設定在防火牆配置檔案中新增21埠, FTP伺服器通過port能夠訪問,pasv不能訪問。而客戶端一般是採用pasv方式連線。解決方法如下:
首先要了解概念;
FTP支援兩種模式,一種方式叫做Standard (也就是 PORT方式,主動方式),一種是 Passive (也就是PASV,被動方式)。 Standard模式 FTP的客戶端傳送 PORT 命令到FTP伺服器。Passive模式FTP的客戶端傳送 PASV命令到 FTP Server。
PORT 和 PASV的簡單區別如下:
Port模式FTP 客戶端首先和FTP伺服器的TCP 21埠建立連線,通過這個通道傳送命令,客戶端需要接收資料的時候在這個通道上傳送PORT命令。 PORT命令包含了客戶端用什麼埠接收資料。在傳送資料的時候,伺服器端通過自己的TCP 20埠連線至客戶端的指定埠傳送資料。 FTP server必須和客戶端建立一個新的連線用來傳送資料。
Passive模式在建立控制通道的時候和Standard模式類似,但建立連線後傳送的不是Port命令,而是Pasv命令。FTP伺服器收到 Pasv命令後,隨機開啟一個高階埠(埠號大於1024)並且通知客戶端在這個埠上傳送資料的請求,客戶端連線FTP伺服器此埠,然後FTP伺服器將通過這個埠進行資料的傳送,這個時候FTP server不再需要建立一個新的和客戶端之間的連線。
因為IE瀏覽器預設使用的是Passive(被動)模式,所以要連線Linux伺服器大於1024埠,而防火牆並沒有開發1024以上的埠,導致登入ftp伺服器被防火牆阻止。
vsftp:
修改vsftpd.conf配置檔案讓它支援Passive(被動)模式
#vim /etc/vsftpd/vsftpd.conf
在最後一行新增如下內容:
pasv_min_port=10050 (設定被動模式的埠範圍)
pasv_max_port=10060(設定被動模式的埠範圍)
pureftp:
vi pure-ftpd.conf
# 被動連線響應的埠範圍。- for firewalling.
# PassivePortRange 10050 10060
在防火牆配置檔案iptables中新增埠
#vim /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 10050:100060 -j ACCEPT
重啟服務使其生效
#service vsftpd rstart
#service iptables restart