搭建Windows FTP服务器及内网穿透相关

这里使用FileZilla Server作为FTP服务器。本文将分两个部分进行说明,第一部分为FTP服务器的搭建和配置,第二部分为FTP服务器内网穿透(端口转发)相关配置。

FTP服务器搭建

首先在FileZilla官网 下载FileZilla Server端,安装完成后直接运行。运行后会提示设置管理端口(默认14147)及admin用户密码。这些都不是重点,键入密码后继续即可。完成后,我们就看到了FileZilla Server的主界面。

这里看见了一些红字提示:

You appear to be behind a NAT router. Please configure the passive mode settings and forward a range of ports in your router.
Warning: FTP over TLS is not enabled, users cannot securely log in.

主要说明了两方面的内容:1、软件识别到当前环境是部署在路由器NAT之后的,所以需要使用被动模式(passive mode)运行并在路由器上设置端口转发;2、FTP服务没有启用TLS模式,所以用户登录信息是不安全的。

我们先无视这两条警告信息,继续完成设置。首先添加一个FTP用户

进入到用户面板,添加用户信息

完成后,进入共享目录设置(Shared folders),添加需要共享的文件夹/磁盘

完成上述配置后,直接在资源管理器的地址栏中输入

然后使用刚才配置的用户名和密码即可登陆到FTP共享的文件目录,例如我的本机IP为192.168.50.100

内网穿透(端口转发)

通过以上配置,我们已经可以在本地使用FTP访问到共享的目录,但是,由于服务器配置在路由器后,所以如果想从外网访问到FTP服务器,必须配置端口转发。刚才在进入到FileZilla Server主界面的时候,有一行警告信息:You appear to be behind a NAT router. Please configure the passive mode settings and forward a range of ports in your router. 这一句话已经把所需要做的给说明了,那下面就具体操作一下。

首先,配置两个端口转发记录。之所以是两条,这是由于FTP协议的原因:

默认情况下FTP协议使用TCP端口中的 20和21这两个端口,其中20用于传输数据,21用于传输控制信息。但是,是否使用20作为传输数据的端口与FTP使用的传输模式有关,如果采用主动模式,那么数据传输端口就是20;如果采用被动模式,则具体最终使用哪个端口要服务器端和客户端协商决定。

这里配置了两条记录,外网3021端口转发到服务器21端口,也就是FTP服务器的控制端口;3020端口转发到服务器的3020端口,这个端口用于之后的被动模式数据传输。

接下来,修改FileZilla的被动模式设置。打开设置面板

启用被动模式(Passive Mode),并将端口设置为上面步骤中用于FTP数据传输设置的端口(3020)

完成后,我们就可以通过FTP客户端访问到FTP服务器了。不过在连接的时候,需要选择模式为被动模式。以FileZilla Client连接为例

新建站点后,填写域名/IP信息,端口选择之前配置端口转发时设置的控制端口(3021),并填好用户信息

在传输设置标签中,选择被动模式

常见问题

问题1:以上配置完成后,可以从本地访问共享目录,但无法从外网访问。

可能原因:防火墙阻止了相关端口的访问。需要关闭防火墙或配置相应端口的白名单规则。

问题2:添加多个文件夹时出现下面两个错误

  • you have shared multiple unrelated directories
  • you need to set a home directory

原因:这两个问题都是由于目录设置不规范导致的,FileZilla的规则为

  • 需要选择一个目录为主目录
  • 其他目录/磁盘需要以别名的方式挂载到主目录下

解决:典型的示例可以像下面一样,主目录为用户共享目录,然后三个磁盘以别名的方式挂在在主目录下

参考:

暂无评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注