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
[火星人 ] 開啟LINUX防火牆后,FTP PASV不能正常登錄問題已經有631次圍觀