该文件集合了好几篇文章的精华,主要的链接为:
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