vsftpd安装配置_vsftpd上传文件大小为0(主动模式)

最近在搞VSFTPD+Nginx结合,但是发现上传文件大小总是为0,#

由于最开始在搞的时候不知道主动模式和被动模式到底是什么鬼东西,所以遇到问题根本找不到根的原因,遇到问题只是乱搜,好像是解决了问题,但实际不然。#

就像我们最开始的时候,来说下最开始瞎搞的情况吧:

环境:Linux+VSFTPD+FTPClient
想要实现一个,文件上传到服务器的功能,根据百度的VSFTPD搭建,步骤如下
1.安装VSFTPD
2.VSFTPD把配置文件vsftpd.conf里面的anonymous_enable=YES 改为anonymous_enable=NO
3.重启服务 service vsftpd restart
然后呢,就是开始使用FTPClient开始上传文件,但是,问题来了,根本上传不了啊,上传总是失败,文件大小为0.....
接下来你们懂得,就是开始找百度乱搞一气,认为所谓的可行的办法就是把Linux防火墙关闭,然后在FtpClient上传的代码中添加如下代码
ftp.enterLocalPassiveMode();
意思是开启被动模式,别说,还真的可以了,但是这只是表象,你的配置文件你真的知道配置了什么??你到底干了什么?----- 还有,你把Linux防火墙开启你看看还Ok不??肯定凉凉的!(而且生产环境下防火墙基本上不可能会关闭的)

好了,我们要开始解决问题了,一步一步的跟我正确的配置(我们以主动模式为例)#

那么大概的说一下什么主动和被动,具体详情百度!!#

主动模式(PORT)(Server->Client)
客户端打开端口N(N为>1024的随机端口)连接服务器21端口建立命令通道;
客户端通过N+1端口与服务器20端口建立数据传输通道。 被动模式(PASV)(Client->Server)
客户端打开端口N(N为>1024的随机端口)连接服务器21端口建立命令通道(同上);
客户端通过N+1端口与服务器>1024随机端口建立数据传输通道,客户端使用PASV命令。

  问题解决步骤:

  1.开放你的21端口可以直接按照你默认的22端口编写,把22原封不动弄一行,然后把复制的22换成21即可(技巧:在22那行按esc,然后按yyp即可复制本行)

  开放完你的21端口后记得重启:service iptables restart

[root@rebirth vsftpd]# vim /etc/sysconfig/iptables

下面的是我的防火墙配置,不需要跟我的全部一样,只需要开启你的21端口即可
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 177 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 1777 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

  2.首先我们打开vsftpd.conf的配置文件(在你安装的路径) vim vsftpd.conf

  3.在你的vsftpd.conf里面开启主动模式的配置:(如果没有则自己加上去这段命令 一般会有:connect_from_port_20=YES )   connect_from_port_20=YES 主动模式    pasv_enable=NO 关闭被动模式

fcf56538d94fdf4e9ff9a615153f7d7a.png

  4..重启vsftpd服务 service vsftpd restart

这时候我们在重新执行我们上传,如果通过FtpClient的话,不要添加开启被动的那句代码:

ftp.enterLocalPassiveMode();

如果此时你的文件直接完整的上传成了那么直接恭喜你!你的问题得以解决!下面的内容你可以选择跳过咯!


如果此时你的文件大小还是为0的话,那么恭喜你,你跟我一样,我们继续搞!

原因是:我们本地的防火墙原因,防火墙的入站规则阻碍了我们

解决方案:

  1.最简单,最直接的就是直接把本地的防火墙全部关闭

add51d99b755b32bc74a64cd103e76f1.png

f303fe124ef3c5bf5fdcb10a7521d292.png

0eee7407d57c7fa6f7f4ce935341c695.png

再来试试吧!ok完美解决!

2.如果你不想全部关闭防火墙(我也一样)那么就要稍微配置一些高级的防火墙规则了!跟我来

d0ee33067bbae07a0595b59d4b8da776.png

接下来右键入站规则,点击新建入站规则(由于截图快捷键一按按钮就消失,导图不全谅解哈!)

076115a0a3b75e3bfdef374125756f4b.png

409399ca092d947d8576a9f9eda21770.png

直接下一步即可

423903250946292502d97bb18da7e7bb.png

下一步很重要,你可以直接选择默认的配置,任何ip都可以

2bce6d544dbb8585c54f4ea2b22285a2.png

当然,你是一位非常重视安全的决策者,那么你可以这么做

845e0e2edcbf4e480cac4d8bf7b80248.png

你可以选择指定的IP可以通过此规则,例如本次我们配置的vsftpd的虚拟机所在的IP!当然你也可以配置虚拟机所在的网段,由你自行决策!决策者

然后我们只需要确认下一步即可

f73daaa56518e52674816dc9e587e5f5.png

默认下一步即可

98bc7af6fbf7903fb2140099c4832f32.png

1e989241a505c14e504e68f893a3d6e2.png

3dfe24b9a34ffec8035c8ca80ac6c20f.png

好了,我们的配置结束了,如果你已经者却的配置了,那么来启动你的程序来看下你的成果吧!

PS:

了解原理很重要喔!  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值