FreeBSD6.2架设FTP服务器

2009-05-13 08:45:11来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折


FTP联机的两种模式
FTP采用 Client/Server 架构,FTP 协议比较特别的地方在于它在使用时必须建立二个联机:一个用来传输指令、一个用来传输档案。当我们使用 FTP 软件连到 FTP 服务器时,客户端会先连到服务器的连接端口21,并建立一条「控制联机」。接下来,您会输入账号、密码等指令,这些指令及 FTP 的响应都是使用都是使用「控制联机」。当您要下载档案时,或者是执行 ls 以列出目录中的档案时,档案或目录列表的下载是经另一个联机「数据联机」。「数据联机」和「控制联机」不同的是数据联机所传输的数据比较大,而控制联机只是用来传输指令及简单的响应。
基本上,一个完整的 FTP 联机建立过程为:
  • 客户端打开自已机器大于 1024 的连接端口,并连到服务器的连接端口21,建立「控制联机」。
  • 客户端开始对服务器下指令,告诉服务器客户端用来传输档案的连接端口为何。
  • 服务器从连接端口20 连到客户端所开放的端口号 (大于 1024),以建立「数据联机」。
    上述这种联机建立的方式是由服务器主动建立「数据联机」,我们称之为「主动模式」(Active Mode)。基本上主动模式的运作在没有防火墙或 NAT 的情形下没有什么问题,但若客户端有防火墙,则可能会无法建立联机。基本上,如果客户端使用的是 FreeBSD 的 NAT 不会有这种问题,FreeBSD 会自动做转换,但若是使用其它的防火墙就不一定可以支持 FTP 的 Active Mode。
    要解决 FTP Active Mode 的问题,可以在联机时改用「被动模式」(Passive Mode)。所谓的被动模式就是由服务器打开一个连接端口,被动地等客户端连过来建立「数据联机」。被动模式的联机建立过程为:
  • 客户端打开自已机器大于 1024 的连接端口,并连到服务器的连接端口21,建立「控制联机」。
  • 客户端开始对服务器下指令,告诉服务器进入「被动模式」。
  • 服务器打开一个大于 1024 的连接端口,等待客户端的联机。

  • 客伺端打开自已机器大于 1024 的连接端口,并连到服务器以建立「数据联机」。
    由于控制联机及数据联机都是由客户端主动连过去服务器,如此即可避开防火墙及 NAT 的问题。
    当您登入一台 FTP 服务器后,如果您输入 ls,却等了很久都没有响应,您可以输入 +C 以中断命令。接着输入 passive 以进入被动模式,再打 ls 如果可以看到目录内容,则无法联机的问题一定是主动模式的原故。
    设定 FTP 服务器
    FreeBSD 内建有 FTP 服务器的功能,如果您要使用内建的 ftpd,我们不需要特别进行任何安装的动作,只要做好设定即可。
    1 启动FTP服务器
    有二种方式启动 ftpd,一种是使用 standalone daemon,另一种是使用 inetd。
    使用 inetd 我们可以管理许多系统服务,例如 telnet、ssh、ftp 等,大部份的系统服务都是使用 inetd 来启动,使用它的好处在于可以统一管理各种服务,并经由它来设定服务规则,例如是否要阻挡某些 IP 来源等。不过,使用 inetd 的方式缺点是每次有联机要求时,inetd 的 daemon 必须依联机的种类去执行相对映的指令,所以速度比较慢。另一种启动 FTP 的方式是使用 standalone daemon,也就是直接执行 FTP daemon,当它接收到新的联机时,就 fork() 出来处理,这种方式联机建立的速度较快,比较适合专门的 FTP 服务器。
    使用 inetd,首先编辑 /etc/inetd.conf,将 ftp 设定开头的 # 移除:
    ftp     stream  tcp     nowait  root    /usr/libexec/ftpd       ftpd -l
    ftp     stream  tcp6    nowait  root    /usr/libexec/ftpd       ftpd -l

    标签:

    版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

  • 上一篇:FreeBSD6.2架设DHCP服务器

    下一篇:FreeBSD6.2架设FTP服务器(续)