vsftpd 配置(中)


4. IP监听与连接控制
     vsftpd工作在独立模式(standalone)下的启动参数有两项:
     listen=yes/no
     listen_ipv6=yes/no
     其中第一条已经前面已经提过了,第二条应用在ipv6网络环境中,这两相参数只能有一条值为yes。
     在实际的网络环境中,服务器通常都有多个IP地址,而每个IP地址连接不同的网段,我们可能并不希望在所有网段的上的计算机都能访问服务器。而默认情况下,vsftpd将在所有的IP地址上监听,因此,我们需要下面两行:
     listen_address=监听 ip
     listen_address6=监听 ip
     这两行分别是针对IPv4和IPv6环境的。
     下面的两项是vsftpd并发连接控制:
     max_clients=数字
     max_per_ip=数字
     参数max_clients设置了服务器可以接受的最大并发连接数量,max_per_ip设置了每个客户端IP可以发起的最大连接数。针对服务器性能适当设置这两个参数,可以在服务器可接受的连接数量和连接速度之间找到平衡点。这两项默认值均为0,表示无限制。
     accept_timeout=数字
     connect_timeout=数字
     data_connection_timeout=数字
     idle_session_timeout=数字
     上面的数字都是以秒为单位的。其中 access_timeout 代表以 pasv数据连接模式的时候,数据连接的超时;connect_timeout 表示以 port模式连接数据连接时的超时时间;关于ftp服务连接模式下面会有详细介绍。data_connection_timeout 表示数据连接后数据连接等待的空闲时间超时,超过时间后,数据连接将断开连接;idle_session_timeout 设置发呆时间,也就是客户端隔多长时间不与服务器有交互 ftp 命令,将自动断开 ftp 服务连接。
5. 关于连接端口设置
     我们知道 ftp 服务有一点是不同于其他的服务的是,ftp 服务使用的是 tcp 双连接通道,也就是ftp-server 和 ftp-data 连接。我们可以这么理解:ftp-server 连接接受客户端连接请求、并发控制、身份和权限认证以及传输客户端下达的命令。ftp-data连接负责传输数据,也就是说当有数据传输的时候才会有这条连接。我们先来看一下 ftp-server 的设置:
     listen_port=端口号
     那么这条设置可以设置 ftp-server 端口号,默认为21,如果我们指定了其它端口号,那么客户端连接服务器上时就得使用指定端口号了。我们将这一行加入主配置文件中:
     listen_port=2121
     # ftp 127.0.0.1
     ftp: connect: Connection refused
     ftp> open 127.0.0.1 2121
     Connected to 127.0.0.1.
     220 (vsFTPd 2.0.5)
     530 Please login with USER and PASS.
     ……
     已经看到效果了,接下来我们讨论ftp-data连接的问题。
     FTP数据传输有两种模式:FTP Port模式和FTP Passive模式,两种工作方式截然不同。
     FTP Port模式
     在FTP Port模式下,客户端与服务器建立ftp-server连接之后,如果某条指令涉及到数据传送,就需要建立ftp-data连接。其实连接步骤如下:
     (1) 客户端启用另一个高于1024的空闲端口xx做连接准备,并且使用port命令利用ftp-server信道向服务器发送一个数据包,数据包里包含客户端的IP地址和xx端口,告诉服务器客户端xx端口已做好连接准备。Port命令还支持第三方(third-party)模式,第三方模式是客户端告诉服务器端打开与另台主机的连接。
     (2) 服务器以ftp-data端口(默认为20)主动向客户端xx端口进行连接。
     (3) 客户端响应服务器连接,并继续完成三次握手后,ftp-data连接建立,开始传送数据。当数据传输完毕后,服务器ftp-data端口就处于等待关闭状态。
     我们看到,Port模式下ftp-data连接请求是由服务器发起的。现在来看一下vsftpd中关于Port模式的语句设置:
     port_enable=yes/no                               //是否启用 port 模式
     connect_from_port_20=yes/no                    //port 模式下是否默认使用固定的 20 端口
     ftp_data_port=port_number                        //指定 port 模式的端口号
     port_promiscuous=yes/no                 //是否使用安全的 port 模式
     将port_enable 设置为 yes,就采用 port 模式。在 port 模式下端口如果采用固定的20 端口,就把connect_from_port_20选项就设为yes,这是很多服务器默认的设置规则。我们也可以指定其他的端口,那么这也就由ftp_data_port 来指定固定端口。port_promiscuous 默认值为no,表示ftp-data连接之前检验一下数据连接的目标ip 的是否是真正客户端的IP,反之则不检查。除非你确保服务器是与真正的客户端进行连接,否则不要将此参数值改为yes。

« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3