開啟LINUX防火牆後,FTP PASV不能正常登入問題 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