PureFTPd的全局帶寬限制
Pureftpd是一款快速,高質量,功能齊全的ftp服務器,最重要的是可以支持設置客戶端默認編碼,Pureftpd非常強大非常好用。給大家講解下PureFTPd的全局帶寬限制方面的知識,請看下文。
如何限制FTP占用的總的帶寬?
Pure-FTPd可以限制每個會話占用的帶寬.不過,限制總的帶寬是故意不添加的一種功能,因為大部分的操作系統已經有了有效的算法來處理帶寬限制.
下面是Linux上的一個例子.
1)查看/proc/sys/net/ipv4/ip_local_port_range文件.可以看到兩個數字:這就是Linux內核處理外界連接的時候使用的本地端口的范圍.你希望為被動模式FTP保留的FTP端口一定不能在這個范圍內.所以,如果:
"cat /proc/sys/net/ipv4/ip_local_port_range"返回"32768-61000",那么你可保 留端口10000到20000給FTP服務器,而不是30000-40000.(同樣,你也可以選擇改編本 地的端口范圍).
2)更改前面的那些行,保存下面的腳本.
#! /bin/sh
#簡單的帶寬限制--英文原本作者j@4u.net
#將下面的數據更改為你的連接帶寬
#(對于等用戶,寫上你可能得到的***帶寬,而不是本地以太網連接的速度.)
REAL_BW='10Mbit'
#將下面的數據改為你想給FTP分配的帶寬
#我們使用的帶寬單位都是megabits,不是megabytes,所以80Kbit就是10 Kilobytes/s
FTP_BW='80Kbit'
#將下面的數據改為你的物理設備(或者'ppp0')
NIC='eth0'
#將下面的數據改為你給被動FTP分配的端口范圍
- FTP_PORT_LOW="10000"
- FTP_PORT_HIGH="20000"
- tc qdisc add dev "$NIC" root handle 1: cbq \
- bandwidth "$REAL_BW" avpkt 1000
- tc class add dev "$NIC" parent 1: classid 1:1 cbq bandwidth "$REAL_BW" \
- rate "$REAL_BW" maxburst 5 avpkt 1000
- tc class add dev "$NIC" parent 1:1 classid 1:10 cbq \
- bandwidth "$REAL_BW" rate "$FTP_BW" maxburst 5 avpkt 1000 bounded
- tc qdisc add dev "$NIC" parent 1:10 sfq quantum 1514b
- tc filter add dev "$NIC" parent 1: protocol ip handle 1 fw flowid 1:10
- iptables -t mangle -A OUTPUT -p tcp --sport 20:21 -j MARK --set-mark 1
- iptables -t mangle -A OUTPUT -p tcp \
- --sport "$FTP_PORT_LOW":"$FTP_PORT_HIGH" -j MARK --set-mark 1
3)確保你已經安裝了'tc'命令.要是你的發行版不提供'ip'和'tc'命令,腳本就無法 運行,要使用這兩個命令,你得安裝一個叫做'iproute2'的軟件包.
4)加上你給定的被動端口范圍,啟動Pure-FTPd.
/usr/local/sbin/pure-ftpd -p 10000:20000 -HBA
5)運行第二步的時候建立的腳本.要是腳本無法運行,那就檢查QOS支持是否編譯進了你的Linux內核.
6) Enjoy :)
也可以參考:
http://www.docum.org
http://www.shorewall.net/traffic_shaping.htm and
http://talk.trekweb.com/~jasonb/articles/linux_tc_minihowto.shtml
通過上文的介紹和例子,我們可以清楚的知道如何進行PureFTPd的全局帶寬限制。希望本文對大家有所幫助!
【編輯推薦】