专栏首页arebirth重生者的IT之路vsftpd上传文件大小为0(主动模式)

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 关闭被动模式

  4..重启vsftpd服务 service vsftpd restart

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

ftp.enterLocalPassiveMode();

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


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

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

解决方案:

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

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

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

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

直接下一步即可

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

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

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

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

默认下一步即可

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

PS:

了解原理很重要喔!  

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何打开win10里面的ubuntu系统

    windows广告多,易中毒,流氓软件更是无处不在,时不时来个广告弹窗,还卸载不了。这估计是很多极客弃离windows,选择使用mac或者linux桌面的原因。...

    efonfighting
  • android UiAutomator如何根据颜色判断控件的状态

    本人在用UiAutomator做测试的时候,经常会遇到一些控件因为不同的条件显示不同的颜色,在学习了UiAutomator图像处理之后,自己尝试写了一个方法来处...

    八音弦
  • Linux 5.3正式发布:加入AMD GPU和中国兆芯 CPU支持!

    作为数据科学、机器学习的工具,Linux有着非常广泛的应用场景。其完全开放、高度可定制化的属性,使得用户可以用非常低的成本搭建所需的工作环境,同时安装依赖的时候...

    新智元
  • 接口爬虫之网页表单数据提取

    本人最近接到一项任务,要爬一项数据,这个数据在某个网页的表格里面,数据量几百。打开调试模式发现接口返回的就是一个html页面,只要当做string处理。(解析h...

    八音弦
  • 15 张 Vim 速查表奉上,帮你提高N倍效率!

    去年上半年开始全面使用linux进行开发和娱乐了,现在已经回不去windows了。

    孤独键客
  • select基本介绍

    这三个知识点,很重要,原因有三条:(1) 面试中经常被问到。尤其是面试高级工程师,架构师的时候。(2) 一切高并发框架的基础技术支撑。Nginx,Redis,k...

    掌上编程
  • 被虐的有点惨的有赞Java面试解析

    我的有赞面经,如果对面经感兴趣,可以在公众号里面回复"面经"即可以看到更多我以前写的。昨天的一面面试解析:Java 面试解析(有赞一面)

    zhisheng
  • k8s 如何进行pod级的抓包

    因为某些关系原因,有时候需要排查pod和外部服务之间是否有网络异常情况,我们需要进行tcpdump抓包操作。

    二狗不要跑
  • prometheus 采集 snmp 数据

    因为工作需要,需要采集下交换机的网络流量情况。 查了下google,发现几个好文章。

    二狗不要跑
  • 60行C代码实现一个shell

    1969年,Unix初始,没有fork,没有exec,没有pipe,没有 “一切皆文件” ,但是那时它已经是Unix了。它简单,可塑。

    Linux阅码场

扫码关注云+社区

领取腾讯云代金券