FTP服务器搭建

什么是FTP服务器·

FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。 FTP是File Transfer Protocol(文件传输协议)。顾名思义,就是专门用来传输文件的协议。简单地说,支持FTP协议的服务器就是FTP服务器。

软件种类·

  1. Server-U
  2. FileZilla
  3. VsFTP
  4. IIS FTP

工作模式·

FTP是仅基于TCP的服务,不支持UDP。与众不同的是FTP使用2个端口,一个数据端口和一个命令端口(也可叫做控制端口)。通常来说这两个端口是21(命令端口)和20(数据端口)。但FTP 工作方式的不同,数据端口并不总是20。这就是主动与被动FTP的最大不同之处。主要有两种工作模式:

  1. 主动模式(PORT)
    主动模式下,客户端随机打开一个大于1024 的端口向服务器的命令端口 P,即 21 端口,发起连接,同时开放N +1 端口监听,并向服务器发出 “port N+1” 命令,由服务器从它自己的数据端口 (20) 主动连接到客户端指定的数据端口 (N+1)。
    FTP 的客户端只是告诉服务器自己的端口号,让服务器来连接客户端指定的端口。对于客户端的防火墙来说,这是从外部到内部的连接,可能会被阻塞。

  2. 被动模式(PASV)
    为了解决服务器发起到客户的连接问题,有了另一种 FTP 连接方式,即被动方式。命令连接和数据连接都由客户端发起,这样就解决了从服务器到客户端的数据端口的连接被防火墙过滤的问题。
    被动模式下,当开启一个 FTP 连接时,客户端打开两个任意的本地端口 (N > 1024 和 N+1) 。

总结·

在主动模式下:FTP服务器的控制端口是21,数据端口是20,所以在做静态映射的时候只需要开放21端口即可,他会用20端口和客户端主动的发起连接。

在被动模式下:FTP服务器的控制端口是21,数据端口是随机的,且是客户端去连接对应的数据端口,所以在做静态的映射话只开放21端口是不可以的。此时需要做DMZ。

本地FTP服务器搭建(简易版)·

参考资料:https://www.cnblogs.com/popfisher/p/7992036.html

第一步:配置IIS Web服务器·

  • 1.1 控制面板中找到“程序”并打开

  • 1.2 “程序”界面找到“启用或关闭Windows功能”并打开

    上面两步也可以简化为一步:按【Win + R】快捷键打开运行对话框,输入“optionalfeatures”后,按回车键

  • 1.3 从“启用或关闭Windows功能”弹窗中找到Internet Information Services(或者中文版Internet信息服务)并打开

  • 1.4 配置IIS并点击确定

第二步:配置IIS Web站点·

  • 2.1 开始菜单搜索“IIS”并点击进入IIS管理器(Internet Information Services (IIS)管理器)

    简化操作:按【Win + R】快捷键打开运行对话框,输入“inetMgr.exe”后,按回车键

  • 2.2 新建FTP站点

    • 2.2.1 新建FTP服务器 根目录文件夹

    这步就是你随便找个位置新建一个文件夹,这个文件夹可以随意放置,没有特定需要,当然,尽量不要放在系统盘。

    • 2.2.2 查看本机ip地址,后续访问Ftp地址需要用到(打开cmd输入ipconfig)

    本机ip地址是IPv4 地址,当然,可能有些人的电脑连接了很多地址,那就要看你当前用的是无线局域网适配器还是以太网,以及更加细致的分类。

    • 2.2.3 IIS网站管理器界面左边导航栏找到“网站”,右键弹出菜单,在弹出菜单中点击“添加FTP站点”

    • 2.2.4 配置网站(网站名称:FtpSite 物理路径:E:\ftpserver)

    这里,名称随意,物理路径就是刚才你的新建文件夹的路径。

    • 2.2.5 IP 端口号 SSL设置

    本机IP地址(从下拉菜单选择):此处是你的IP地址
    端口号是21,要不要自动启动(开机就启动)看你自己
    SSL设置为无SSL,除非你有SSL,并且知道怎么用了。

    • 2.2.6 身份验证和授权信息设置

    为了方便测试,此处身份验证先设置为匿名(以后可以更改),授权 允许所有用户,权限 读写都打勾。

