一、环境

操作系统:windows server 2012 r2 更新到最新的补丁

环境:工作组环境


二、需求

建立一个内外网能使用的FTP服务器,并且每个用户有一定得配额。


三、服务器配置步骤

  1. 安装ftp服务

    wKiom1joVrrjiuvyAAEprHIhgTM996.png-wh_50


   2.配置FTP服务器

      2.1 在服务器上建立FTP文件夹

wKioL1joV8iRWQ76AAATLVfZ7Wo441.png-wh_50


      2.2 建立FTP网站


            wKioL1joWBHggu01AABGSrDoRnU692.png-wh_50

              wKiom1joWE3yTRnEAACaFz_9jI4773.png-wh_50

                  wKioL1joWLHzKZfsAAC4qxYizD0760.png-wh_50


                   完成配置


            wKiom1joV2CjgbjOAAAXO7do5tA944.png-wh_50




3.为了实现用户登陆时只看到自己的文件夹需要使用到 “用户隔离功能”(如果不使用此功能,那登陆后会列举所有用户的文件夹,一般不会这样使用)


     3.1 用户隔离:


wKioL1joWgCAuuXVAACKp5WHWuM108.png-wh_50


点击打开后如下图:


wKioL1joWkCAA0MsAABekTngTFQ122.png-wh_50



但使用隔离有一定的条件:


在FTP目录下必须有LOCALUSER文件夹

localuser文件夹下面对应使用的用户名称的文件夹


如下图:


wKioL1joVIPTal08AAA_sNBsbSc686.png-wh_50



如果不使用会报以下错误:


无论怎样输入都会提示用户名或密码无效


wKiom1joWsWTEHTGAABRfUoh5Ig675.png-wh_50



取消使用隔离后就会正常:


wKiom1joWvqD_m90AAAl3seAI1Y173.png-wh_50




所以如果使用用户隔离功能(推荐使用)一定要按照上面要求的来操作。



3.2   使用磁盘配额来限定用户使用磁盘的大小


wKioL1joW7ywWrtUAACUYD-T_uI932.png-wh_50




四、发布外网

到现在为止用户可以正常登陆FTP服务器进行操作了。为了在外网也能正常访问需要以下操作:


  1. 路由器端口映射 21 端口


  2. 此时在外网就能使用公网IP地址访问FTP服务器了


  3. 如果感到使用IP地址不方便记忆,可以用一个域名进行解析,只需要在域名解析里面添加一个A记录对应公网IP就可以了



补充一:

在使用过程中会遇到上传某些文件提示如下错误:

wKioL1johTuxRqplAAAzJlS7hto521.png-wh_50

根据提示重点排错编码问题,这时需要更改下FTP服务器的设置:

服务器默认支持UTF8格式的编码,但这会造成一定程度的兼容性问题。

wKioL1johXXBQpcpAADuysUexSs232.png-wh_50

只需要在此处更改为false即可:

wKiom1johbbgnnOmAAD1KN4p0Zs290.png-wh_50




补充二:

故障:

用浏览器和资源管理器登陆时能正常解析名称和登陆,但刷新列表时间较长一会提示链接超时的故障。


解决思路:

使用FTP客户端(filezilla)登陆也显示超时,此时考虑更改链接模式,发现默认为”被动模式“,此处改为”主动模式“后连接正常。那么以上故障问题也应该是模式的问题。


解决方法:


打开IE浏览器----高级----发现  浏览 选项下面的 “使用被动FTP(用于防火墙和DSL调剂解调器的兼容)”

默认是选择的,取消前面的对勾并重启IE浏览器。

如下图:

wKiom1jpn_vA2Am9AACISVRK98I122.png-wh_50



此时发现无论是浏览器还是windows资源管理器都可以正常访问FTP服务器了。


FPT协议一些简单知识点:

  1. 控制端口 21  数据端口 20 

  2. 传输模式分为主动模式和被动模式,如上图所标识跟防火墙有关系。

      主动模式:信任区域到非信任区域。数据连接的三次握手由服务器发起

         被动模式:非信任区域到信任区域。数据连接的三次握手由客户端发起


下面介绍一个这两种方式的工作原理:


   Port模式FTP 客户端首先和FTP服务器的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。 PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。 FTP server必须和客户端建立一个新的连接用来传送数据。(可以看到在这种方式下是客户端和服务器建立控制连接,服务器向客户端建立数据连接,其中,客户端的控制连接和数据连接的端口号是大于1024的两个端口号(临时端口),而FTP服务器的数据端口为20,控制端口为21)

 

  Passive模式在建立控制通道的时候和Standard模式类似,但建立连接后发送的不是Port命令,而是Pasv命令。FTP服务器收到Pasv命令后,随机打开一个临时端口(也叫自由端口,端口号大于1023小于65535)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的连接。(可以看到这种情况下的连接都是由客户端向服务器发起的,与下面所说的“为了解决服务器发起到客户的连接的问题,人们开发了一种不同的FTP连接方式。这就是所谓的被动方式”相对应,而服务器端的数据端口是临时端口,而不是常规的20

 

  很多防火墙在设置的时候都是不允许接受外部发起的连接的,所以许多位于防火墙后或内网的FTP服务器不支持PASV模式,因为客户端无法穿过防火墙打开FTP服务器的高端端口;而许多内网的客户端不能用PORT模式登陆FTP服务器,因为从服务器的TCP 20无法和内部网络的客户端建立一个新的连接,造成无法工作。