該文件集合了好幾篇文章的精華,主要的鏈接爲:
http://blog.csdn.net/kenkywu/article/details/7166185
http://www.cnblogs.com/yongcode/p/4864474.html
http://www.linuxidc.com/Linux/2014-11/109464.htm
一、簡介
二、服務端設置
1.安裝vsftpd軟件
yum install vsftpd -y
2.開啓匿名訪問和被動模式端口
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES --開啓匿名用戶訪問
anon_upload_enable=YES --匿名用戶名可以上傳文件
anon_mkdir_write_enable=YES --匿名用戶可以創建文件
anon_other_write_enable=YES --匿名用戶可以重命名文件
pasv_enable=YES --開啓被動模式
pasv_min_port=30000 --被動模式最小端口
pasv_max_port=31000 --被動模式最大端口
3.加載ftp模塊
vim /etc/modprobe.d/vsftpd.conf
alias ip_conntrack ip_conntrack_ftp ip_nat_ftp --加載ftp模塊
vim /etc/rc.local
/sbin/modprobe ip_conntract --開機加載模塊
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp
4.端口過濾
vim /etc/sysconfig/iptables
-A INPUT -p tcp -m multiport --dport 20,21 -m state --state NEW -j ACCEPT --開啓20,21端口
-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT --開啓21主動端口
-A INPUT -p tcp --dport 30000:31000 -j ACCEPT --開啓被動端口
service vsftpd restart
三、客戶端配置
1.安裝ftp包
2. ftp XX.XX.XX.XX
四、常見問題
1.
今天從公網的服務器連接本地內網的FTP server copy文件時,系統老是提示227 Entering Passive Mode (xxx,xxx,,xxx,xxx,x),很是奇怪,於是上網找資料仔細研究了一下,原來FTP有兩種工作模式,PORT方式和PASV方式,中文意思爲主動式和被動式 ,詳細介紹如下:
主動 FTP :
命令連接:客戶端 >1024 端口 → 服務器 21 端口
數據連接:客戶端 >1024 端口 ← 服務器 20 端口
被動 FTP :
命令連接:客戶端 >1024 端口 → 服務器 21 端口
數據連接:客戶端 >1024 端口 ← 服務器 >1024 端口
PORT(主動)方式的連接過程是:客戶端向服務器的FTP端口(默認是21)發送連接請求,服務器接受連接,建立一條命令鏈路。當需要傳送數據時, 客戶端在命令鏈路上用PORT命令告訴服務器:“我打開了***X端口,你過來連接我”。於是服務器從20端口向客戶端的***X端口發送連接請求,建立 一條數據鏈路來傳送數據。
PASV(被動)方式的連接過程是:客戶端向服務器的FTP端口(默認是21)發送連接請求,服務器接受連接,建立一條命令鏈路。當需要傳送數據時, 服務器在命令鏈路上用PASV命令告訴客戶端:“我打開了***X端口,你過來連接我”。於是客戶端向服務器的***X端口發送連接請求,建立一條數據鏈 路來傳送數據。
由於我的本地FTP服務器在內網,只是從外網映射了兩個端口(20,21),所以無法使用PASV方式,解決此問題的辦法也很簡單,關閉客戶端的PASV方式,強制其用PORT方式訪問服務器,登錄FTP服務器後用passive命令關閉客戶端的PASV方式,如下:
ftp> passive
Passive mode off.
ftp> passive (再次運行命令可打開)
Passive mode on.
2.ftp下:get 123.cap
報:200 PORT command successful. Consider using PASV.
550 Failed to open file.
該問題爲123.cap的權限不夠,使用chmode a+r+w 123.cap 試試
3.報: 500 OOPS: cannot change directory
解決方法:
在終端輸入命令:
- setsebool -P ftpd_disable_trans 1
- service vsftpd restart