沿用上文FTP搭建及应用,通过调整FTP服务端配置,实现以下目标:
最多允许100个FTP并发连接
每个IP地址最多允许2个并发连接
匿名访问时,将速度限制为 50KB/s
用户登录访问时,将速度限制为 500KB/s
在客户机上通过ftp或wget验证上述限制
关于vsftpd服务器的并发及带宽限制,主要用到以下配置参数:
max_clients:限制并发的客户端个数
max_per_ip:限制每个客户机IP的并发连接数
anon_max_rate:匿名最大速度(字节/秒)
local_max_rate:验证用户最大速率(字节/秒)
实现此案例需要按照如下步骤进行。
步骤一:限制并发连接数
1)修改vsftpd服务配置,在末尾添加并发限制并重载服务
[root@svr5 ~]# vim /etc/vsftpd/vsftpd.conf
.. ..
max_clients=100
max_per_ip=2
[root@svr5 ~]# service vsftpd reload
关闭 vsftpd: [确定]
为 vsftpd 启动 vsftpd: [确定]
2)从客户机开多个FTP连接进行测试
访问vsftpd服务器时,只要客户端不主动断开连接,且闲置不超过300秒(默认),vsftpd服务器都会保留此连接。因此可以开多个命令终端同时登入此FTP服务器,以测试并发限制效果。
比如,从客户机pc205上匿名登入FTP服务器且不退出,前两次连接都是成功的,当第三次(超过2)连接时,会出现“There are too many connections … …”的报错提示,连接失败:
[root@svr5 ~]# ftp 192.168.4.5
Connected to 192.168.4.5 (192.168.4.5).
421 There are too many connections from your internet address. //连接数超限
ftp> pwd
Not connected. //未连接成功
ftp> quit
步骤二:限制FTP传输速度
1)修改vsftpd服务配置,在末尾添加速度限制,并重载服务
[root@svr5 ~]# vim /etc/vsftpd/vsftpd.conf
.. ..
anon_max_rate=50000
local_max_rate=500000
[root@svr5 ~]# service vsftpd reload
关闭 vsftpd: [确定]
为 vsftpd 启动 vsftpd: [确定]
2)在匿名FTP起始目录、用户lisi的家目录下建立下载测试文件
为了方便看到效果,建立的测试文件可以稍大一点(比如100MB)。直接使用dd命令生成相应的文件即可:
[root@svr5 ~]# dd if=/dev/zero of=/var/ftp/pub/anon.tgz bs=1M count=100
.. ..
[root@svr5 ~]# dd if=/dev/zero of=~lisi/local.tgz bs=1M count=100
.. ..
[root@svr5 ~]# ls -lh /var/ftp/pub/anon.tgz ~lisi/local.tgz //确认结果
-rw-r--r--. 1 root root 100M 1月 15 15:12 /home/lisi/local.tgz
-rw-r--r--. 1 root root 100M 1月 15 15:12 /var/ftp/pub/anon.tgz
3)使用wget命令下载上述文件,观察稳定以后的速度
匿名访问下载测试文件anon.tgz,速度稳定在50KB/s左右:
[root@pc205 ~]# wget ftp://192.168.4.5/pub/anon.tgz
--2015-01-15 15:14:52-- ftp://192.168.4.5/pub/anon.tgz
=> “anon.tgz”
正在连接 192.168.4.5:21... 已连接。
正在以 anonymous 登录 ... 登录成功!
==> SYST ... 完成。 ==> PWD ... 完成。
==> TYPE I ... 完成。 ==> CWD (1) /pub ... 完成。
==> SIZE anon.tgz ... 104857600
==> PASV ... 完成。 ==> RETR anon.tgz ... 完成。
长度:104857600 (100M) (非正式数据)
.. ..
0% [ ] 601,408 49.9K/s eta(英国中部时间) 34m 55s
!!! 必要时,可按Ctrl+c键中止下载,不需要等全部下完
以用户lisi访问下载测试文件local.tgz,速度稳定在500KB/s左右:
[root@pc205 ~]# wget ftp://lisi:[email protected]/local.tgz
--2015-01-15 15:21:29-- ftp://lisi:*password*@192.168.4.5/local.tgz
=> “local.tgz”
正在连接 192.168.4.5:21... 已连接。
正在以 lisi 登录 ... 登录成功!
==> SYST ... 完成。 ==> PWD ... 完成。
==> TYPE I ... 完成。 ==> 不需要 CWD。
==> SIZE local.tgz ... 104857600
==> PASV ... 完成。 ==> RETR local.tgz ... 完成。
长度:104857600 (100M) (非正式数据)
.. ..
0% [ ] 868,352 503K/s eta(英国中部时间) 34m 55s
4)取消vsftpd服务的速度限制,再次测试下载效果
修改vsftpd.conf配置文件,将此前添加的限制下载速度的配置语句注释(或删除),并重载服务:
[root@svr5 ~]# vim /etc/vsftpd/vsftpd.conf
.. ..
#anon_max_rate=50000
#local_max_rate=500000
[root@svr5 ~]# service vsftpd reload
关闭 vsftpd: [确定]
为 vsftpd 启动 vsftpd: [确定]
再次使用wget下载测试文件anon.tgz,会发现速度已不受服务端限制,而是取决于实际的网络带宽:
[root@pc205 ~]# wget ftp://192.168.4.5/pub/anon.tgz
--2015-01-15 15:29:08-- ftp://192.168.4.5/pub/anon.tgz
=> “anon.tgz”
正在连接 192.168.4.5:21... 已连接。
正在以 anonymous 登录 ... 登录成功!
==> SYST ... 完成。 ==> PWD ... 完成。
==> TYPE I ... 完成。 ==> CWD (1) /pub ... 完成。
==> SIZE anon.tgz ... 104857600
==> PASV ... 完成。 ==> RETR anon.tgz ... 完成。
长度:104857600 (100M) (非正式数据)
86% [==========================> ] 90,344,032 28.2M/s eta(英国中部时100%[=============================================================>] 104,857,600 31.8M/s in 3.1s
2015-01-15 15:29:12 (31.8 MB/s) - “anon.tgz” 已保存 [104857600]