ftp的搭建与说明(旧).md
关于ftp(在Linux中为vsftpd)
文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的一套标准协议,它工作在 OSI 模型的第七层, TCP 模型的第四层, 即应用层, 使用 TCP 传输而不是 UDP, 客户在和服务器建立连接前要经过一个“三次握手”的过程, 保证客户与服务器之间的连接是可靠的, 而且是面向连接, 为数据传输提供可靠保证。
客户端安装ftp
演示环境:Centos 6.8
- yum install vsftp -y #从yum源下载vsftp
- vi /etc/vsftpd/vsftpd.conf #修改vsftp配置文件
- 在配置文件中将anonymous_enable=NO改为YES
- service vsftpd start #开启vsftp
- service iptables stop #关闭防火墙
- 完成,你可以访问别的主机的 vsftp 了
服务器安装 ftp
演示环境:Centos7.4
按照上述客户端安装 ftp 的步骤来一遍
要注意,按上述步骤在局域网内是没有问题的,但是在云服务器上就有坑要填。因为云服务器有一个安全组的机制,然后从这个突破口去寻找解决方案。首先将局域网的配置步骤照搬到服务器上,启动发现无论是浏览器还是filezilla客户端都访问不了。在解决这个问题之前要了解ftp的两个工作模式:Port和Pasv。FTP连接一般会有两个连接,也就是会需要用到两个端口。一个服务器与客户端跟进行命令交互的,一个是进行数据传送的。那两种工作模式跟两个连接是怎么搭配起来工作的呢?
假设客户端为C,服务器端为S(以下简称C和S):
- Port模式:当客户端C和服务端S连接起来后,C会发送一条命令告诉S:“我在本地打开了一个端口N等你进行数据连接”,当S收到这个Port命令后就会向C打开的那个端口N进行数据连接。S主动向C的某个端口进行数据连接,此乃主动模式
- Pasv模式:当客户端C和服务端S连接起来后,S会发送一条命令告诉C:“我再本地打开了一个端口M你来连接我吧”,当C收到这个消息后就会向S的M端口发起数据连接。S打开端口被C主动连接,此乃被动模式
那我们应该使用哪种工作模式呢?答案是被动(默认工作模式就是被动)。为什么?很简单,你是在局域网内,你可以连接到云服务器的某个端口(前提是这个端口放开了),但是云服务器连接不到你的,因为云服务器有公网IP。
无论是哪一种工作模式,首先在建立控制连接时候操作是一样的,都是由客户端(首先随机选取一个大于1024以上的端口)和FTP服务器的控制端口21建立连接,并通过该连接传输操作指令。
那么,两种工作模式的区别是什么呢?
在于使用数据传输端口(ftp-data)方式。port mode由FTP服务器指定数据传输所使用的端口,默认值为20。pasv mode由FTP客户端决定数据传输端口,客户端向服务端发出连接请求包含了数据传输端口
服务器安装ftp其实与客户端安装ftp没太大差异,主要区别在服务器要多加两个配置,在 vftpd.conf 中增加以下内容:
pasv_enable=YES |
最后在服务器的防火墙中放行30000-50000范围端口就欧克了
附:vsftp配置文件说明
# 允许匿名访问 |