记一次FTP服务故障分析

一、 概念理解

FTP的主动、被动模式让人很烦,相信你认真看完下面的描述就不会再烦了!

由于历史原因,FTP服务默认需要有2个端口20(数据端口),21(控制端口)

FTP服务的最初的工作过程是:Client请求Server的21端口建立控制连接,然后Server主动用20端口去连Client建立数据连接,结果总是被Client的防火墙拒之门外。(主动模式)

Server毕竟是为大多数人服务的,这样低三下四又干不成事固然不行,于是为了解决服务端被拒之门外的问题,被动模式诞生了:Client请求Server的21端口建立控制连接,然后Server告诉Client我开了哪几个数据端口,你自己来连。(被动模式)

2种模式的区别总结为一句话:前提都是Client去请求Server建立控制连接,不同的是谁来发起数据连接。

二、 故障分析案例

FTP服务器公网IP为:124.x.x.x   内网IP:192.168.1.85  服务端为Vsftpd

故障如图(连接超时):

当我看到这个问题的时候,我并不知所措,也没有仔细去分析连接的过程,我习惯性的用工具连接了一下,因为我相信工具某些方面比人更强大,果然我用CuteFTP连接正常,于是我看工具连接的日志,注意到了一句话:

这句话是什么意思呢?为什么要替换呢?

我们来分析一下过程:

  1. Client向Server(公网IP)发出控制连接申请并通过账号密码验证
  2. Client向Server发出PASV命令进入被动模式
  3. Server向Client返回的是监听IP(192.168.1.85)和数据传输端口(38*256+254=9982)
  4. Client发现返回的IP(192.168.1.85)和之前发出的连接(124.x.x.x)不同,Client自行修改IP为正确的公网IP
  5. Client向124.x.x.x的9982端口发出数据连接申请,建立数据连接

这个分析完之后,我们再回过头来看用命令连接时出现的问题,不难看出,是卡在了Client向Server端发出数据连接申请的时候了,为什么?因为我们命令模式不是智能的,不会自己将Server返回的内网IP转成公网IP,所以连192.168.1.85返回超时。

然后分析的就是为什么会只返回内网IP?

原来,公网IP并不是配在该服务端的,而是通过路由进行绑定的,例如云主机上的“弹性IP”等,所以FTP服务端程序只知道存在一个内网的IP。

解决办法:配置文件写入pasv_address=公网IP

# man  vsftpd.conf

时间: 2024-10-05 23:09:03

记一次FTP服务故障分析的相关文章

centos6.5离线安装ftp服务

1.查看是否安装vsftp rpm -qa | grep vsftpd 如果出现vsftpd-2.0.5-21.el5,说明已经安装 vsftp 2.下载vsftpd: ftp://rpmfind.net/linux/centos/6.7/os/x86_64/Packages/vsftpd-2.2.2-14.el6.x86_64.rpm 来源:http://rpmfind.net/linux/rpm2html/search.php?query=vsftpd(x86-64) 3.安装vsftpd

【CNMP系列】CentOS7.0下安装FTP服务

一个小插曲,安装一个FTP服务,便于和远程服务器的文件沟通.后续我们会讲到如何使用Capistrano配合git完成服务器的代码部署以及发布流程.现在,代码先走FTP吧,挺稳. FTP简介 FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为"文传协议". 在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)."下载"文件就是从远程主机拷贝文

ftp服务搭建配置管理

ftp[file transfer protocol这是档案传输的通讯协议,也是一般最常用来传送档案的方式这是档案传输的通讯协议,也是一般最常用来传送档案的方式]是/tcp/ip的一种具体的应用,工作在OSI上的第七层,TCP/IP模型的第四层,是一种面向连接的协议,工作模式分为主动模式和被动模式 vsftpd是UNIX类操作系统上运行的服务器名称,它的名字代表"very secure FTP daemon",安全性是其设计与开发的一个重要目标,支持很多其他的FTP 服务器不支持的特征

linux中搭建FTP服务

yum install vsftpd //安装ftp软件 vim /etc/vsftpd/vsftpd.conf //FTP的配置文件是anonymous_enable=YES //设置是否允许匿名用户登录FTP服务器,默认为YES(改为no就使用本地用户名密码登录)local_enable=YES //是否允许本地用户登录FTP服务器,默认为NO.write_enable=YES //是否对登录用户开启写权限,属全局性设置,默认NO. pam_service_name=vsftpd //设置P

Linux: FTP服务原理及vsfptd的安装、配置

1.FTP 服务的安装# yum install -y vsftpd [[email protected] pub]# ls -l /etc/vsftpd/ total 20 -rw-------. 1 root root 125 Aug 3 2015 ftpusers -rw-------. 1 root root 361 Aug 3 2015 user_list -rw-------. 1 root root 5030 Aug 3 2015 vsftpd.conf -rwxr--r--. 1

配置ftp服务

1 用getenforce查看,如果是Enforcing,应该修改/etc/sysconfig/selinux文件. SELINUX=disabled 然后重启 --------------------------------------------------- 2 安装ftp.lftp.设置防火墙 yum install vsftpd.x86_64  -y systemctl start vsftpd systemctl enable vsftpd yum install lftp -y f

ftp服务

FTP(file transfer protocol)文件传输协议.FTP协议包括两个部分,一个是ftp客户端,一个是ftp服务器.ftp服务器是来存储文件,用户可以使用ftp客户端通过ftp服务器来访问位于ftp服务器上的资源.由于ftp传输效率高,在网络上传输大文件时,一般也采用该协议. 默认情况下ftp使用tcp端口中的20和21,其中20端口用于传输数据,21用于传输控制信息.如果采用主动模式,那么数据传输端口是20,如果采用被动模式用21. 主动模式(Standard)也就是PORT:

Linux SSH,FTP服务配置

CentOS-6.4-x86_64-minimal 0.网卡配置 参考:Linux系统\Centos没有网卡eth0配置文件怎么办? - http://jingyan.baidu.com/article/84b4f565cb7afa60f6da32d4.html 临时配置:ifconfig 设备名 IP地址 # ifconfig eth0 192.168.1.11 (设置后立即生效,不要重启网卡服务,否则又失效) 永久解决办法: 1)复制/etc/sysconfig/network-script

linux系统如何启用ftp服务

在linux操作系统中,ftp功能是最常用的服务之一,平常写代码都是在windows下完成再通过ftp传到linux下.由此ftp服务必不可少. 但在刚安装的linux操作系统中,ftp服务一般是不启用的,有些甚至都没有安装这个服务.下面记录下ftp服务的安装与启动过程: 安装(red hat下): #yum install vsftpd 启动ftp服务: #service vsftpd start 安装ftp客户端组件(用来验证是否vsftpd) #yum install ftp 验证: #f