内网 FTP 服务器搭建

目前状态

正常配置的情况下
内网 IP 访问无压力。
以域名或者外网 IP 访问的情况:
- 资源管理器:可以登录,无法列目录。
-FTP 客户端,如 FileZilla:无压力,因为走了 FTPS。
总结:不知道咋回事儿,总之是被动模式的问题,目测是端口转发的锅,或者资源管理器的锅。

功能和意义

用处当然是在不同电脑之间传递文件,可能的应用场景如下:

  • 两台电脑面对面交换文件
  • 一对多发布文件
  • 想在陌生电脑使用/保存自己的文件
    跟其他的方式比较的话:
  • 与 U 盘比较的话,好处是不需要四处借 U 盘,不需要把 U 盘带着四处跑,坏处是一般来说百兆网口速度就 11MBps 左右。然后一对多分享的时候 U 盘很不方便。
  • 与 Windows 的共享文件夹比较的话,没有那个方便,但是好处是可以在外网使用。
  • 与其他网盘之类的服务比较的话,好处是没有流量/容量限制,并且几乎不需要登陆,也不需要客户端。如果多用户的话,还能做权限管理和磁盘配额。坏处是需要一台开着的电脑。

软件选择

  • IIS 自带 FTP 服务,应该只要是专业版往上的 Windows 都可以装,但是太臃肿,不搞。
  • Serv-U 大名鼎鼎,估计是功能最强大的,但是要钱,不搞。
  • 看了下只剩下 FileZilla 和国人做的 Xlight 了。都是小巧的软件。
  • 其他类似功能的非 FTP 类软件,还包括 BT Sync 和 Everything。

流程

  • 安装服务器程序。FileZilla 会注册成服务,Xlight 可以在安装完之后注册成服务。注意 FileZilla 在安装时会要你设置端口,那是管理界面的端口(默认空密码),不是 FTP 端口,所以千万别把这个端口映射出去。
  • 在管理界面(FileZilla interface/Xlight 程序)添加服务器,设置用户和组,设置文件夹和权限。
  • 设置 passive mode 的 IP 和端口范围。
  • 添加 Windows 防火墙例外(FileZilla server/Xlight 本体),做路由器端口映射。(20/21 + passive port range)

一些知识

  • FTP 采用两个 TCP 连接,一条命令(port 21),一条数据(port 20 或者其他)。详细可以看这里
  • 数据连接走哪个端口取决于客户端选择被动模式(passive mode )还是主动模式(port),一个解释可以看这里。一般来说,服务器端是两种都支持的。
  • 其他种类的 FTP 包括 SFTP(SSH)/ FTPS(FTP over TLS)/FTPES,还有个基于 UDP 的 TFTP。

一些讨论

  • 传言说 FileZilla 新版本不支持在资源管理器上传中文名的文件,这是不对的(或者大约因为他用的 XP)。反正我这边用 win8/10 的资源管理器上 FTP 是可以上传中文文件名文件的,并且在日志里可以看到资源管理器主动要求opts utf8 on (Xlight 对此表示一脸萌比,不过在国内使用应该没啥问题)。
  • 防火墙和路由器的设置是很蛋疼的问题。FileZilla 的 wiki 对此有一些解释。然而,有些情况下,只能选择换路由器,卸载防火墙。
  • 我想说,换了 TOTOLINK N601 路由器之后,现在我连 21 都连不上了。还是 TP-LINK 好。原因据说是因为需要路由器的 ALG 对 FTP 的支持。事实证明我以后要买一个好点的路由器。一些相关的讨论见这里:『可能原因:内网搭建的为IPSec、FTP、VoIP等特殊应用服务器,路由器不支持相关的ALG(应用层网关,见注1/2。』