第三步:测试FTP站点(先在 根目录文件夹,随便放一个文件)·

  • 3.1 浏览器或者文件管理器地址栏输入ftp地址(ftp://192.168.0.105) ,别傻傻地复制粘贴,输入你自己的IP,注意前缀ftp://

  • 3.2 IIS管理器中的FTP身份验证里面配置身份认证
    在FTP的管理栏中,打开FTP身份验证

此处根据你自己的需要进行设置,基本身份验证是根据你电脑中的用户访问的,匿名身份验证是指任何人都可以访问。

  • 3.3 IIS管理器中的FTP授权规则

    在FTP的管理栏中,打开FTP授权规则
    在右边操作栏里,添加允许规则添加拒绝规则,根据自己需要,设置相应规则。

  • 3.4 配置FTP站点用户名和密码

    • 3.4.1 此电脑(桌面计算机图标右键)—>管理->本地用户和组->用户->新建一个用户,并设置密码

    细心的你可能已经发现这里的账户就是我们计算机的账户,所以说访问你的FTP服务器的账号实际上是你的电脑用户账号。

    我们使用自己登录电脑的用户名和密码来登录FTP站点,不用新建这个test用户都可以。

结语·

到此一个简单的FTP服务器搭建成功,同一个局域网内其他人可以访问到你的电脑了,可以相互传输文件。当然这只是局限于局域网,如果想要在任何一台联网的电脑上访问到这个FTP文件服务器,那紧接着下面的教程吧!

FTP服务器发布至外网(Serv-u版)·

参考资料:

https://blog.csdn.net/suliang5158/article/details/79273099
https://jingyan.baidu.com/article/e75aca85634b68142edac6f2.html
https://blog.csdn.net/wz947324/article/details/80063061
https://blog.csdn.net/superdog007/article/details/48787049

工具及环境:·

  1. 系统:Windows Server2012R2

  2. 软件:Serv-u(MFT Server 15.1.2)

    百度云 链接: https://pan.baidu.com/s/1QrqlfzFIcP-y1YD6981CbQ 提取码: kja7

  3. 环境配置:

  • 如果是购买阿里云的服务器的话,必须还得在阿里云后台开放指定端口!

    1. 登录阿里云,知道服务器控制台页面,左侧菜单栏有个 安全组 的子菜单

    2. 安全组中添加两个规则:

      开放20-21端口

      开放13001-13003端口

  • 目前(2019/12/14),我在腾讯云上没遇到这个问题,是可以直接使用的。

Serv-U的安装与配置·

  1. 打开SU-FTP-Server-Windows-v15.1.2执行安装,选择中文(简体)






  2. 启动Serv-U管理控制台,进行域配置




注意这里的IPv4地址填写你自己FTP服务器所在的内网IP

  1. 使用向导创建匿名用户

    这里点击后,会跳转到使用向导创建,然后同意使用向导创建,进入下图的界面。



  2. 新建域用户,添加域管理员


    选择域管理员用户,双击编辑该用户,进入’目录访问’标签,添加如图(域管理员3)两个路径。


    同理,也可以设置匿名用户的目录访问权限

  3. 解决FTP服务器在浏览时出现中文乱码的问题

  1. 下面选择“限制和设置”——“FTP设置”——“用户默认设置”中找到OPTS UTF8命令,右击禁用此命令。
  2. 点击下面的“全局属性”——高级选项”里,把“对所有已收发的路径和文件名使用UFT-8编码”前面的钩去掉。


    这样,在上传或浏览FTP服务器时就不会出现中文乱码了。

发布至外网(云服务器)·

  1. 配置监听器,指向公网IP
  2. 对ftp服务器下的监听器进行修改
  3. 设置PASV端口范围(就是服务器向外发送数据用端口)

到这里,应该是可以让你在其他电脑上访问你搭建的FTP服务器了,访问路径是ftp://此处填写你的公网IP

FTP绑定域名·

添加域名解析
进入你购买域名的服务商控制台,在域名管理中添加一个域名解析。选择A记录,填写二级域名前缀,记录值为你的公网ip。
然后在ftp服务器空间后台绑定这个域名,这样的话等域名解析生效了,那么就可以用域名访问ftp服务器以及里面的内容了。
访问地址为:ftp://此处填写你的域名

有可能出现访问不到的情况,可能是你的云服务器还没备案,先去备案吧。

总结·

  1. PASV端口范围
    被动模式(PASV)下,有数据要传输时,服务器会打开一个数据端口(并处于监听状态),然后告知客户端,客户端连接这个数据端口发送数据。但是数据端口是随机的,那么服务器该如何将这些随机数据端口映射到公网的路由器上呢?总不能让内部网的一台机器完全暴露到公网上吧,虽然确实有这样的方案(称之为DMZ主机),但这绝对是最愚蠢的选择。
    虽然数据端口是随机的,但Serv-U可以指定随机的范围。打开Serv-U管理控制台 > 管理服务器 > 服务器限制和设置 > 服务器设置 。在“设置”选项卡里找到“PASV端口范围”,就是上面的配置端口那张图。只需要把这些指定的端口映射出去就可以了。

  2. PASV IP地址
    这是全文中想要发布至外网的关键所在。打开Serv-U管理控制台 > 你自定义的域名 > 域详细信息 > 监听器 > 编辑 ,在PASV IP地址或域名中设置公网IP即可。